e403d6aafc
Upstream has released updates that appear 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: a0149bf16 SPIGOT-6480: Players cannot take books from lecterns that were opened by plugins
97 Zeilen
4.1 KiB
Diff
97 Zeilen
4.1 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 17 Jun 2017 15:18:30 -0400
|
|
Subject: [PATCH] Shoulder Entities Release API
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
|
|
index ba26fc2405e17d582da971d03147fb1865e9b546..63e8062ae3f3407b92b72b5fccaa958c39282fb8 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java
|
|
@@ -1880,20 +1880,44 @@ public abstract class EntityHuman extends EntityLiving {
|
|
|
|
}
|
|
|
|
+ // Paper start
|
|
+ public Entity releaseLeftShoulderEntity() {
|
|
+ Entity entity = this.spawnEntityFromShoulder0(this.getShoulderEntityLeft());
|
|
+ if (entity != null) {
|
|
+ this.setShoulderEntityLeft(new NBTTagCompound());
|
|
+ }
|
|
+ return entity;
|
|
+ }
|
|
+
|
|
+ public Entity releaseRightShoulderEntity() {
|
|
+ Entity entity = this.spawnEntityFromShoulder0(this.getShoulderEntityRight());
|
|
+ if (entity != null) {
|
|
+ this.setShoulderEntityRight(new NBTTagCompound());
|
|
+ }
|
|
+ return entity;
|
|
+ }
|
|
+ // Paper - maintain old signature
|
|
private boolean spawnEntityFromShoulder(NBTTagCompound nbttagcompound) { // CraftBukkit void->boolean
|
|
- if (!this.world.isClientSide && !nbttagcompound.isEmpty()) {
|
|
+ return spawnEntityFromShoulder0(nbttagcompound) != null;
|
|
+ }
|
|
+
|
|
+ // Paper - return entity
|
|
+ private Entity spawnEntityFromShoulder0(@Nullable NBTTagCompound nbttagcompound) {
|
|
+ if (!this.world.isClientSide && nbttagcompound != null && !nbttagcompound.isEmpty()) {
|
|
return EntityTypes.a(nbttagcompound, this.world).map((entity) -> { // CraftBukkit
|
|
if (entity instanceof EntityTameableAnimal) {
|
|
((EntityTameableAnimal) entity).setOwnerUUID(this.uniqueID);
|
|
}
|
|
|
|
entity.setPosition(this.locX(), this.locY() + 0.699999988079071D, this.locZ());
|
|
- return ((WorldServer) this.world).addEntitySerialized(entity, CreatureSpawnEvent.SpawnReason.SHOULDER_ENTITY); // CraftBukkit
|
|
- }).orElse(true); // CraftBukkit
|
|
+ boolean addedToWorld = ((WorldServer) this.world).addEntitySerialized(entity, CreatureSpawnEvent.SpawnReason.SHOULDER_ENTITY); // CraftBukkit
|
|
+ return addedToWorld ? entity : null;
|
|
+ }).orElse(null); // CraftBukkit // Paper - false -> null
|
|
}
|
|
|
|
- return true; // CraftBukkit
|
|
+ return null; // Paper - return null
|
|
}
|
|
+ // Paper end
|
|
|
|
@Override
|
|
public abstract boolean isSpectator();
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
index 24e856473a0050c0b097c179776350379d464d0c..893cea754ea1858d2b08ba377bbbc90e7c0efd6d 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
@@ -495,6 +495,32 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
|
getHandle().getCooldownTracker().setCooldown(CraftMagicNumbers.getItem(material), ticks);
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public org.bukkit.entity.Entity releaseLeftShoulderEntity() {
|
|
+ if (!getHandle().getShoulderEntityLeft().isEmpty()) {
|
|
+ Entity entity = getHandle().releaseLeftShoulderEntity();
|
|
+ if (entity != null) {
|
|
+ return entity.getBukkitEntity();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return null;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public org.bukkit.entity.Entity releaseRightShoulderEntity() {
|
|
+ if (!getHandle().getShoulderEntityRight().isEmpty()) {
|
|
+ Entity entity = getHandle().releaseRightShoulderEntity();
|
|
+ if (entity != null) {
|
|
+ return entity.getBukkitEntity();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return null;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public boolean discoverRecipe(NamespacedKey recipe) {
|
|
return discoverRecipes(Arrays.asList(recipe)) != 0;
|