diff options
Diffstat (limited to 'patch-remap/og/net/minecraft/network/syncher/DataWatcher.patch')
-rw-r--r-- | patch-remap/og/net/minecraft/network/syncher/DataWatcher.patch | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/network/syncher/DataWatcher.patch b/patch-remap/og/net/minecraft/network/syncher/DataWatcher.patch new file mode 100644 index 0000000000..a818feaeda --- /dev/null +++ b/patch-remap/og/net/minecraft/network/syncher/DataWatcher.patch @@ -0,0 +1,65 @@ +--- a/net/minecraft/network/syncher/DataWatcher.java ++++ b/net/minecraft/network/syncher/DataWatcher.java +@@ -24,6 +24,11 @@ + import org.apache.commons.lang3.ObjectUtils; + import org.slf4j.Logger; + ++// CraftBukkit start ++import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata; ++import net.minecraft.server.level.EntityPlayer; ++// CraftBukkit end ++ + public class DataWatcher { + + private static final Logger LOGGER = LogUtils.getLogger(); +@@ -146,6 +151,13 @@ + + } + ++ // CraftBukkit start - add method from above ++ public <T> void markDirty(DataWatcherObject<T> datawatcherobject) { ++ this.getItem(datawatcherobject).setDirty(true); ++ this.isDirty = true; ++ } ++ // CraftBukkit end ++ + public boolean isDirty() { + return this.isDirty; + } +@@ -227,7 +239,7 @@ + if (!Objects.equals(datawatcher_b.serializer(), datawatcher_item.accessor.getSerializer())) { + throw new IllegalStateException(String.format(Locale.ROOT, "Invalid entity data item type for field %d on entity %s: old=%s(%s), new=%s(%s)", datawatcher_item.accessor.getId(), this.entity, datawatcher_item.value, datawatcher_item.value.getClass(), datawatcher_b.value, datawatcher_b.value.getClass())); + } else { +- datawatcher_item.setValue(datawatcher_b.value); ++ datawatcher_item.setValue((T) datawatcher_b.value); // CraftBukkit - decompile error + } + } + +@@ -235,6 +247,18 @@ + return this.itemsById.isEmpty(); + } + ++ // CraftBukkit start ++ public void refresh(EntityPlayer to) { ++ if (!this.isEmpty()) { ++ List<DataWatcher.b<?>> list = this.getNonDefaultValues(); ++ ++ if (list != null) { ++ to.connection.send(new PacketPlayOutEntityMetadata(this.entity.getId(), list)); ++ } ++ } ++ } ++ // CraftBukkit end ++ + public static class Item<T> { + + final DataWatcherObject<T> accessor; +@@ -277,7 +301,7 @@ + } + } + +- public static record b<T> (int id, DataWatcherSerializer<T> serializer, T value) { ++ public static record b<T>(int id, DataWatcherSerializer<T> serializer, T value) { // CraftBukkit - decompile error + + public static <T> DataWatcher.b<T> create(DataWatcherObject<T> datawatcherobject, T t0) { + DataWatcherSerializer<T> datawatcherserializer = datawatcherobject.getSerializer(); |