geforkt von Mirrors/Paper
ccbeb5c4ed
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: 6ffe5a68 Add RecipeChoice.ExactChoice API for NBT matches on ingredients ffccf6b7 SPIGOT-4560: Add HumanEntity.sleep and related APIs CraftBukkit Changes:917411fd
Remove redundant BlockPosition creation from sleep API756c38d1
Add RecipeChoice.ExactChoice API for NBT matches on ingredients8e65d8df
SPIGOT-4560: Add HumanEntity.sleep and related APIsa8382862
SPIGOT-4562: reducedDebugInfo not updated on world change
104 Zeilen
4.1 KiB
Diff
104 Zeilen
4.1 KiB
Diff
From db0638e9bb0ec9b8e16480de4ddc1cc01c3691f6 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 7f05017949..e4d2c4fcf2 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityHuman.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
|
|
@@ -1827,21 +1827,48 @@ public abstract class EntityHuman extends EntityLiving {
|
|
}
|
|
// CraftBukkit end
|
|
}
|
|
+ // Paper start
|
|
+ public Entity releaseLeftShoulderEntity() {
|
|
+ Entity entity = this.spawnEntityFromShoulder0(this.getShoulderEntityLeft());
|
|
+ if (entity != null) {
|
|
+ this.setShoulderEntityLeft(new NBTTagCompound());
|
|
+ }
|
|
+ return entity;
|
|
+ }
|
|
|
|
- private boolean spawnEntityFromShoulder(@Nullable NBTTagCompound nbttagcompound) { // CraftBukkit void->boolean
|
|
- if (!this.world.isClientSide && !nbttagcompound.isEmpty()) {
|
|
+ public Entity releaseRightShoulderEntity() {
|
|
+ Entity entity = this.spawnEntityFromShoulder0(this.getShoulderEntityRight());
|
|
+ if (entity != null) {
|
|
+ this.setShoulderEntityRight(new NBTTagCompound());
|
|
+ }
|
|
+ return entity;
|
|
+ }
|
|
+
|
|
+ // Paper - incase any plugins used NMS to call this... old method signature to avoid other diff
|
|
+ private boolean spawnEntityFromShoulder(@Nullable NBTTagCompound nbttagcompound) {
|
|
+ return spawnEntityFromShoulder0(nbttagcompound) != null;
|
|
+ }
|
|
+ // Paper - Moved to new method that now returns entity, and properly null checks
|
|
+ private Entity spawnEntityFromShoulder0(@Nullable NBTTagCompound nbttagcompound) { // CraftBukkit void->boolean - Paper - return Entity
|
|
+ if (!this.world.isClientSide && nbttagcompound != null && !nbttagcompound.isEmpty()) { // Paper - null check
|
|
Entity entity = EntityTypes.a(nbttagcompound, this.world);
|
|
+ if (entity == null) { // Paper - null check
|
|
+ return null;
|
|
+ }
|
|
|
|
if (entity instanceof EntityTameableAnimal) {
|
|
((EntityTameableAnimal) entity).setOwnerUUID(this.uniqueID);
|
|
}
|
|
|
|
entity.setPosition(this.locX, this.locY + 0.699999988079071D, this.locZ);
|
|
- return this.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SHOULDER_ENTITY); // CraftBukkit
|
|
+ if (this.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SHOULDER_ENTITY)) { // CraftBukkit
|
|
+ return entity;
|
|
+ }
|
|
}
|
|
|
|
- return true; // CraftBukkit
|
|
+ return null;
|
|
}
|
|
+ // Paper end
|
|
|
|
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 e5f782e6f1..af51b3def5 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
|
@@ -556,6 +556,32 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
|
getHandle().getCooldownTracker().a(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.20.1
|
|
|