Files
Purpur/patches/server/0070-Dispenser-curse-of-binding-protection.patch
BillyGalbreath f9ccf6ddbc Updated Upstream (Paper & Airplane)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
47d48790d Change return type of ItemStack#editMeta to allow checking for successful vs non-successful edits
7aabe7d56 [CI-SKIP] fix minecart vs minecraft typos (#5713)
f775e87b4 [CI-SKIP] ci: update setup-java action (#5710)
c58b3b277 ci: replace Java 11 with Java 16 in GH Actions build flow (#5709)
4b72327a6 ItemStack#editMeta
68984b664 Add Unix domain socket support (#5611)
68c67e680 Add Mob#lookAt API (#5633)
4bacecd16 [Auto] Updated Upstream (Bukkit/CraftBukkit)
1f28e6eeb Fix default ChatRenderer when no plugins are installed (#5702)
ecb0d32ca Enhance (Async)ChatEvent with per-viewer rendering API (#5684)

Airplane Changes:
636dbff0f [ci skip] Cleanup mcdev import files
c57932048 [ci skip] Remove icons
7ada9a476 [skip ci] Need to specify 1.16.5 in the README of course
813df1a44 Update README
daf3f0b29 Optimize air case for raytracing
2021-05-23 23:22:06 -05:00

70 lines
3.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
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 ec38a27dfa6eebc818f54cf14bbe4287bee8bb29..db1863aac58409d13ec093506c23ab7cb29a2379 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;
@@ -1077,6 +1078,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);