aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0232-Implement-Expanded-ArmorStand-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0232-Implement-Expanded-ArmorStand-API.patch')
-rw-r--r--patches/server/0232-Implement-Expanded-ArmorStand-API.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/patches/server/0232-Implement-Expanded-ArmorStand-API.patch b/patches/server/0232-Implement-Expanded-ArmorStand-API.patch
new file mode 100644
index 0000000000..ace889510d
--- /dev/null
+++ b/patches/server/0232-Implement-Expanded-ArmorStand-API.patch
@@ -0,0 +1,93 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: willies952002 <[email protected]>
+Date: Thu, 26 Jul 2018 02:25:46 -0400
+Subject: [PATCH] Implement Expanded ArmorStand API
+
+Add the following:
+- Add proper methods for getting and setting items in both hands. Deprecates old methods
+- Enable/Disable slot interactions
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
+index 82b9ee993b0d2e7e0685231f7bad2b85756ec959..f4065938bbfd04519d1363ee8781c316aca468ab 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
+@@ -239,6 +239,79 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
+ getHandle().canMove = move;
+ }
+
++ @Override
++ public ItemStack getItem(org.bukkit.inventory.EquipmentSlot slot) {
++ com.google.common.base.Preconditions.checkNotNull(slot, "slot");
++ return getHandle().getItemBySlot(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)).asBukkitMirror();
++ }
++
++ @Override
++ public void setItem(org.bukkit.inventory.EquipmentSlot slot, ItemStack item) {
++ com.google.common.base.Preconditions.checkNotNull(slot, "slot");
++ switch (slot) {
++ case HAND:
++ getEquipment().setItemInMainHand(item);
++ return;
++ case OFF_HAND:
++ getEquipment().setItemInOffHand(item);
++ return;
++ case FEET:
++ setBoots(item);
++ return;
++ case LEGS:
++ setLeggings(item);
++ return;
++ case CHEST:
++ setChestplate(item);
++ return;
++ case HEAD:
++ setHelmet(item);
++ return;
++ }
++ throw new UnsupportedOperationException(slot.name());
++ }
++
++ @Override
++ public java.util.Set<org.bukkit.inventory.EquipmentSlot> getDisabledSlots() {
++ java.util.Set<org.bukkit.inventory.EquipmentSlot> disabled = new java.util.HashSet<>();
++ for (org.bukkit.inventory.EquipmentSlot slot : org.bukkit.inventory.EquipmentSlot.values()) {
++ if (this.isSlotDisabled(slot)) {
++ disabled.add(slot);
++ }
++ }
++ return disabled;
++ }
++
++ @Override
++ public void setDisabledSlots(org.bukkit.inventory.EquipmentSlot... slots) {
++ int disabled = 0;
++ for (org.bukkit.inventory.EquipmentSlot slot : slots) {
++ if (slot == org.bukkit.inventory.EquipmentSlot.OFF_HAND) continue;
++ net.minecraft.world.entity.EquipmentSlot nmsSlot = org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot);
++ disabled += (1 << nmsSlot.getFilterFlag()) + (1 << (nmsSlot.getFilterFlag() + 8)) + (1 << (nmsSlot.getFilterFlag() + 16));
++ }
++ getHandle().disabledSlots = disabled;
++ }
++
++ @Override
++ public void addDisabledSlots(org.bukkit.inventory.EquipmentSlot... slots) {
++ java.util.Set<org.bukkit.inventory.EquipmentSlot> disabled = getDisabledSlots();
++ java.util.Collections.addAll(disabled, slots);
++ setDisabledSlots(disabled.toArray(new org.bukkit.inventory.EquipmentSlot[0]));
++ }
++
++ @Override
++ public void removeDisabledSlots(org.bukkit.inventory.EquipmentSlot... slots) {
++ java.util.Set<org.bukkit.inventory.EquipmentSlot> disabled = getDisabledSlots();
++ for (final org.bukkit.inventory.EquipmentSlot slot : slots) disabled.remove(slot);
++ setDisabledSlots(disabled.toArray(new org.bukkit.inventory.EquipmentSlot[0]));
++ }
++
++ @Override
++ public boolean isSlotDisabled(org.bukkit.inventory.EquipmentSlot slot) {
++ return getHandle().isDisabled(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
++ }
++
+ @Override
+ public boolean canTick() {
+ return this.getHandle().canTick;