From d5ca782b5b96a029acc1a8199f48528ccd97b9db Mon Sep 17 00:00:00 2001 From: lcy0x1 Date: Wed, 28 Aug 2024 09:42:41 +0800 Subject: [PATCH] holder datagen fix --- gradle.properties | 2 +- .../xkmc/l2core/base/entity/SyncedData.java | 25 ++++++++++++++++--- .../init/reg/registrate/LegacyHolder.java | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index 45a4508..cfc921b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ loader_version_range=[2,) mod_id=l2core mod_name=L2Core mod_license=LGPL-2.1 -mod_version=3.0.7+23 +mod_version=3.0.7+25 mod_group_id=dev.xkmc mod_authors=lcy0x1 mod_description=Core Library mod for all L2 mods diff --git a/src/main/java/dev/xkmc/l2core/base/entity/SyncedData.java b/src/main/java/dev/xkmc/l2core/base/entity/SyncedData.java index 57c8c69..f038465 100644 --- a/src/main/java/dev/xkmc/l2core/base/entity/SyncedData.java +++ b/src/main/java/dev/xkmc/l2core/base/entity/SyncedData.java @@ -23,11 +23,13 @@ public class SyncedData { public static final Serializer INT; public static final Serializer BLOCK_POS; + public static final Serializer STRING; public static final Serializer> UUID; static { INT = new Simple<>(EntityDataSerializers.INT, Codec.INT); BLOCK_POS = new Simple<>(EntityDataSerializers.BLOCK_POS, BlockPos.CODEC); + STRING = new Simple<>(EntityDataSerializers.STRING, Codec.STRING); UUID = new Opt<>(EntityDataSerializers.OPTIONAL_UUID, UUIDUtil.CODEC); } @@ -35,14 +37,25 @@ public class SyncedData { private final List> list = new ArrayList<>(); + @Nullable + private final SyncedData parent; + public SyncedData(Definer cls) { this.cls = cls; + parent = null; + } + + public SyncedData(Definer cls, SyncedData parent) { + this.cls = cls; + this.parent = parent; } public void register(SynchedEntityData.Builder data) { for (Data entry : list) { entry.register(data); } + if (parent != null) + parent.register(data); } public EntityDataAccessor define(Serializer ser, T init, @Nullable String name) { @@ -51,16 +64,20 @@ public class SyncedData { return data.data; } - public void write(RegistryAccess pvd, CompoundTag tag, SynchedEntityData entityData) { + public void write(RegistryAccess pvd, CompoundTag tag, SynchedEntityData data) { for (Data entry : list) { - entry.write(pvd, tag, entityData); + entry.write(pvd, tag, data); } + if (parent != null) + parent.write(pvd, tag, data); } - public void read(RegistryAccess pvd, CompoundTag tag, SynchedEntityData entityData) { + public void read(RegistryAccess pvd, CompoundTag tag, SynchedEntityData data) { for (Data entry : list) { - entry.read(pvd, tag, entityData); + entry.read(pvd, tag, data); } + if (parent != null) + parent.read(pvd, tag, data); } private class Data { diff --git a/src/main/java/dev/xkmc/l2core/init/reg/registrate/LegacyHolder.java b/src/main/java/dev/xkmc/l2core/init/reg/registrate/LegacyHolder.java index 74bd0f6..bf67d39 100644 --- a/src/main/java/dev/xkmc/l2core/init/reg/registrate/LegacyHolder.java +++ b/src/main/java/dev/xkmc/l2core/init/reg/registrate/LegacyHolder.java @@ -81,7 +81,7 @@ public interface LegacyHolder extends Holder, Supplier { @Override default boolean canSerializeIn(HolderOwner pOwner) { - return holder().canSerializeIn(pOwner); + return true; } }