From f6ae5fad892a5af6c72da4abc2b3df28fc00973d Mon Sep 17 00:00:00 2001 From: OnyxDarkKnight Date: Wed, 19 Aug 2015 22:18:21 +0100 Subject: Stuff Higher Chance of stealing from villagers, fixed crash when curses are disabled, stuff? --- .../darkknight/jewelrycraft/curses/CurseList.java | 64 +++-- .../jewelrycraft/curses/CurseMidasTouch.java | 4 +- .../jewelrycraft/events/EntityEventHandler.java | 4 +- .../darkknight/jewelrycraft/item/ItemGoldObj.java | 141 +++++------ .../jewelrycraft/item/ItemThiefGloves.java | 266 ++++++++++----------- .../darkknight/jewelrycraft/util/Variables.java | 4 +- 6 files changed, 238 insertions(+), 245 deletions(-) (limited to 'src') diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseList.java b/src/main/java/darkknight/jewelrycraft/curses/CurseList.java index 6c682a2..ae86a15 100644 --- a/src/main/java/darkknight/jewelrycraft/curses/CurseList.java +++ b/src/main/java/darkknight/jewelrycraft/curses/CurseList.java @@ -5,38 +5,34 @@ import darkknight.jewelrycraft.api.Curse; import darkknight.jewelrycraft.config.ConfigHandler; import darkknight.jewelrycraft.util.Variables; -public class CurseList -{ - public static Curse rotten; - public static Curse flaming; - public static Curse blind; - public static Curse greed; - public static Curse infamy; - public static Curse midasTouch; - public static Curse rabbitsPaw; - public static Curse pentagram; - public static Curse vampireHunger; - public static Curse humbleBundle; - public static Curse deathsTouch; - public static Curse antichrist; - public static Curse moneyEqualsPower; - - public static void preInit(FMLPreInitializationEvent e) - { - if (ConfigHandler.CURSES_ENABLED){ - rotten = new CurseRottenHeart(Variables.MODNAME + ":" + "Rotten Heart", 0, Variables.MODID + "_curses_0"); - flaming = new CurseFlamingSoul(Variables.MODNAME + ":" + "Flaming Soul", 1, Variables.MODID + "_curses_0"); - greed = new CurseGreed(Variables.MODNAME + ":" + "Greed", 2, Variables.MODID + "_curses_0"); - blind = new CurseBlind(Variables.MODNAME + ":" + "Blind", 3, Variables.MODID + "_curses_0"); - infamy = new CurseInfamy(Variables.MODNAME + ":" + "Infamy", 4, Variables.MODID + "_curses_0"); - midasTouch = new CurseMidasTouch(Variables.MODNAME + ":" + "Midas Touch", 5, Variables.MODID + "_curses_0"); - rabbitsPaw = new CurseRabbitsPaw(Variables.MODNAME + ":" + "Rabbit's Paw", 6, Variables.MODID + "_curses_0"); - pentagram = new CursePentagram(Variables.MODNAME + ":" + "Pentagram", 7, Variables.MODID + "_curses_0"); - vampireHunger = new CurseVampireHunger(Variables.MODNAME + ":" + "Vampire Hunger", 8, Variables.MODID + "_curses_0"); - humbleBundle = new CurseHumbleBundle(Variables.MODNAME + ":" + "Humble Bundle", 9, Variables.MODID + "_curses_0"); - deathsTouch = new CurseDeathsTouch(Variables.MODNAME + ":" + "Deaths Touch", 10, Variables.MODID + "_curses_0"); - // antichrist = new CurseMidasTouch(Variables.MODNAME + ":" + "Antichrist", 11, Variables.MODID + "_curses_0"); - // moneyEqualsPower = new CurseMidasTouch(Variables.MODNAME + ":" + "Money Equals Power", 12, Variables.MODID + "_curses_0"); - } - } +public class CurseList { + public static Curse rotten; + public static Curse flaming; + public static Curse blind; + public static Curse greed; + public static Curse infamy; + public static Curse midasTouch; + public static Curse rabbitsPaw; + public static Curse pentagram; + public static Curse vampireHunger; + public static Curse humbleBundle; + public static Curse deathsTouch; + public static Curse antichrist; + public static Curse moneyEqualsPower; + + public static void preInit(FMLPreInitializationEvent e) { + rotten = new CurseRottenHeart(Variables.MODNAME + ":" + "Rotten Heart", 0, Variables.MODID + "_curses_0"); + flaming = new CurseFlamingSoul(Variables.MODNAME + ":" + "Flaming Soul", 1, Variables.MODID + "_curses_0"); + greed = new CurseGreed(Variables.MODNAME + ":" + "Greed", 2, Variables.MODID + "_curses_0"); + blind = new CurseBlind(Variables.MODNAME + ":" + "Blind", 3, Variables.MODID + "_curses_0"); + infamy = new CurseInfamy(Variables.MODNAME + ":" + "Infamy", 4, Variables.MODID + "_curses_0"); + midasTouch = new CurseMidasTouch(Variables.MODNAME + ":" + "Midas Touch", 5, Variables.MODID + "_curses_0"); + rabbitsPaw = new CurseRabbitsPaw(Variables.MODNAME + ":" + "Rabbit's Paw", 6, Variables.MODID + "_curses_0"); + pentagram = new CursePentagram(Variables.MODNAME + ":" + "Pentagram", 7, Variables.MODID + "_curses_0"); + vampireHunger = new CurseVampireHunger(Variables.MODNAME + ":" + "Vampire Hunger", 8, Variables.MODID + "_curses_0"); + humbleBundle = new CurseHumbleBundle(Variables.MODNAME + ":" + "Humble Bundle", 9, Variables.MODID + "_curses_0"); + deathsTouch = new CurseDeathsTouch(Variables.MODNAME + ":" + "Deaths Touch", 10, Variables.MODID + "_curses_0"); + // antichrist = new CurseMidasTouch(Variables.MODNAME + ":" + "Antichrist", 11, Variables.MODID + "_curses_0"); + // moneyEqualsPower = new CurseMidasTouch(Variables.MODNAME + ":" + "Money Equals Power", 12, Variables.MODID + "_curses_0"); + } } diff --git a/src/main/java/darkknight/jewelrycraft/curses/CurseMidasTouch.java b/src/main/java/darkknight/jewelrycraft/curses/CurseMidasTouch.java index 8395647..035d6b6 100644 --- a/src/main/java/darkknight/jewelrycraft/curses/CurseMidasTouch.java +++ b/src/main/java/darkknight/jewelrycraft/curses/CurseMidasTouch.java @@ -90,8 +90,8 @@ public class CurseMidasTouch extends Curse { return item.equals(Items.gold_ingot) || item.equals(Items.gold_nugget) || item.equals(Items.golden_helmet) || item.equals(Items.golden_chestplate) || item.equals(Items.golden_leggings) || item.equals(Items.golden_boots) || item.equals(Items.golden_sword) || item.equals(Items.golden_shovel) || - item.equals(Items.golden_pickaxe) || item.equals(Items.golden_axe) || item.equals(Items.golden_hoe) || item.equals(Items.golden_horse_armor) || - Block.getBlockFromItem(item).equals(Blocks.gold_block) || Block.getBlockFromItem(item).equals(Blocks.light_weighted_pressure_plate); + item.equals(Items.golden_pickaxe) || item.equals(Items.golden_axe) || item.equals(Items.golden_apple) || item.equals(Items.golden_hoe) || + item.equals(Items.golden_horse_armor) || Block.getBlockFromItem(item).equals(Blocks.gold_block) || Block.getBlockFromItem(item).equals(Blocks.light_weighted_pressure_plate); } public String getDescription() diff --git a/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java b/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java index 10f9568..d6f60ae 100644 --- a/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java +++ b/src/main/java/darkknight/jewelrycraft/events/EntityEventHandler.java @@ -116,7 +116,7 @@ public class EntityEventHandler { public void updateCurses(NBTTagCompound playerInfo, EntityPlayer player) { if (playerInfo.hasKey("playerCursePointsChanged") && playerInfo.getBoolean("playerCursePointsChanged")) { int points = playerInfo.getInteger("cursePoints"); - int maxCurses = playerInfo.getInteger("cursePoints") / 1750 + 1; + int maxCurses = playerInfo.getInteger("cursePoints") / Variables.CURSE_POINTS_PER_LEVEL + 1; if (points > 0 && playerInfo.getInteger("activeCurses") < maxCurses) while (playerInfo.getInteger("activeCurses") < maxCurses && Curse.availableCurses.size() > 0 && playerInfo.getInteger("activeCurses") < Curse.getCurseList().size()) addCurse(player, playerInfo); if (!playerInfo.hasKey("curseTime") || !playerInfo.hasKey("reselectCurses") || playerInfo.getBoolean("reselectCurses")) { @@ -253,7 +253,7 @@ public class EntityEventHandler { NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); if (playerInfo.hasKey("cursePoints")) { int points = playerInfo.getInteger("cursePoints"); - int maxCurses = playerInfo.getInteger("cursePoints") / 1750 + 1; + int maxCurses = playerInfo.getInteger("cursePoints") / Variables.CURSE_POINTS_PER_LEVEL + 1; if (points > 0 && playerInfo.getInteger("activeCurses") < maxCurses) while (playerInfo.getInteger("activeCurses") < maxCurses && Curse.availableCurses.size() > 0 && playerInfo.getInteger("activeCurses") < Curse.getCurseList().size()) addCurse(player, playerInfo); if (!playerInfo.hasKey("curseTime") || !playerInfo.hasKey("reselectCurses") || playerInfo.getBoolean("reselectCurses")) { diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemGoldObj.java b/src/main/java/darkknight/jewelrycraft/item/ItemGoldObj.java index 182644b..2adcb1b 100644 --- a/src/main/java/darkknight/jewelrycraft/item/ItemGoldObj.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemGoldObj.java @@ -1,70 +1,71 @@ -/** - * - */ -package darkknight.jewelrycraft.item; - -import java.util.List; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; -import net.minecraft.util.StatCollector; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import darkknight.jewelrycraft.util.JewelryNBT; -import darkknight.jewelrycraft.util.Variables; - -public class ItemGoldObj extends Item -{ - public ItemGoldObj() - {} - - public boolean requiresMultipleRenderPasses() - { - return true; - } - - @SideOnly (Side.CLIENT) - public boolean hasEffect(ItemStack item) - { - return true; - } - - @SideOnly (Side.CLIENT) - public int getColorFromItemStack(ItemStack stack, int pass) - { - return 0xffff00; - } - - @Override - public void registerIcons(IIconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("apple_golden"); - } - - @Override - public IIcon getIcon(ItemStack stack, int pass) - { - ItemStack item = JewelryNBT.item(stack); - if (item != null) return item.getIconIndex(); - return new ItemStack(Items.golden_apple).getIconIndex(); - } - - public String getItemStackDisplayName(ItemStack stack) - { - if (stack != null && stack.hasTagCompound() && stack.getTagCompound().hasKey("target") && Item.getItemById(Integer.valueOf(stack.getTagCompound().getTag("target").toString().split(",")[0].substring(4).replace("s", ""))) != null && JewelryNBT.item(stack) != null) return StatCollector.translateToLocal("info." + Variables.MODID + ".golden") + " " + JewelryNBT.item(stack).getDisplayName(); - return StatCollector.translateToLocal("item." + Variables.MODID + ".goldObject.name"); - } - - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean displayInfo) - { - if (displayInfo) if (stack != null && JewelryNBT.item(stack) != null && JewelryNBT.item(stack).getItem() instanceof ItemFood) list.add(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("item." + Variables.MODID + ".goldObject.info.food")); - else list.add(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("item." + Variables.MODID + ".goldObject.info.standard")); - } -} +/** + * + */ +package darkknight.jewelrycraft.item; + +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemFood; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import darkknight.jewelrycraft.config.ConfigHandler; +import darkknight.jewelrycraft.util.JewelryNBT; +import darkknight.jewelrycraft.util.Variables; + +public class ItemGoldObj extends Item +{ + public ItemGoldObj() + {} + + public boolean requiresMultipleRenderPasses() + { + return true; + } + + @SideOnly (Side.CLIENT) + public boolean hasEffect(ItemStack item) + { + return true; + } + + @SideOnly (Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) + { + return 0xffff00; + } + + @Override + public void registerIcons(IIconRegister iconRegister) + { + itemIcon = iconRegister.registerIcon("apple_golden"); + } + + @Override + public IIcon getIcon(ItemStack stack, int pass) + { + ItemStack item = JewelryNBT.item(stack); + if (item != null) return item.getIconIndex(); + return new ItemStack(Items.golden_apple).getIconIndex(); + } + + public String getItemStackDisplayName(ItemStack stack) + { + if (stack != null && stack.hasTagCompound() && stack.getTagCompound().hasKey("target") && Item.getItemById(Integer.valueOf(stack.getTagCompound().getTag("target").toString().split(",")[0].substring(4).replace("s", ""))) != null && JewelryNBT.item(stack) != null) return StatCollector.translateToLocal("info." + Variables.MODID + ".golden") + " " + JewelryNBT.item(stack).getDisplayName(); + return StatCollector.translateToLocal("item." + Variables.MODID + ".goldObject.name"); + } + + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean displayInfo) + { + if (ConfigHandler.JEWELRY_INFO) if (stack != null && JewelryNBT.item(stack) != null && JewelryNBT.item(stack).getItem() instanceof ItemFood) list.add(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("item." + Variables.MODID + ".goldObject.info.food")); + else list.add(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("item." + Variables.MODID + ".goldObject.info.standard")); + } +} diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemThiefGloves.java b/src/main/java/darkknight/jewelrycraft/item/ItemThiefGloves.java index 5d47498..719bda1 100644 --- a/src/main/java/darkknight/jewelrycraft/item/ItemThiefGloves.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemThiefGloves.java @@ -26,140 +26,134 @@ import darkknight.jewelrycraft.util.JewelrycraftUtil; import darkknight.jewelrycraft.util.PlayerUtils; import darkknight.jewelrycraft.util.Variables; -public class ItemThiefGloves extends Item -{ - public Random rand = new Random(); - - public ItemThiefGloves() - { - super(); - setCreativeTab(CreativeTabs.tabTools); - setMaxStackSize(1); - setMaxDamage(10); - } - - /** - * @param stack - * @param player - * @param entity - * @return - */ - @Override - public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) - { - String villagerString = StatCollector.translateToLocal("info." + Variables.MODID + ".villager"); - if (entity instanceof EntityVillager){ - EntityVillager villager = (EntityVillager)entity; - int wealth = (Integer)ReflectionHelper.getPrivateValue(EntityVillager.class, villager, "wealth", "field_70956_bz"); - MerchantRecipeList buyingList = (MerchantRecipeList)ReflectionHelper.getPrivateValue(EntityVillager.class, villager, "buyingList", "field_70963_i"); - int chance = 5; - boolean areOtherVillagersAround = false, canTheySeeYou = false; - AxisAlignedBB axisalignedbb = villager.boundingBox.expand(4.0D, 4.0D, 4.0D); - List entities = villager.worldObj.getEntitiesWithinAABBExcludingEntity(villager, axisalignedbb); - for(Object s: entities) - if (s instanceof EntityVillager){ - areOtherVillagersAround = true; - chance += rand.nextInt(2); - if (((EntityVillager)s).canEntityBeSeen(player)){ - chance += 2; - canTheySeeYou = true; - } - } - if (villager.canEntityBeSeen(player)) chance += 5; - if (player.isPotionActive(Potion.invisibility)) chance -= 0.8 * chance; - if (player.capabilities.isCreativeMode) chance = 1; - int steal = rand.nextInt(chance); - if (steal == 0){ - villager.dropItem(Items.emerald, wealth); - ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 0, "wealth", "field_70956_bz"); - } - if (buyingList != null){ - Iterator iterator = buyingList.iterator(); - if (steal == 0){ - while (iterator.hasNext()){ - MerchantRecipe recipe = (MerchantRecipe)iterator.next(); - int toolUses = (Integer)ReflectionHelper.getPrivateValue(MerchantRecipe.class, recipe, "toolUses", "field_77400_d"); - int quantity; - if (recipe.getItemToSell().isStackable()) quantity = recipe.getItemToSell().stackSize * (7 - toolUses); - else quantity = recipe.getItemToSell().stackSize; - ItemStack s = new ItemStack(recipe.getItemToSell().getItem(), quantity, recipe.getItemToSell().getItemDamage()); - s.setTagCompound(recipe.getItemToSell().getTagCompound()); - if (player.inventory.addItemStackToInventory(s)) ; - else villager.entityDropItem(s, 0); - if (!player.capabilities.isCreativeMode) JewelrycraftUtil.addCursePoints(player, 5); - player.addChatMessage(new ChatComponentText(villagerString+" #" + villager.getProfession() + ": "+StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".villager.confusion") + " " + s.getDisplayName() + "!")); - stack.damageItem(1, player); - } - buyingList.clear(); - ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 300, "timeUntilReset", "field_70961_j"); - ReflectionHelper.setPrivateValue(EntityVillager.class, villager, true, "needsInitilization", "field_70959_by"); - player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".whisper")+": ")); - player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".stealSuccess1"))); - player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".stealSuccess2"))); - player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".stealSuccess3"))); - }else{ - stack.damageItem(1, player); - if (!player.capabilities.isCreativeMode) JewelrycraftUtil.addCursePoints(player, 25); - if (player.isPotionActive(Potion.invisibility)){ - player.addChatMessage(new ChatComponentText(villagerString+" #" + villager.getProfession() + " " +StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal.fail"))); - } - else{ - if (areOtherVillagersAround){ - if (!canTheySeeYou){ - player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal.caught1")+" "+villagerString+" #" + villager.getProfession() + ".")); - player.addChatMessage(new ChatComponentText(villagerString+" #" + villager.getProfession() + " "+StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal2"))); - return true; - } - else{ - player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal.caught2")+" "+villagerString+" #" + villager.getProfession() + ".")); - player.addChatMessage(new ChatComponentText(villagerString+" #" + villager.getProfession() + " "+StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal2"))); - return true; - } - }else{ - player.addChatMessage(new ChatComponentText(villagerString+" #" + villager.getProfession() + " "+StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal1"))); - player.addChatMessage(new ChatComponentText(villagerString+" #" + villager.getProfession() + " "+StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal2"))); - return true; - } - } - } - } - return true; - }else return super.itemInteractionForEntity(stack, player, entity); - } - - /** - * @param stack - * @param player - * @param list - * @param par4 - */ - @Override - @SuppressWarnings ("unchecked") - public void addInformation(ItemStack stack, EntityPlayer player, @SuppressWarnings ("rawtypes") List list, boolean par4) - { - if (!shouldAddAdditionalInfo()) list.add(EnumChatFormatting.GRAY + additionalInfoInstructions()); - else{ - list.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.1")); - list.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.2")); - list.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.3")); - } - } - - /** - * @return - */ - public static boolean shouldAddAdditionalInfo() - { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) return true; - return false; - } - - /** - * @return - */ - public static String additionalInfoInstructions() - { - String message = StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.extra"); - return message; - } +public class ItemThiefGloves extends Item { + public Random rand = new Random(); + + public ItemThiefGloves() { + super(); + setCreativeTab(CreativeTabs.tabTools); + setMaxStackSize(1); + setMaxDamage(10); + } + + /** + * @param stack + * @param player + * @param entity + * @return + */ + @Override + public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity) { + String villagerString = StatCollector.translateToLocal("info." + Variables.MODID + ".villager"); + if (entity instanceof EntityVillager) { + EntityVillager villager = (EntityVillager) entity; + int wealth = (Integer) ReflectionHelper.getPrivateValue(EntityVillager.class, villager, "wealth", "field_70956_bz"); + MerchantRecipeList buyingList = (MerchantRecipeList) ReflectionHelper.getPrivateValue(EntityVillager.class, villager, "buyingList", "field_70963_i"); + int chance = 1; + boolean areOtherVillagersAround = false, canTheySeeYou = false; + AxisAlignedBB axisalignedbb = villager.boundingBox.expand(2.0D, 0.0D, 2.0D); + List entities = villager.worldObj.getEntitiesWithinAABBExcludingEntity(villager, axisalignedbb); + for (Object s : entities) + if (s instanceof EntityVillager && ((EntityVillager) s).canEntityBeSeen(player)) { + chance += 1; + canTheySeeYou = true; + areOtherVillagersAround = true; + } + if (villager.canEntityBeSeen(player)) chance += 2; + if (player.isPotionActive(Potion.invisibility)) chance -= (0.8 * chance); + if (player.capabilities.isCreativeMode) chance = 1; + int steal = rand.nextInt(chance); + if (steal == 0) { + villager.dropItem(Items.emerald, wealth); + ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 0, "wealth", "field_70956_bz"); + } + if (buyingList != null) { + Iterator iterator = buyingList.iterator(); + if (steal == 0) { + while (iterator.hasNext()) { + MerchantRecipe recipe = (MerchantRecipe) iterator.next(); + int toolUses = (Integer) ReflectionHelper.getPrivateValue(MerchantRecipe.class, recipe, "toolUses", "field_77400_d"); + int quantity; + if (recipe.getItemToSell().isStackable()) quantity = recipe.getItemToSell().stackSize * (7 - toolUses); + else quantity = recipe.getItemToSell().stackSize; + ItemStack s = new ItemStack(recipe.getItemToSell().getItem(), quantity, recipe.getItemToSell().getItemDamage()); + s.setTagCompound(recipe.getItemToSell().getTagCompound()); + if (player.inventory.addItemStackToInventory(s)) ; + else villager.entityDropItem(s, 0); + if (!player.capabilities.isCreativeMode) JewelrycraftUtil.addCursePoints(player, 5); + player.addChatMessage(new ChatComponentText(villagerString + " #" + villager.getProfession() + ": " + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".villager.confusion") + " " + s.getDisplayName() + "!")); + stack.damageItem(1, player); + } + buyingList.clear(); + ReflectionHelper.setPrivateValue(EntityVillager.class, villager, 300, "timeUntilReset", "field_70961_j"); + ReflectionHelper.setPrivateValue(EntityVillager.class, villager, true, "needsInitilization", "field_70959_by"); + player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".whisper") + ": ")); + player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".stealSuccess1"))); + player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".stealSuccess2"))); + player.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".stealSuccess3"))); + } + else { + stack.damageItem(1, player); + if (!player.capabilities.isCreativeMode) JewelrycraftUtil.addCursePoints(player, 25); + if (player.isPotionActive(Potion.invisibility)) { + player.addChatMessage(new ChatComponentText(villagerString + " #" + villager.getProfession() + " " + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal.fail"))); + } + else { + if (areOtherVillagersAround) { + if (!canTheySeeYou) { + player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal.caught1") + " " + villagerString + " #" + villager.getProfession() + ".")); + player.addChatMessage(new ChatComponentText(villagerString + " #" + villager.getProfession() + " " + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal2"))); + return true; + } + else { + player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal.caught2") + " " + villagerString + " #" + villager.getProfession() + ".")); + player.addChatMessage(new ChatComponentText(villagerString + " #" + villager.getProfession() + " " + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal2"))); + return true; + } + } + else { + player.addChatMessage(new ChatComponentText(villagerString + " #" + villager.getProfession() + " " + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal1"))); + player.addChatMessage(new ChatComponentText(villagerString + " #" + villager.getProfession() + " " + StatCollector.translateToLocal("chatmessage." + Variables.MODID + ".steal2"))); + return true; + } + } + } + } + return true; + } + else return super.itemInteractionForEntity(stack, player, entity); + } + + /** + * @param stack + * @param player + * @param list + * @param par4 + */ + @Override + @SuppressWarnings("unchecked") + public void addInformation(ItemStack stack, EntityPlayer player, @SuppressWarnings("rawtypes") List list, boolean par4) { + if (!shouldAddAdditionalInfo()) list.add(EnumChatFormatting.GRAY + additionalInfoInstructions()); + else { + list.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.1")); + list.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.2")); + list.add(EnumChatFormatting.GRAY + StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.3")); + } + } + + /** + * @return + */ + public static boolean shouldAddAdditionalInfo() { + if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) return true; + return false; + } + + /** + * @return + */ + public static String additionalInfoInstructions() { + String message = StatCollector.translateToLocal("item." + Variables.MODID + ".thievingGloves.info.extra"); + return message; + } } diff --git a/src/main/java/darkknight/jewelrycraft/util/Variables.java b/src/main/java/darkknight/jewelrycraft/util/Variables.java index 7dc29c3..15d4d9e 100644 --- a/src/main/java/darkknight/jewelrycraft/util/Variables.java +++ b/src/main/java/darkknight/jewelrycraft/util/Variables.java @@ -4,9 +4,11 @@ import net.minecraft.util.ResourceLocation; public class Variables { + public static final int CURSE_POINTS_PER_LEVEL = 7000; + public static final String MODID = "jewelrycraft2"; public static final String MODNAME = "Jewelrycraft 2"; - public static final String VERSION = "1.1.2"; + public static final String VERSION = "1.1.3"; public static final String PACKET_CHANNEL = "jewelrycraft2"; public static final String CONFIG_GUI = "darkknight.jewelrycraft.config.ConfigGuiFactory"; -- cgit v1.2.3