mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 15:08:27 +02:00
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 Bukkit Changes: da08d022 SPIGOT-4700: Add PlayerFishEvent.State.REEL_IN 0cef14e4 Remove draft API from selectEntities CraftBukkit Changes:a46fdbc6
Remove outdated build delay.3697519b
SPIGOT-4708: Fix ExactChoice recipes neglecting material9ead7009
SPIGOT-4677: Add minecraft.admin.command_feedback permissionc3749a23
Remove the Damage tag from items when it is 0.f74c7b95
SPIGOT-4706: Can't interact with active item494eef45
Mention requirement of JIRA ticket for bug fixes51d62dec
SPIGOT-4702: Exception when middle clicking certain slotsbe557e69
SPIGOT-4700: Add PlayerFishEvent.State.REEL_IN
131 lines
5.3 KiB
Diff
131 lines
5.3 KiB
Diff
From 5c69091e158c9b2c6cdfc776af3e1594baac8978 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 694df9e185..c604182dd9 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> bF;
|
|
private boolean bG;
|
|
public long h;
|
|
- private int bH;
|
|
+ private int bH;public void setDisabledSlots(int i) { bH = i;} public int getDisabledSlots() { return bH ;} // Paper - OBFHELPER
|
|
private boolean bI;
|
|
public Vector3f headPose;
|
|
public Vector3f bodyPose;
|
|
@@ -361,6 +361,7 @@ public class EntityArmorStand extends EntityLiving {
|
|
return enumitemslot;
|
|
}
|
|
|
|
+ public boolean isSlotDisabled(EnumItemSlot slot) { return this.c(slot); } // Paper - OBFHELPER
|
|
public boolean c(EnumItemSlot enumitemslot) {
|
|
return (this.bH & 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
|
|
|