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? --- .../jewelrycraft/item/ItemThiefGloves.java | 266 ++++++++++----------- 1 file changed, 130 insertions(+), 136 deletions(-) (limited to 'src/main/java/darkknight/jewelrycraft/item/ItemThiefGloves.java') 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; + } } -- cgit v1.2.3