From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 25 Aug 2019 00:09:52 -0500 Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java index 4b4578e02fd4be72f20458c54a878892e3029d56..84995be65d033dd712211e1e479675815099c3b1 100644 --- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java +++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java @@ -65,6 +65,7 @@ import net.minecraft.world.item.ItemSword; import net.minecraft.world.item.ItemTool; import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentManager; +import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.GameRules; import net.minecraft.world.level.GeneratorAccess; import net.minecraft.world.level.IBlockAccess; @@ -1074,6 +1075,13 @@ public abstract class EntityInsentient extends EntityLiving { } + // Purpur start + public static EnumItemSlot getSlotForDispenser(ItemStack itemstack) { + return EnchantmentManager.getEnchantmentLevel(Enchantments.BINDING_CURSE, itemstack) > 0 ? EnumItemSlot.MAINHAND : getSlotForItemStack(itemstack); + } + // Purpur end + + public static EnumItemSlot getSlotForItemStack(ItemStack itemstack) { return j(itemstack); } // Purpur - OBFHELPER public static EnumItemSlot j(ItemStack itemstack) { Item item = itemstack.getItem(); diff --git a/src/main/java/net/minecraft/world/item/ItemArmor.java b/src/main/java/net/minecraft/world/item/ItemArmor.java index 7962808aebf67cf9bc1dc4c1e106e943536fdced..d072b604a1cd8835c1fe658831cdaf9f27d02cd5 100644 --- a/src/main/java/net/minecraft/world/item/ItemArmor.java +++ b/src/main/java/net/minecraft/world/item/ItemArmor.java @@ -54,7 +54,7 @@ public class ItemArmor extends Item implements ItemWearable { return false; } else { EntityLiving entityliving = (EntityLiving) list.get(0); - EnumItemSlot enumitemslot = EntityInsentient.j(itemstack); + EnumItemSlot enumitemslot = isourceblock.getWorld().purpurConfig.dispenserApplyCursedArmor ? EntityInsentient.getSlotForItemStack(itemstack) : EntityInsentient.getSlotForDispenser(itemstack); // Purpur ItemStack itemstack1 = itemstack.cloneAndSubtract(1); // CraftBukkit start World world = isourceblock.getWorld(); @@ -113,6 +113,7 @@ public class ItemArmor extends Item implements ItemWearable { this.m = builder.build(); } + public EnumItemSlot getEquipmentSlot() { return b(); } // Purpur - OBFHELPER public EnumItemSlot b() { return this.b; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 0e715362fcfb3d26825b51f4fd96d8cba810bf55..d5095a9b20118bf9c35346fce95a446254872832 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -198,6 +198,11 @@ public class PurpurWorldConfig { }); } + public boolean dispenserApplyCursedArmor = true; + private void dispenserSettings() { + dispenserApplyCursedArmor = getBoolean("blocks.dispenser.apply-cursed-to-armor-slots", dispenserApplyCursedArmor); + } + public boolean farmlandGetsMoistFromBelow = false; private void farmlandSettings() { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);