9
0
mirror of https://github.com/BX-Team/DivineMC.git synced 2025-12-20 15:29:15 +00:00
Files
DivineMC/patches/server/0007-Fix-entity-serialization.patch
NONPLAYT 9f5ecf4072 Updated Upstream (Purpur)
Upstream has released updates that appear to apply and compile correctly

Purpur Changes:
PurpurMC/Purpur@991719a Updated Upstream (Paper)
PurpurMC/Purpur@ffab9f8 stop spawned wither skulls from saving to disk, not withers
PurpurMC/Purpur@d22455b move anonymous overrides into witherskull class
PurpurMC/Purpur@625e4ad remove rainglow patch in favor of paper plugin impl
2023-06-21 21:05:51 +03:00

46 lines
2.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
Date: Fri, 31 Mar 2023 00:39:40 +0300
Subject: [PATCH] Fix entity serialization
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 32ec30d916380d2f9cfde35a2406cc3bb4da292d..a3654816c007c29a5358d75ee4301502c5a2fadd 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2335,15 +2335,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
}
}
- // Paper start - Entity serialization api
- public boolean serializeEntity(CompoundTag compound) {
- List<Entity> pass = new java.util.ArrayList<>(this.getPassengers());
- this.passengers = ImmutableList.of();
- boolean result = save(compound);
- this.passengers = ImmutableList.copyOf(pass);
- return result;
- }
- // Paper end
public boolean save(CompoundTag nbt) {
return this.isPassenger() ? false : this.saveAsPassenger(nbt);
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index 0aee1fadaeb948fd90d8e61ac57dbe7f810529ff..85d8963a95d855f6575eb9a1f33343dd0caca0f1 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -496,8 +496,13 @@ public final class CraftMagicNumbers implements UnsafeValues {
Preconditions.checkNotNull(entity, "null cannot be serialized");
Preconditions.checkArgument(entity instanceof org.bukkit.craftbukkit.entity.CraftEntity, "only CraftEntities can be serialized");
+ net.minecraft.world.entity.Entity nmsEntity = ((org.bukkit.craftbukkit.entity.CraftEntity) entity).getHandle();
CompoundTag compound = new CompoundTag();
- ((org.bukkit.craftbukkit.entity.CraftEntity) entity).getHandle().serializeEntity(compound);
+ compound.putString("id", net.minecraft.world.entity.EntityType.getKey(nmsEntity.getType()).toString());
+ List<net.minecraft.world.entity.Entity> pass = new java.util.ArrayList<>(nmsEntity.getPassengers());
+ nmsEntity.passengers = com.google.common.collect.ImmutableList.of();
+ nmsEntity.saveWithoutId(compound);
+ nmsEntity.passengers = com.google.common.collect.ImmutableList.copyOf(pass);
return serializeNbtToBytes(compound);
}