geforkt von Mirrors/Paper
89a1469d3f
Their chunk is set to null before removal, so we kept them around.
131 Zeilen
5.3 KiB
Diff
131 Zeilen
5.3 KiB
Diff
From ac627e942e7d52d39d98ee92cbee0c16c853d60e 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 916eaa7b90..00ff1e80de 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
@@ -36,7 +36,7 @@ public class EntityArmorStand extends EntityLiving {
|
|
private final NonNullList<ItemStack> armorItems;
|
|
private boolean bD;
|
|
public long bt;
|
|
- private int bE;
|
|
+ private int bE; public void setDisabledSlots(int i) { bE = i;} public int getDisabledSlots() { return bE ;} // Paper - OBFHELPER
|
|
public Vector3f headPose;
|
|
public Vector3f bodyPose;
|
|
public Vector3f leftArmPose;
|
|
@@ -381,6 +381,7 @@ public class EntityArmorStand extends EntityLiving {
|
|
return enumitemslot;
|
|
}
|
|
|
|
+ public boolean isSlotDisabled(EnumItemSlot slot) { return this.d(slot); } // Paper - OBFHELPER
|
|
public boolean d(EnumItemSlot enumitemslot) {
|
|
return (this.bE & 1 << enumitemslot.c()) != 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 124c3185bc..9f5c3b92e3 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
|
@@ -30,11 +30,13 @@ 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);
|
|
}
|
|
@@ -222,5 +224,78 @@ 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);
|
|
+ break;
|
|
+ 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().setDisabledSlots(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
|
|
}
|
|
--
|
|
2.21.0
|
|
|