diff --git a/paper-server/patches/sources/net/minecraft/world/entity/Entity.java.patch b/paper-server/patches/sources/net/minecraft/world/entity/Entity.java.patch index f03594cc77..0ae04510b6 100644 --- a/paper-server/patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -942,7 +942,7 @@ EntityType type = this.getType(); ResourceLocation key = EntityType.getKey(type); - return type.canSerialize() && key != null ? key.toString() : null; -+ return (type.canSerialize() || includeNonSaveable) && key != null ? key.toString() : null; // Paper - Raw entity serialization API ++ return (type.canSerialize() || includeNonSaveable) ? key.toString() : null; // Paper - Raw entity serialization API } protected abstract void readAdditionalSaveData(ValueInput input); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index 71ae150811..a41f481a1e 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1056,7 +1056,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.getHandle().registryAccess() ); - tagValueOutput.putString(Entity.TAG_ID, this.getHandle().getEncodeId()); // todo NPE? + tagValueOutput.putString(Entity.TAG_ID, this.getHandle().getEncodeId(true)); this.getHandle().saveWithoutId(tagValueOutput); return tagValueOutput.buildResult(); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java index 9b862c0c1f..8fba3cbac5 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java @@ -789,6 +789,9 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void setShoulderEntityLeft(org.bukkit.entity.Entity entity) { + if (entity != null) { + Preconditions.checkArgument(((CraftEntity) entity).getHandle().getType().canSerialize(), "Cannot set entity of type %s as a shoulder entity", entity.getType().getKey()); + } this.getHandle().setShoulderEntityLeft(entity == null ? new CompoundTag() : ((CraftEntity) entity).save()); if (entity != null) { entity.remove(); @@ -812,6 +815,9 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void setShoulderEntityRight(org.bukkit.entity.Entity entity) { + if (entity != null) { + Preconditions.checkArgument(((CraftEntity) entity).getHandle().getType().canSerialize(), "Cannot set entity of type %s as a shoulder entity", entity.getType().getKey()); + } this.getHandle().setShoulderEntityRight(entity == null ? new CompoundTag() : ((CraftEntity) entity).save()); if (entity != null) { entity.remove(); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java index 8ef7b968b4..cabdcbef0e 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java @@ -50,7 +50,6 @@ public class CraftPhantom extends CraftMob implements Phantom, CraftEnemy { @Override public void setAnchorLocation(Location location) { - com.google.common.base.Preconditions.checkArgument(location != null, "location cannot be null"); this.getHandle().anchorPoint = location == null ? null : CraftLocation.toBlockPosition(location); } }