2021-03-15 23:00:00 +01:00
--- a/net/minecraft/network/syncher/DataWatcher.java
+++ b/net/minecraft/network/syncher/DataWatcher.java
2022-12-07 17:00:00 +01:00
@@ -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();
2023-06-07 17:30:00 +02:00
@@ -146,6 +151,13 @@
2018-07-15 02:00:00 +02:00
}
+ // CraftBukkit start - add method from above
+ public <T> void markDirty(DataWatcherObject<T> datawatcherobject) {
2021-11-21 23:00:00 +01:00
+ this.getItem(datawatcherobject).setDirty(true);
2021-06-11 07:00:00 +02:00
+ this.isDirty = true;
2018-07-15 02:00:00 +02:00
+ }
+ // CraftBukkit end
+
2021-11-21 23:00:00 +01:00
public boolean isDirty() {
2021-06-11 07:00:00 +02:00
return this.isDirty;
2018-07-15 02:00:00 +02:00
}
2023-06-07 17:30:00 +02:00
@@ -227,7 +239,7 @@
2022-12-07 17:00:00 +01:00
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()));
2021-06-11 07:00:00 +02:00
} else {
2022-12-07 17:00:00 +01:00
- datawatcher_item.setValue(datawatcher_b.value);
+ datawatcher_item.setValue((T) datawatcher_b.value); // CraftBukkit - decompile error
}
}
2023-06-07 17:30:00 +02:00
@@ -235,6 +247,18 @@
2022-12-07 17:00:00 +01:00
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;
2023-06-07 17:30:00 +02:00
@@ -277,7 +301,7 @@
2021-06-11 07:00:00 +02:00
}
}
2022-12-07 17:00:00 +01:00
- 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();