From 80a891b0bfa2214afd74f275811ae827bd69939b Mon Sep 17 00:00:00 2001 From: qiuye2024github Date: Thu, 30 Apr 2026 00:13:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/modularmc/synceddata/SyncedData.java | 4 +- .../blockentity/BlockEntityCreationInfo.java | 8 ++++ .../api/sync_system/ISyncManaged.java | 16 +++++++ .../sync_system/ManagedSyncBlockEntity.java | 44 +++++++++++++++++++ .../api/sync_system/SyncDataHolder.java | 25 +++++++++++ .../assets/synceddata/lang/en_us.json | 5 --- 6 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java create mode 100644 src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java create mode 100644 src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java create mode 100644 src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java delete mode 100644 src/main/resources/assets/synceddata/lang/en_us.json diff --git a/src/main/java/com/modularmc/synceddata/SyncedData.java b/src/main/java/com/modularmc/synceddata/SyncedData.java index e4a4d09..8bd36d0 100644 --- a/src/main/java/com/modularmc/synceddata/SyncedData.java +++ b/src/main/java/com/modularmc/synceddata/SyncedData.java @@ -22,9 +22,9 @@ public class SyncedData { public static final String MOD_ID = "synced"; - public static final String MOD_NAME = "SyncedData"; + public static final String MOD_NAME = "SyncedData Lib"; public static final Logger LOGGER = LogManager.getLogger(MOD_NAME); - public static final Codec GTCEU_ID = Codec.STRING.comapFlatMap( + public static final Codec SyncedData_ID = Codec.STRING.comapFlatMap( str -> Identifier.read(appendIdString(str)), s -> s.getNamespace().equals(MOD_ID) ? s.getPath() : s.toString()); public static final Path SYNCED_FOLDER = getGameDir().resolve("synced"); diff --git a/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java b/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java new file mode 100644 index 0000000..5bf1597 --- /dev/null +++ b/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java @@ -0,0 +1,8 @@ +package com.modularmc.synceddata.api.blockentity; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +public record BlockEntityCreationInfo(BlockEntityType type, BlockPos pos, BlockState state) { +} diff --git a/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java b/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java new file mode 100644 index 0000000..147a128 --- /dev/null +++ b/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java @@ -0,0 +1,16 @@ +package com.modularmc.synceddata.api.sync_system; + +public interface ISyncManaged { + + SyncDataHolder getSyncDataHolder(); + + /** + * Function called when a synced field requests a rerender + */ + void scheduleRenderUpdate(); + + /** + * Function called to notify the server that this object has been updated and must be synced to clients + */ + void markAsChanged(); +} diff --git a/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java b/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java new file mode 100644 index 0000000..fcf1184 --- /dev/null +++ b/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java @@ -0,0 +1,44 @@ +package com.modularmc.synceddata.api.sync_system; + +import com.modularmc.synceddata.api.blockentity.BlockEntityCreationInfo; +import lombok.Getter; +import lombok.Setter; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +import java.util.Objects; + +public abstract class ManagedSyncBlockEntity extends BlockEntity implements ISyncManaged { + + @Getter + protected final SyncDataHolder syncDataHolder = new SyncDataHolder(this); + @Getter + @Setter + private boolean isDirty; + + public ManagedSyncBlockEntity(BlockEntityCreationInfo info) { + super(info.type(), info.pos(), info.state()); + } + + public ManagedSyncBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { + super(type, pos, blockState); + } + + @Override + public final void markAsChanged() { + isDirty = true; + } + + + public final void updateTick() { + setChanged(); + if (isDirty) { + Objects.requireNonNull(getLevel()).sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), + Block.UPDATE_CLIENTS); + isDirty = false; + } + } +} diff --git a/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java b/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java new file mode 100644 index 0000000..db20523 --- /dev/null +++ b/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java @@ -0,0 +1,25 @@ +package com.modularmc.synceddata.api.sync_system; + +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import it.unimi.dsi.fastutil.objects.ObjectSet; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import org.jetbrains.annotations.Nullable; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.WrongMethodTypeException; +import java.util.Objects; +import java.util.Set; + +public class SyncDataHolder { + + private final ISyncManaged holder; + + private final ObjectSet dirtySyncFields = new ObjectOpenHashSet<>(); + private boolean resyncAll = false; + + public SyncDataHolder(ISyncManaged o) { + holder = o; + } + +} diff --git a/src/main/resources/assets/synceddata/lang/en_us.json b/src/main/resources/assets/synceddata/lang/en_us.json deleted file mode 100644 index cc4c85b..0000000 --- a/src/main/resources/assets/synceddata/lang/en_us.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "itemGroup.synceddata": "Example Mod Tab", - "block.synceddata.example_block": "Example Block", - "item.synceddata.example_item": "Example Item" -} From 6989df5c2aa3c33ead395d51afce0f50aa25a5bf Mon Sep 17 00:00:00 2001 From: qiuye2024github Date: Thu, 30 Apr 2026 00:18:08 +0800 Subject: [PATCH 2/2] spotless --- .../blockentity/BlockEntityCreationInfo.java | 3 +- .../api/sync_system/ISyncManaged.java | 18 +++--- .../sync_system/ManagedSyncBlockEntity.java | 61 ++++++++++--------- .../api/sync_system/SyncDataHolder.java | 21 ++----- 4 files changed, 47 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java b/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java index 5bf1597..71f5e3c 100644 --- a/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java +++ b/src/main/java/com/modularmc/synceddata/api/blockentity/BlockEntityCreationInfo.java @@ -4,5 +4,4 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public record BlockEntityCreationInfo(BlockEntityType type, BlockPos pos, BlockState state) { -} +public record BlockEntityCreationInfo(BlockEntityType type, BlockPos pos, BlockState state) {} diff --git a/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java b/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java index 147a128..8937124 100644 --- a/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java +++ b/src/main/java/com/modularmc/synceddata/api/sync_system/ISyncManaged.java @@ -2,15 +2,15 @@ public interface ISyncManaged { - SyncDataHolder getSyncDataHolder(); + SyncDataHolder getSyncDataHolder(); - /** - * Function called when a synced field requests a rerender - */ - void scheduleRenderUpdate(); + /** + * Function called when a synced field requests a rerender + */ + void scheduleRenderUpdate(); - /** - * Function called to notify the server that this object has been updated and must be synced to clients - */ - void markAsChanged(); + /** + * Function called to notify the server that this object has been updated and must be synced to clients + */ + void markAsChanged(); } diff --git a/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java b/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java index fcf1184..255865e 100644 --- a/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java +++ b/src/main/java/com/modularmc/synceddata/api/sync_system/ManagedSyncBlockEntity.java @@ -1,44 +1,45 @@ package com.modularmc.synceddata.api.sync_system; import com.modularmc.synceddata.api.blockentity.BlockEntityCreationInfo; -import lombok.Getter; -import lombok.Setter; + import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import lombok.Getter; +import lombok.Setter; + import java.util.Objects; public abstract class ManagedSyncBlockEntity extends BlockEntity implements ISyncManaged { - @Getter - protected final SyncDataHolder syncDataHolder = new SyncDataHolder(this); - @Getter - @Setter - private boolean isDirty; - - public ManagedSyncBlockEntity(BlockEntityCreationInfo info) { - super(info.type(), info.pos(), info.state()); - } - - public ManagedSyncBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { - super(type, pos, blockState); - } - - @Override - public final void markAsChanged() { - isDirty = true; - } - - - public final void updateTick() { - setChanged(); - if (isDirty) { - Objects.requireNonNull(getLevel()).sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), - Block.UPDATE_CLIENTS); - isDirty = false; - } - } + @Getter + protected final SyncDataHolder syncDataHolder = new SyncDataHolder(this); + @Getter + @Setter + private boolean isDirty; + + public ManagedSyncBlockEntity(BlockEntityCreationInfo info) { + super(info.type(), info.pos(), info.state()); + } + + public ManagedSyncBlockEntity(BlockEntityType type, BlockPos pos, BlockState blockState) { + super(type, pos, blockState); + } + + @Override + public final void markAsChanged() { + isDirty = true; + } + + public final void updateTick() { + setChanged(); + if (isDirty) { + Objects.requireNonNull(getLevel()).sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), + Block.UPDATE_CLIENTS); + isDirty = false; + } + } } diff --git a/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java b/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java index db20523..643df44 100644 --- a/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java +++ b/src/main/java/com/modularmc/synceddata/api/sync_system/SyncDataHolder.java @@ -2,24 +2,15 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import it.unimi.dsi.fastutil.objects.ObjectSet; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; -import org.jetbrains.annotations.Nullable; - -import java.lang.invoke.MethodHandle; -import java.lang.invoke.WrongMethodTypeException; -import java.util.Objects; -import java.util.Set; public class SyncDataHolder { - private final ISyncManaged holder; - - private final ObjectSet dirtySyncFields = new ObjectOpenHashSet<>(); - private boolean resyncAll = false; + private final ISyncManaged holder; - public SyncDataHolder(ISyncManaged o) { - holder = o; - } + private final ObjectSet dirtySyncFields = new ObjectOpenHashSet<>(); + private boolean resyncAll = false; + public SyncDataHolder(ISyncManaged o) { + holder = o; + } }