From 6706fae4a88b04d0a290e246b33eba313841e338 Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Thu, 5 Sep 2019 20:57:51 -0400 Subject: Yet more affix work --- .../darkknight/jewelrycraft/affixes/AffixMods.java | 140 ++++++++++++++++++--- .../jewelrycraft/affixes/DamageAffix.java | 2 +- .../jewelrycraft/curses/CurseInsomnia.java | 36 ++++++ .../darkknight/jewelrycraft/curses/CurseList.java | 11 +- .../jewelrycraft/item/ItemBaseJewelry.java | 8 +- .../darkknight/jewelrycraft/item/ItemBracelet.java | 5 + .../darkknight/jewelrycraft/item/ItemEarrings.java | 4 + .../darkknight/jewelrycraft/item/ItemNecklace.java | 5 + .../darkknight/jewelrycraft/item/ItemRing.java | 5 + .../tileentity/TileEntityShadowEye.java | 100 +++++++++------ .../jewelrycraft/util/JewelrycraftUtil.java | 4 +- .../resources/assets/jewelrycraft2/lang/en_US.lang | 4 +- .../textures/gui/jewelrycraft2_curses_0.png | Bin 18547 -> 20492 bytes 13 files changed, 260 insertions(+), 64 deletions(-) create mode 100644 src/main/java/darkknight/jewelrycraft/curses/CurseInsomnia.java (limited to 'src') diff --git a/src/main/java/darkknight/jewelrycraft/affixes/AffixMods.java b/src/main/java/darkknight/jewelrycraft/affixes/AffixMods.java index d124251..2ac5319 100644 --- a/src/main/java/darkknight/jewelrycraft/affixes/AffixMods.java +++ b/src/main/java/darkknight/jewelrycraft/affixes/AffixMods.java @@ -11,35 +11,91 @@ public class AffixMods { private static Map prefixes; private static Map suffixes; - private static List prefixGen; - private static List suffixGen; + private static List generalPrefixGen; + private static List generalSuffixGen; + + private static List ringPrefixGen; + private static List ringSuffixGen; + + private static List braceletPrefixGen; + private static List braceletSuffixGen; + + private static List necklacePrefixGen; + private static List necklaceSuffixGen; + + private static List earringsPrefixGen; + private static List earringsSuffixGen; public static void initializeAffixes(FMLPreInitializationEvent fpie) { prefixes = new HashMap(); suffixes = new HashMap(); - - prefixGen = new LinkedList(); - suffixGen = new LinkedList(); - + + generalPrefixGen = new LinkedList(); + generalSuffixGen = new LinkedList(); + + ringPrefixGen = new LinkedList(); + ringSuffixGen = new LinkedList(); + + braceletPrefixGen = new LinkedList(); + braceletSuffixGen = new LinkedList(); + + necklacePrefixGen = new LinkedList(); + necklaceSuffixGen = new LinkedList(); + + earringsPrefixGen = new LinkedList(); + earringsSuffixGen = new LinkedList(); + ModifierEffect health1 = new HealthAffix(1); ModifierEffect health2 = new HealthAffix(2); ModifierEffect health3 = new HealthAffix(3); - + ModifierEffect health4 = new HealthAffix(4); + ModifierEffect health5 = new HealthAffix(5); + ModifierEffect health6 = new HealthAffix(6); + prefixes.put("health1", health1); prefixes.put("health2", health2); prefixes.put("health3", health3); - - prefixGen.add(new WeightedRandomAffix("health1", 10)); - prefixGen.add(new WeightedRandomAffix("health2", 7)); - prefixGen.add(new WeightedRandomAffix("health3", 5)); - + prefixes.put("health4", health4); + prefixes.put("health5", health5); + prefixes.put("health6", health6); + suffixes.put("health1", health1); suffixes.put("health2", health2); suffixes.put("health3", health3); - - suffixGen.add(new WeightedRandomAffix("health1", 10)); - suffixGen.add(new WeightedRandomAffix("health2", 7)); - suffixGen.add(new WeightedRandomAffix("health3", 5)); + suffixes.put("health4", health4); + suffixes.put("health5", health5); + suffixes.put("health6", health6); + + WeightedRandomAffix wraHealth1 = new WeightedRandomAffix("health1", 10); + WeightedRandomAffix wraHealth2 = new WeightedRandomAffix("health2", 8); + WeightedRandomAffix wraHealth3 = new WeightedRandomAffix("health3", 6); + WeightedRandomAffix wraHealth4 = new WeightedRandomAffix("health4", 4); + WeightedRandomAffix wraHealth5 = new WeightedRandomAffix("health5", 2); + WeightedRandomAffix wraHealth6 = new WeightedRandomAffix("health6", 1); + + generalPrefixGen.add(wraHealth1); + generalPrefixGen.add(wraHealth2); + generalPrefixGen.add(wraHealth3); + ringPrefixGen.add(wraHealth1); + ringPrefixGen.add(wraHealth2); + braceletPrefixGen.add(wraHealth2); + braceletPrefixGen.add(wraHealth3); + necklacePrefixGen.add(wraHealth4); + necklacePrefixGen.add(wraHealth5); + earringsPrefixGen.add(wraHealth5); + earringsPrefixGen.add(wraHealth6); + + generalSuffixGen.add(wraHealth1); + generalSuffixGen.add(wraHealth2); + generalSuffixGen.add(wraHealth3); + ringSuffixGen.add(wraHealth1); + ringSuffixGen.add(wraHealth2); + braceletSuffixGen.add(wraHealth2); + braceletSuffixGen.add(wraHealth3); + necklaceSuffixGen.add(wraHealth4); + necklaceSuffixGen.add(wraHealth5); + earringsSuffixGen.add(wraHealth5); + earringsSuffixGen.add(wraHealth6); } public static ModifierEffect getPrefix(String prefix) { @@ -50,14 +106,58 @@ public class AffixMods { return suffixes.get(suffix); } - public static String pickPrefix(Random random) { - WeightedRandomAffix wra = ((WeightedRandomAffix) WeightedRandom.getRandomItem(random, prefixGen)); + public static String pickPrefix(Random random, int jewelType) { + List pickList = generalPrefixGen; + + if (random.nextInt(3) != 0) { + switch (jewelType) { + case 0: + pickList = ringPrefixGen; + break; + case 1: + pickList = braceletPrefixGen; + break; + case 2: + pickList = necklacePrefixGen; + break; + case 3: + pickList = earringsPrefixGen; + break; + case -1: + default: + pickList = generalPrefixGen; + } + } + + WeightedRandomAffix wra = ((WeightedRandomAffix) WeightedRandom.getRandomItem(random, pickList)); return wra.getAffix(random); } - public static String pickSuffix(Random random) { - WeightedRandomAffix wra = ((WeightedRandomAffix) WeightedRandom.getRandomItem(random, suffixGen)); + public static String pickSuffix(Random random, int jewelType) { + List pickList = generalSuffixGen; + + if (random.nextInt(3) != 0) { + switch (jewelType) { + case 0: + pickList = ringSuffixGen; + break; + case 1: + pickList = braceletSuffixGen; + break; + case 2: + pickList = necklaceSuffixGen; + break; + case 3: + pickList = earringsSuffixGen; + break; + case -1: + default: + pickList = generalSuffixGen; + } + } + + WeightedRandomAffix wra = ((WeightedRandomAffix) WeightedRandom.getRandomItem(random, pickList)); return wra.getAffix(random); } diff --git a/src/main/java/darkknight/jewelrycraft/affixes/DamageAffix.java b/src/main/java/darkknight/jewelrycraft/affixes/DamageAffix.java index 2cbfce3..ec7b044 100644 --- a/src/main/java/darkknight/jewelrycraft/affixes/DamageAffix.java +++ b/src/main/java/darkknight/jewelrycraft/affixes/DamageAffix.java @@ -20,7 +20,7 @@ public class DamageAffix extends ModifierEffect { this.mult = mult; } - + @Override public void onEntityHurt(ItemStack item, EntityPlayer player, LivingHurtEvent event, ItemBaseJewelry jewelry) { event.ammount += befFlat; diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseInsomnia.java b/src/main/java/darkknight/jewelrycraft/curses/CurseInsomnia.java new file mode 100644 index 0000000..47c46ba --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/curses/CurseInsomnia.java @@ -0,0 +1,36 @@ +package darkknight.jewelrycraft.curses; + +import darkknight.jewelrycraft.api.Curse; +import darkknight.jewelrycraft.util.Variables; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.PlayerSleepInBedEvent; + +public class CurseInsomnia extends Curse { + public CurseInsomnia(String name, int txtID, String texturepack) { + super(name, txtID, texturepack); + } + + @Override + public String getDescription() { + return StatCollector.translateToLocal("curse." + Variables.MODID + ".insomnia.description"); + } + + @Override + public String getDisplayName() { + return StatCollector.translateToLocal("curse." + Variables.MODID + ".insomnia"); + } + + @Override + public void playerSleepAction(World worldObj, EntityPlayer player, PlayerSleepInBedEvent event) { + event.result = EntityPlayer.EnumStatus.OTHER_PROBLEM; + + if (!worldObj.isRemote) { + player.addChatMessage( + new ChatComponentText(EnumChatFormatting.DARK_RED + "You toss and turn, but can't get to sleep")); + } + } +} diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseList.java b/src/main/java/darkknight/jewelrycraft/curses/CurseList.java index f123863..e76407d 100755 --- a/src/main/java/darkknight/jewelrycraft/curses/CurseList.java +++ b/src/main/java/darkknight/jewelrycraft/curses/CurseList.java @@ -11,7 +11,6 @@ public class CurseList { public static Curse flaming; public static Curse blind; public static Curse greed; - public static Curse incredibleDevotion; public static Curse infamy; public static Curse midasTouch; @@ -22,13 +21,14 @@ public class CurseList { public static Curse deathsTouch; public static Curse scionOfHell; public static Curse moneyEqualsPower; + public static Curse doubleDown; - + public static Curse incredibleDevotion; + public static Curse insomnia; + // Not yet implemented public static Curse sacredOath; - // None at the moment :) - public static void preInit(FMLPreInitializationEvent e) { rotten = new CurseRottenHeart(Variables.MODNAME + ":" + "Rotten Heart", 0, CURSE_TEXPACK); @@ -62,5 +62,8 @@ public class CurseList { CURSE_TEXPACK); //sacredOath = new CurseSacredOath(Variables.MODNAME + ":" + "Sacred Oath", 21, CURSE_TEXPACK); + + insomnia = new CurseInsomnia(Variables.MODNAME + ":" + "Insomnia", 22, + CURSE_TEXPACK); } } diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java b/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java index c658f8d..6ee4add 100755 --- a/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java @@ -34,7 +34,13 @@ public abstract class ItemBaseJewelry extends Item { setCreativeTab(JewelrycraftMod.jewelrycraft); } - + + /** + * @return Returns the id of the type, 0 is for ring, 1 is for bracelet, 2 is + * for necklace and 3 is for earrings + */ + public abstract int type(); + @Override public boolean requiresMultipleRenderPasses() { return true; diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemBracelet.java b/src/main/java/darkknight/jewelrycraft/item/ItemBracelet.java index fe01d89..a10548c 100755 --- a/src/main/java/darkknight/jewelrycraft/item/ItemBracelet.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemBracelet.java @@ -15,6 +15,11 @@ public class ItemBracelet extends ItemBaseJewelry { public ItemBracelet() { } + @Override + public int type() { + return 1; + } + /** * @param iconRegister */ diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemEarrings.java b/src/main/java/darkknight/jewelrycraft/item/ItemEarrings.java index e8f4052..fffc21a 100755 --- a/src/main/java/darkknight/jewelrycraft/item/ItemEarrings.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemEarrings.java @@ -15,6 +15,10 @@ public class ItemEarrings extends ItemBaseJewelry { public ItemEarrings() { } + @Override + public int type() { + return 3; + } /** * @param iconRegister */ diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemNecklace.java b/src/main/java/darkknight/jewelrycraft/item/ItemNecklace.java index 8f67ab6..6287289 100755 --- a/src/main/java/darkknight/jewelrycraft/item/ItemNecklace.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemNecklace.java @@ -15,6 +15,11 @@ public class ItemNecklace extends ItemBaseJewelry { public ItemNecklace() { } + @Override + public int type() { + return 2; + } + /** * @param iconRegister */ diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemRing.java b/src/main/java/darkknight/jewelrycraft/item/ItemRing.java index 87ca8d8..6c209ce 100755 --- a/src/main/java/darkknight/jewelrycraft/item/ItemRing.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemRing.java @@ -15,6 +15,11 @@ public class ItemRing extends ItemBaseJewelry { public ItemRing() { } + @Override + public int type() { + return 0; + } + /** * @param iconRegister */ diff --git a/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java index 4cfbbc8..9b4930f 100755 --- a/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java +++ b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java @@ -5,9 +5,11 @@ import java.util.ArrayList; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import darkknight.jewelrycraft.affixes.AffixMods; +import darkknight.jewelrycraft.api.IJewelryItem; import darkknight.jewelrycraft.block.BlockHandPedestal; import darkknight.jewelrycraft.block.BlockList; import darkknight.jewelrycraft.config.ConfigHandler; +import darkknight.jewelrycraft.item.ItemBaseJewelry; import darkknight.jewelrycraft.model.ModelShadowEye; import darkknight.jewelrycraft.util.JewelryNBT; import darkknight.jewelrycraft.util.JewelrycraftUtil; @@ -15,6 +17,7 @@ import darkknight.jewelrycraft.util.Variables; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; @@ -64,11 +67,18 @@ public class TileEntityShadowEye extends TileEntity { super.updateEntity(); StringBuilder er = new StringBuilder(); boolean valid = isValidStructure(worldObj, xCoord, yCoord, zCoord, blockMetadata, er); - boolean centerHasItem = false, hasMods = false, hasAffixes = false; + boolean centerHasItem = false, centerIsJewelry = false, hasMods = false, hasAffixes = false; if (valid) { TileEntity te = worldObj.getTileEntity(xCoord, yCoord - 3, zCoord); if (te instanceof TileEntityHandPedestal) { - centerHasItem = ((TileEntityHandPedestal) te).heldItemStack != null; + ItemStack heldItemStack = ((TileEntityHandPedestal) te).heldItemStack; + + centerHasItem = heldItemStack != null; + if (centerHasItem) { + Item heldItem = heldItemStack.getItem(); + + centerIsJewelry = heldItem instanceof IJewelryItem || heldItem instanceof ItemBaseJewelry; + } } hasMods = getNumberOfItems(worldObj, xCoord, yCoord, zCoord) > 0; @@ -76,10 +86,10 @@ public class TileEntityShadowEye extends TileEntity { hasAffixes = worldObj.getBlock(xCoord, yCoord + 2, zCoord) == Blocks.enchanting_table; } - boolean canStartRitual = valid && centerHasItem && (hasMods || hasAffixes); + boolean canStartRitual = valid && (centerHasItem && centerIsJewelry) && (hasMods || hasAffixes); if (!canStartRitual && valid) { - if (!centerHasItem) { - er.append("Center pedestal requires an item"); + if (!centerHasItem || !centerIsJewelry) { + er.append("Center pedestal requires a piece of jewelry"); } else if (!hasMods && !hasAffixes) { er.append("Need at least one modifier, or an enchanting table for affixes."); } else { @@ -110,36 +120,11 @@ public class TileEntityShadowEye extends TileEntity { if (opening == 2 && timer <= 0 && t == 10 && shouldAddData) { addData(worldObj, xCoord, yCoord, zCoord); TileEntityHandPedestal pedstl = (TileEntityHandPedestal) worldObj.getTileEntity(xCoord, yCoord - 3, zCoord); - if (pedstl != null && pedstl.getHeldItemStack() != null) { - JewelryNBT.addModifiers(pedstl.getHeldItemStack(), pedestalItems); - - if (!worldObj.isRemote) - if (worldObj.getBlock(xCoord, yCoord + 2, zCoord) == Blocks.enchanting_table) { - if (worldObj.rand.nextBoolean()) { - JewelryNBT.addPrefix(pedstl.getHeldItemStack(), AffixMods.pickPrefix(worldObj.rand)); - target.addChatMessage(new ChatComponentText( - EnumChatFormatting.DARK_PURPLE + "The item is infused with a prefix")); - } else if (target.experienceLevel > 2) { - target.addExperienceLevel(-2); - JewelryNBT.addPrefix(pedstl.getHeldItemStack(), AffixMods.pickPrefix(worldObj.rand)); - if (!worldObj.isRemote) - target.addChatMessage(new ChatComponentText( - EnumChatFormatting.DARK_PURPLE + "You infuse the item with a prefix")); - } - - if (worldObj.rand.nextBoolean()) { - JewelryNBT.addSuffix(pedstl.getHeldItemStack(), AffixMods.pickSuffix(worldObj.rand)); - if (!worldObj.isRemote) - target.addChatMessage(new ChatComponentText( - EnumChatFormatting.DARK_PURPLE + "The item is infused with a suffix")); - } else if (target.experienceLevel > 2) { - target.addExperienceLevel(-2); - JewelryNBT.addSuffix(pedstl.getHeldItemStack(), AffixMods.pickSuffix(worldObj.rand)); - if (!worldObj.isRemote) - target.addChatMessage(new ChatComponentText( - EnumChatFormatting.DARK_PURPLE + "You infuse the item with a suffix")); - } - } + ItemStack centerItem = pedstl == null ? null : pedstl.getHeldItemStack(); + if (pedstl != null && centerItem != null) { + if (!worldObj.isRemote) { + modifyJewelry(centerItem); + } } revertPedestals(worldObj, xCoord, yCoord, zCoord); @@ -186,6 +171,51 @@ public class TileEntityShadowEye extends TileEntity { } } + private void modifyJewelry(ItemStack centerItem) { + Item itm = centerItem.getItem(); + + int jewelType = -1; + + if (itm instanceof IJewelryItem) { + IJewelryItem jewelryItem = (IJewelryItem) itm; + + jewelType = jewelryItem.type(); + } else if (itm instanceof ItemBaseJewelry) { + ItemBaseJewelry jewelry = (ItemBaseJewelry) itm; + + jewelType = jewelry.type(); + } + + JewelryNBT.addModifiers(centerItem, pedestalItems); + + if (worldObj.getBlock(xCoord, yCoord + 2, zCoord) == Blocks.enchanting_table) { + if (worldObj.rand.nextBoolean()) { + JewelryNBT.addPrefix(centerItem, AffixMods.pickPrefix(worldObj.rand, jewelType)); + target.addChatMessage( + new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "The item is infused with a prefix")); + } else if (target.experienceLevel > 2) { + target.addExperienceLevel(-2); + JewelryNBT.addPrefix(centerItem, AffixMods.pickPrefix(worldObj.rand, jewelType)); + if (!worldObj.isRemote) + target.addChatMessage(new ChatComponentText( + EnumChatFormatting.DARK_PURPLE + "You infuse the item with a prefix")); + } + + if (worldObj.rand.nextBoolean()) { + JewelryNBT.addSuffix(centerItem, AffixMods.pickSuffix(worldObj.rand, jewelType)); + if (!worldObj.isRemote) + target.addChatMessage(new ChatComponentText( + EnumChatFormatting.DARK_PURPLE + "The item is infused with a suffix")); + } else if (target.experienceLevel > 2) { + target.addExperienceLevel(-2); + JewelryNBT.addSuffix(centerItem, AffixMods.pickSuffix(worldObj.rand, jewelType)); + if (!worldObj.isRemote) + target.addChatMessage(new ChatComponentText( + EnumChatFormatting.DARK_PURPLE + "You infuse the item with a suffix")); + } + } + } + public boolean isValidStructure(World world, int x, int y, int z, int metadata, StringBuilder err) { if (world.getBlockMetadata(x, y, z) == 0 || world.getBlockMetadata(x, y, z) == 2) { // Layers from top to bottom diff --git a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java index 7a85cff..ef5d19f 100755 --- a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java +++ b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java @@ -381,8 +381,8 @@ public class JewelrycraftUtil { JewelryNBT.addGem(jewelry, gem); } - String prefix = AffixMods.pickPrefix(random); - String suffix = AffixMods.pickSuffix(random); + String prefix = AffixMods.pickPrefix(random, effType); + String suffix = AffixMods.pickSuffix(random, effType); if (random.nextBoolean()) JewelryNBT.addPrefix(jewelry, prefix); diff --git a/src/main/resources/assets/jewelrycraft2/lang/en_US.lang b/src/main/resources/assets/jewelrycraft2/lang/en_US.lang index 91d393c..b87ee5e 100755 --- a/src/main/resources/assets/jewelrycraft2/lang/en_US.lang +++ b/src/main/resources/assets/jewelrycraft2/lang/en_US.lang @@ -133,6 +133,7 @@ curse.jewelrycraft2.scionofhell.description=The infernal lord sends his regards curse.jewelrycraft2.doubledown.description=All or nothing curse.jewelrycraft2.incredibledevotion.description=How far are you willing to go? curse.jewelrycraft2.sacredoath.description=Swear upon it (NYI) +curse.jewelrycraft2.sacredoath.description=Wide awake and watching curse.jewelrycraft2.blind=Blind curse.jewelrycraft2.flamingsoul=Flaming Soul @@ -149,7 +150,8 @@ curse.jewelrycraft2.moneyEqualsPower=Money = Power curse.jewelrycraft2.scionofhell=Scion of Hell curse.jewelrycraft2.doubledown=Double Down curse.jewelrycraft2.incredibledevotion=Incredible Devotion -Curse.jewelrycraft2.sacredoath=Sacred Oath +curse.jewelrycraft2.sacredoath=Sacred Oath +curse.jewelrycraft2.insomnia=Insomnia curse.jewelrycraft2.activated=You got cursed, press C to open the tab to see the active curses. diff --git a/src/main/resources/assets/jewelrycraft2/textures/gui/jewelrycraft2_curses_0.png b/src/main/resources/assets/jewelrycraft2/textures/gui/jewelrycraft2_curses_0.png index 6e5b606..1709a98 100755 Binary files a/src/main/resources/assets/jewelrycraft2/textures/gui/jewelrycraft2_curses_0.png and b/src/main/resources/assets/jewelrycraft2/textures/gui/jewelrycraft2_curses_0.png differ -- cgit v1.2.3