geforkt von Mirrors/Paper
654b792caf
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes:a339310c
#755: Fix NPE when calling getInventory() for virtual EnderChests2577f9bf
Increase outdated build delay1dabfdc8
#754: Fix pre-1.16 serialized SkullMeta being broken on 1.16+, losing textures
105 Zeilen
4.7 KiB
Diff
105 Zeilen
4.7 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..c19f0b0dd3fe988a30049297355445fd73cae630 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftArmorStand.java
|
|
@@ -238,5 +238,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.getSlotFlag()) + (1 << (nmsSlot.getSlotFlag() + 8)) + (1 << (nmsSlot.getSlotFlag() + 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
|
|
}
|