mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 04:55:47 +01:00
57dd397155
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: b999860d SPIGOT-2304: Add LootGenerateEvent CraftBukkit Changes:77fd87e4
SPIGOT-2304: Implement LootGenerateEventa1a705ee
SPIGOT-5566: Doused campfires & fires should call EntityChangeBlockEvent41712edd
SPIGOT-5707: PersistentDataHolder not Persistent on API dropped Item
100 lines
4.0 KiB
Diff
100 lines
4.0 KiB
Diff
From 4f02fabda4ab3e8b954c01c024df170d79d8db60 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/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
|
|
index ad79e4521c..8e5edd2c9b 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
|
@@ -1901,20 +1901,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 2c20a7b924..191bb7345e 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
@@ -518,6 +518,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;
|
|
--
|
|
2.26.2
|
|
|