geforkt von Mirrors/Paper
64ed429884
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.
119 Zeilen
5.0 KiB
Diff
119 Zeilen
5.0 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 f2938b115aa34158e76da9f974f5746ed43630e1..c83f7a0baee28c93b035a4bee68eb26374d50a79 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
|
|
@@ -387,6 +387,7 @@ 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 bf2749fd724ac7b67fc0d5887aa307745c5f1835..c0182f4c1478e6db9901bf0357ad08c3fd3699a9 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
|
@@ -32,11 +32,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);
|
|
}
|
|
@@ -238,5 +240,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);
|
|
+ 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
|
|
}
|