PaperMC/Spigot-Server-Patches/Implement-Expanded-ArmorStand-API.patch
Aikar 9f446a771f (FIRST 1.16.3): Update Paper to 1.16.3
This is a pretty tiny update with very little changed. Recommended to update
from 1.16.2 ASAP as 1.16.2 is now no longer supported.

Plugins should mostly remain working as the NMS revision did not change.
2020-09-10 19:47:58 -04:00

118 lines
5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: willies952002 <admin@domnian.com>
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/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
@@ -0,0 +0,0 @@ public class EntityArmorStand extends EntityLiving {
return enumitemslot;
}
+ public final boolean isSlotDisabled(EnumItemSlot slot) { return this.d(slot); } // Paper - OBFHELPER
private boolean d(EnumItemSlot enumitemslot) {
return (this.disabledSlots & 1 << enumitemslot.getSlotFlag()) != 0 || enumitemslot.a() == EnumItemSlot.Function.HAND && !this.hasArms();
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
@@ -0,0 +0,0 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
}
@Override
+ @Deprecated // Paper
public ItemStack getItemInHand() {
return getEquipment().getItemInHand();
}
@Override
+ @Deprecated // Paper
public void setItemInHand(ItemStack item) {
getEquipment().setItemInHand(item);
}
@@ -0,0 +0,0 @@ public class CraftArmorStand extends CraftLivingEntity implements ArmorStand {
public void setCanMove(boolean move) {
getHandle().canMove = move;
}
+
+ @Override
+ public ItemStack getItem(org.bukkit.inventory.EquipmentSlot slot) {
+ com.google.common.base.Preconditions.checkNotNull(slot, "slot");
+ return getHandle().getEquipment(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.server.EnumItemSlot nmsSlot = org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot);
+ disabled += (1 << nmsSlot.c()) + (1 << (nmsSlot.c() + 8)) + (1 << (nmsSlot.c() + 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().isSlotDisabled(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot));
+ }
// Paper end
}