diff --git a/CHANGELOG.md b/CHANGELOG.md index 384870b98..ff6b3bda7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Ported to Minecraft 1.20.1. +### Fixed + +- Fixed GUI side buttons not working sometimes when using Refined Storage with addons. + ## [v1.11.6] - 2023-03-30 ### Fixed diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java index 850fd763d..ce943c4a0 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/CableBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; @@ -9,6 +10,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -16,7 +18,7 @@ import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; public class CableBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { + public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "cable_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java index 3e4026b8d..ab230dc1f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ConstructorBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.ConstructorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; @@ -11,6 +12,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -18,14 +20,14 @@ import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; public class ConstructorBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter DROP = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isDrop(), (t, v) -> { + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "constructor_compare")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "constructor_type")); + public static final BlockEntitySynchronizationParameter DROP = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "constructor_drop"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isDrop(), (t, v) -> { t.getNode().setDrop(v); t.getNode().markDirty(); }); - public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), + public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "constructor_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ControllerBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ControllerBlockEntity.java index f9c971286..84952d970 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ControllerBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ControllerBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.INetworkManager; @@ -18,6 +19,7 @@ import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; @@ -36,11 +38,11 @@ import java.util.List; public class ControllerBlockEntity extends BaseBlockEntity implements INetworkNodeProxy, IRedstoneConfigurable { private static final Logger LOGGER = LogManager.getLogger(); - public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(); - public static final BlockEntitySynchronizationParameter ENERGY_USAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyUsage()); - public static final BlockEntitySynchronizationParameter ENERGY_STORED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getEnergyStored()); - public static final BlockEntitySynchronizationParameter ENERGY_CAPACITY = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getMaxEnergyStored()); - public static final BlockEntitySynchronizationParameter, ControllerBlockEntity> NODES = new BlockEntitySynchronizationParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), ControllerBlockEntity::collectClientNodes); + public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "controller_redstone_mode")); + public static final BlockEntitySynchronizationParameter ENERGY_USAGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_energy_usage"), EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyUsage()); + public static final BlockEntitySynchronizationParameter ENERGY_STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_energy_stored"), EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getEnergyStored()); + public static final BlockEntitySynchronizationParameter ENERGY_CAPACITY = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_energy_capacity"), EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getMaxEnergyStored()); + public static final BlockEntitySynchronizationParameter, ControllerBlockEntity> NODES = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_nodes"), RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), ControllerBlockEntity::collectClientNodes); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java index 325110b34..8bc3fca71 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterNetworkNode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; @@ -8,6 +9,7 @@ import com.refinedmods.refinedstorage.screen.CrafterBlockEntitySynchronizationCl import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; @@ -19,8 +21,8 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; public class CrafterBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, CrafterNetworkNode.CrafterMode.IGNORE.ordinal(), t -> t.getNode().getMode().ordinal(), (t, v) -> t.getNode().setMode(CrafterNetworkNode.CrafterMode.getById(v))); - private static final BlockEntitySynchronizationParameter HAS_ROOT = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().getRootContainerNotSelf().isPresent(), null, (t, v) -> new CrafterBlockEntitySynchronizationClientListener().onChanged(t, v)); + public static final BlockEntitySynchronizationParameter MODE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafter_mode"), EntityDataSerializers.INT, CrafterNetworkNode.CrafterMode.IGNORE.ordinal(), t -> t.getNode().getMode().ordinal(), (t, v) -> t.getNode().setMode(CrafterNetworkNode.CrafterMode.getById(v))); + private static final BlockEntitySynchronizationParameter HAS_ROOT = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafter_has_root"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().getRootContainerNotSelf().isPresent(), null, (t, v) -> new CrafterBlockEntitySynchronizationClientListener().onChanged(t, v)); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java index fea88a907..32bfa5d21 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/CrafterManagerBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterManagerNetworkNode; @@ -9,17 +10,18 @@ import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.screen.CrafterManagerScreen; import net.minecraft.core.BlockPos; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; public class CrafterManagerBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafter_manager_search_box_mode"), EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { if (IGrid.isValidSearchBoxMode(v)) { t.getNode().setSearchBoxMode(v); t.getNode().markDirty(); } }, (initial, p) -> BaseScreen.executeLater(CrafterManagerScreen.class, crafterManager -> crafterManager.getSearchField().setMode(p))); - public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafter_manager_size"), EntityDataSerializers.INT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> { if (IGrid.isValidSize(v)) { t.getNode().setSize(v); t.getNode().markDirty(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java index 7bac6fa56..82391275c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/DestructorBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.DestructorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; @@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -19,15 +21,15 @@ import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; public class DestructorBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter PICKUP = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> { + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "destructor_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "destructor_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "destructor_type")); + public static final BlockEntitySynchronizationParameter PICKUP = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "destructor_pickup"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> { t.getNode().setPickupItem(v); t.getNode().markDirty(); }); - public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), + public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "destructor_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/DetectorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/DetectorBlockEntity.java index 803a1ead8..87ee85c11 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/DetectorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/DetectorBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.DetectorNetworkNode; import com.refinedmods.refinedstorage.blockentity.config.IComparable; @@ -11,21 +12,22 @@ import com.refinedmods.refinedstorage.screen.DetectorScreen; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class DetectorBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getMode(), (t, v) -> { + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "detector_compare")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "detector_type")); + public static final BlockEntitySynchronizationParameter MODE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "detector_mode"), EntityDataSerializers.INT, 0, t -> t.getNode().getMode(), (t, v) -> { if (v == DetectorNetworkNode.MODE_UNDER || v == DetectorNetworkNode.MODE_EQUAL || v == DetectorNetworkNode.MODE_ABOVE) { t.getNode().setMode(v); t.getNode().markDirty(); } }); - public static final BlockEntitySynchronizationParameter AMOUNT = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getAmount(), (t, v) -> { + public static final BlockEntitySynchronizationParameter AMOUNT = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "detector_amount"), EntityDataSerializers.INT, 0, t -> t.getNode().getAmount(), (t, v) -> { t.getNode().setAmount(v); t.getNode().markDirty(); }, (initial, value) -> BaseScreen.executeLater(DetectorScreen.class, detectorScreen -> detectorScreen.updateAmountField(value))); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java index 8fcddcd02..350a53474 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskDriveBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; @@ -16,6 +17,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -30,12 +32,12 @@ import javax.annotation.Nullable; import java.util.Arrays; public class DiskDriveBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(); - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(); - public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { + public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "disk_drive_priority")); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "disk_drive_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "disk_drive_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "disk_drive_type")); + public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "disk_drive_access_type")); + public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "disk_drive_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> { long stored = 0; for (IStorageDisk storage : t.getNode().getItemDisks()) { @@ -52,7 +54,7 @@ public class DiskDriveBlockEntity extends NetworkNodeBlockEntity CAPACITY = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { + public static final BlockEntitySynchronizationParameter CAPACITY = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "disk_drive_capacity"), RSSerializers.LONG_SERIALIZER, 0L, t -> { long capacity = 0; for (IStorageDisk storage : t.getNode().getItemDisks()) { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskManipulatorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskManipulatorBlockEntity.java index 61562493f..88e7e9ecd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskManipulatorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/DiskManipulatorBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; import com.refinedmods.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode; @@ -16,6 +17,7 @@ import net.minecraft.nbt.IntTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -30,10 +32,10 @@ import javax.annotation.Nullable; import java.util.Arrays; public class DiskManipulatorBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter IO_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, DiskManipulatorNetworkNode.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> { + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_type")); + public static final BlockEntitySynchronizationParameter IO_MODE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "disk_manipulator_mode"), EntityDataSerializers.INT, DiskManipulatorNetworkNode.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> { t.getNode().setIoMode(v); t.getNode().markDirty(); }); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ExporterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ExporterBlockEntity.java index 324d35526..cc0c0718f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ExporterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ExporterBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; @@ -11,6 +12,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -19,14 +21,14 @@ import javax.annotation.Nonnull; public class ExporterBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), + public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "exporter_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "exporter_compare")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "exporter_type")); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ExternalStorageBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ExternalStorageBlockEntity.java index de957d01c..141e55a6a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ExternalStorageBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ExternalStorageBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage; @@ -13,6 +14,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -22,12 +24,12 @@ import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nonnull; public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(); - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(); - public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { + public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "external_storage_priority")); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "external_storage_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "external_storage_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "external_storage_type")); + public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "external_storage_access_type")); + public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "external_storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> { long stored = 0; for (IExternalStorage storage : t.getNode().getItemStorages()) { @@ -40,7 +42,7 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity CAPACITY = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { + public static final BlockEntitySynchronizationParameter CAPACITY = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "external_storage_capacity"), RSSerializers.LONG_SERIALIZER, 0L, t -> { long capacity = 0; for (IExternalStorage storage : t.getNode().getItemStorages()) { @@ -54,7 +56,7 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { + public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "external_storage_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidInterfaceBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidInterfaceBlockEntity.java index f662ce5f8..ad8061785 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidInterfaceBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidInterfaceBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.FluidInterfaceNetworkNode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; @@ -7,6 +8,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; @@ -20,8 +22,8 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; public class FluidInterfaceBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter TANK_IN = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankIn().getFluid()); - public static final BlockEntitySynchronizationParameter TANK_OUT = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankOut().getFluid()); + public static final BlockEntitySynchronizationParameter TANK_IN = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "fluid_interface_in"), RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankIn().getFluid()); + public static final BlockEntitySynchronizationParameter TANK_OUT = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "fluid_interface_out"), RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankOut().getFluid()); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java index c96a83ada..6aff898b4 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/FluidStorageBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.apiimpl.network.node.storage.FluidStorageNetworkNode; @@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -19,11 +21,11 @@ import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class FluidStorageBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(); - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(); - public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); + public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "fluid_storage_priority")); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "fluid_storage_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "fluid_storage_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "fluid_storage_access_type")); + public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "fluid_storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java index b4b1c1140..5e7f1c345 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/ImporterBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.ImporterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; @@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.data.ModelData; @@ -19,10 +21,10 @@ import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; public class ImporterBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); - public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "importer_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "importer_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "importer_type")); + public static final BlockEntitySynchronizationParameter COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "importer_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), t -> t.getNode().getCoverManager().writeToNbt(), (t, v) -> t.getNode().getCoverManager().readFromNbt(v), (initial, p) -> { }); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/InterfaceBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/InterfaceBlockEntity.java index c98ad2fdc..b4d88dbc9 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/InterfaceBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/InterfaceBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.InterfaceNetworkNode; import com.refinedmods.refinedstorage.blockentity.config.IComparable; @@ -7,6 +8,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.common.capabilities.Capability; @@ -18,7 +20,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; public class InterfaceBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "interface_compare")); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java index ec6f3ab35..ae1dbe24a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkNodeBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.api.network.node.INetworkNode; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; @@ -13,6 +14,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -26,7 +28,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; public abstract class NetworkNodeBlockEntity extends BaseBlockEntity implements INetworkNodeProxy, IRedstoneConfigurable { - public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(); + public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "redstone_mode")); private final LazyOptional> networkNodeProxy = LazyOptional.of(() -> this); private N clientNode; diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java index 97b3e1d86..2e3f3bcc6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/NetworkTransmitterBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; @@ -21,8 +22,8 @@ import javax.annotation.Nullable; import java.util.Optional; public class NetworkTransmitterBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter DISTANCE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getDistance()); - public static final BlockEntitySynchronizationParameter, NetworkTransmitterBlockEntity> RECEIVER_DIMENSION = new BlockEntitySynchronizationParameter<>(RSSerializers.OPTIONAL_RESOURCE_LOCATION_SERIALIZER, Optional.empty(), t -> { + public static final BlockEntitySynchronizationParameter DISTANCE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "network_transmitter_distance"), EntityDataSerializers.INT, 0, t -> t.getNode().getDistance()); + public static final BlockEntitySynchronizationParameter, NetworkTransmitterBlockEntity> RECEIVER_DIMENSION = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "network_transmitter_receiver_dimension"), RSSerializers.OPTIONAL_RESOURCE_LOCATION_SERIALIZER, Optional.empty(), t -> { if (t.getNode().getReceiverDimension() != null) { return Optional.of(t.getNode().getReceiverDimension().location()); } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java index 12cb93ead..7aaf72741 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.apiimpl.network.node.storage.StorageNetworkNode; @@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -19,11 +21,11 @@ import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class StorageBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(); - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); - public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(); - public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); + public static final BlockEntitySynchronizationParameter PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "storage_priority")); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "storage_compare")); + public static final BlockEntitySynchronizationParameter WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "storage_whitelist_blacklist")); + public static final BlockEntitySynchronizationParameter ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "storage_access_type")); + public static final BlockEntitySynchronizationParameter STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java index a43e918ba..4dd8a6549 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/StorageMonitorBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.StorageMonitorNetworkNode; import com.refinedmods.refinedstorage.blockentity.config.IComparable; @@ -8,6 +9,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -16,8 +18,8 @@ import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nullable; public class StorageMonitorBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(); - public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(); + public static final BlockEntitySynchronizationParameter COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "storage_monitor_compare")); + public static final BlockEntitySynchronizationParameter TYPE = IType.createParameter(new ResourceLocation(RS.ID, "storage_monitor_type")); private static final String NBT_TYPE = "Type"; private static final String NBT_FLUIDSTACK = "FluidStack"; diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/WirelessTransmitterBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/WirelessTransmitterBlockEntity.java index 40f06d4d3..2a6b34def 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/WirelessTransmitterBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/WirelessTransmitterBlockEntity.java @@ -1,18 +1,20 @@ package com.refinedmods.refinedstorage.blockentity; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.WirelessTransmitterNetworkNode; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nonnull; public class WirelessTransmitterBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter RANGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getRange()); + public static final BlockEntitySynchronizationParameter RANGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "wireless_transmitter_range"), EntityDataSerializers.INT, 0, t -> t.getNode().getRange()); public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() .addWatchedParameter(REDSTONE_MODE) diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IAccessType.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IAccessType.java index 418064fe2..6d912cc27 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IAccessType.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IAccessType.java @@ -2,13 +2,14 @@ package com.refinedmods.refinedstorage.blockentity.config; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.api.storage.AccessType; -import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; public interface IAccessType { - static > BlockEntitySynchronizationParameter createParameter() { - return new BlockEntitySynchronizationParameter<>(RSSerializers.ACCESS_TYPE_SERIALIZER, AccessType.INSERT_EXTRACT, t -> ((IAccessType) t.getNode()).getAccessType(), (t, v) -> ((IAccessType) t.getNode()).setAccessType(v)); + static > BlockEntitySynchronizationParameter createParameter(ResourceLocation id) { + return new BlockEntitySynchronizationParameter<>(id, RSSerializers.ACCESS_TYPE_SERIALIZER, AccessType.INSERT_EXTRACT, t -> ((IAccessType) t.getNode()).getAccessType(), (t, v) -> ((IAccessType) t.getNode()).setAccessType(v)); } AccessType getAccessType(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IComparable.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IComparable.java index 61d4e5f38..f461cd4e0 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IComparable.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IComparable.java @@ -3,11 +3,12 @@ package com.refinedmods.refinedstorage.blockentity.config; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; public interface IComparable { - static > BlockEntitySynchronizationParameter createParameter() { - return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IComparable) t.getNode()).getCompare(), (t, v) -> ((IComparable) t.getNode()).setCompare(v)); + static > BlockEntitySynchronizationParameter createParameter(ResourceLocation id) { + return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IComparable) t.getNode()).getCompare(), (t, v) -> ((IComparable) t.getNode()).setCompare(v)); } int getCompare(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IPrioritizable.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IPrioritizable.java index ebcc92ca6..8c3171279 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IPrioritizable.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IPrioritizable.java @@ -3,11 +3,12 @@ package com.refinedmods.refinedstorage.blockentity.config; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; public interface IPrioritizable { - static > BlockEntitySynchronizationParameter createParameter() { - return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IPrioritizable) t.getNode()).getPriority(), (t, v) -> ((IPrioritizable) t.getNode()).setPriority(v)); + static > BlockEntitySynchronizationParameter createParameter(ResourceLocation id) { + return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IPrioritizable) t.getNode()).getPriority(), (t, v) -> ((IPrioritizable) t.getNode()).setPriority(v)); } int getPriority(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IType.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IType.java index 219e90727..3cdfe1297 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IType.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IType.java @@ -1,10 +1,11 @@ package com.refinedmods.refinedstorage.blockentity.config; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; -import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; -import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationClientListener; +import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.items.IItemHandlerModifiable; @@ -14,16 +15,16 @@ public interface IType { int ITEMS = 0; int FLUIDS = 1; - static > BlockEntitySynchronizationParameter createParameter(@Nullable BlockEntitySynchronizationClientListener clientListener) { - return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, ITEMS, t -> ((IType) t.getNode()).getType(), (t, v) -> { + static > BlockEntitySynchronizationParameter createParameter(ResourceLocation id, @Nullable BlockEntitySynchronizationClientListener clientListener) { + return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, ITEMS, t -> ((IType) t.getNode()).getType(), (t, v) -> { if (v == IType.ITEMS || v == IType.FLUIDS) { ((IType) t.getNode()).setType(v); } }, clientListener); } - static > BlockEntitySynchronizationParameter createParameter() { - return createParameter(null); + static > BlockEntitySynchronizationParameter createParameter(ResourceLocation id) { + return createParameter(id, null); } int getType(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IWhitelistBlacklist.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IWhitelistBlacklist.java index 66cd68aa6..62cc91147 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IWhitelistBlacklist.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/IWhitelistBlacklist.java @@ -2,9 +2,10 @@ package com.refinedmods.refinedstorage.blockentity.config; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.apiimpl.API; -import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.fluids.FluidStack; @@ -14,8 +15,8 @@ public interface IWhitelistBlacklist { int WHITELIST = 0; int BLACKLIST = 1; - static > BlockEntitySynchronizationParameter createParameter() { - return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> { + static > BlockEntitySynchronizationParameter createParameter(ResourceLocation id) { + return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> { if (v == WHITELIST || v == BLACKLIST) { ((IWhitelistBlacklist) t.getNode()).setWhitelistBlacklistMode(v); } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/RedstoneMode.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/RedstoneMode.java index fa59a17ed..944d6d3ff 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/config/RedstoneMode.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/config/RedstoneMode.java @@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.blockentity.config; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; public enum RedstoneMode { @@ -22,8 +23,8 @@ public enum RedstoneMode { return id < 0 || id >= values().length ? IGNORE : values()[id]; } - public static BlockEntitySynchronizationParameter createParameter() { - return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGNORE.ordinal(), t -> t.getRedstoneMode().ordinal(), (t, v) -> t.setRedstoneMode(RedstoneMode.getById(v))); + public static BlockEntitySynchronizationParameter createParameter(ResourceLocation id) { + return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, IGNORE.ordinal(), t -> t.getRedstoneMode().ordinal(), (t, v) -> t.setRedstoneMode(RedstoneMode.getById(v))); } public boolean isEnabled(boolean powered) { diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java index 1517eac60..fc2dc516e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/craftingmonitor/CraftingMonitorBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity.craftingmonitor; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.apiimpl.network.node.CraftingMonitorNetworkNode; import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity; @@ -7,6 +8,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import net.minecraft.core.BlockPos; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -15,7 +17,7 @@ import java.util.Optional; import java.util.UUID; public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter, CraftingMonitorBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.OPTIONAL_UUID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> { + public static final BlockEntitySynchronizationParameter, CraftingMonitorBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafting_monitor_tab_selected"), EntityDataSerializers.OPTIONAL_UUID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> { if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) { t.getNode().setTabSelected(Optional.empty()); } else { @@ -25,7 +27,7 @@ public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { + public static final BlockEntitySynchronizationParameter TAB_PAGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafting_monitor_tab_page"), EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { if (v >= 0) { t.getNode().setTabPage(v); t.getNode().markDirty(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java index 5f0824a1b..2bdd583f7 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationManager.java @@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity.data; import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.network.sync.BlockEntitySynchronizationParamaterUpdateMessage; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import java.util.HashMap; @@ -10,8 +11,7 @@ import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; public class BlockEntitySynchronizationManager { - private static final Map REGISTRY = new HashMap<>(); - private static int lastId = 0; + private static final Map REGISTRY = new HashMap<>(); private final BlockEntity blockEntity; private final List parameters; @@ -50,12 +50,10 @@ public class BlockEntitySynchronizationManager { // Synchronized so we don't conflict with addons that reuse this register method in parallel. public synchronized static void registerParameter(BlockEntitySynchronizationParameter parameter) { - parameter.setId(lastId); - - REGISTRY.put(lastId++, parameter); + REGISTRY.put(parameter.getId(), parameter); } - public static BlockEntitySynchronizationParameter getParameter(int id) { + public static BlockEntitySynchronizationParameter getParameter(ResourceLocation id) { return REGISTRY.get(id); } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationParameter.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationParameter.java index b3e55e5f3..f9afbf5ed 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationParameter.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/data/BlockEntitySynchronizationParameter.java @@ -1,31 +1,40 @@ package com.refinedmods.refinedstorage.blockentity.data; import net.minecraft.network.syncher.EntityDataSerializer; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import javax.annotation.Nullable; +import java.util.HashSet; +import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Function; public class BlockEntitySynchronizationParameter { + private static final Set HAD = new HashSet<>(); + + private final ResourceLocation id; private final EntityDataSerializer serializer; private final Function valueProducer; @Nullable private final BiConsumer valueConsumer; @Nullable private final BlockEntitySynchronizationClientListener listener; - private int id; private T value; - public BlockEntitySynchronizationParameter(EntityDataSerializer serializer, T defaultValue, Function producer) { - this(serializer, defaultValue, producer, null); + public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer serializer, T defaultValue, Function producer) { + this(id, serializer, defaultValue, producer, null); } - public BlockEntitySynchronizationParameter(EntityDataSerializer serializer, T defaultValue, Function producer, @Nullable BiConsumer consumer) { - this(serializer, defaultValue, producer, consumer, null); + public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer serializer, T defaultValue, Function producer, @Nullable BiConsumer consumer) { + this(id, serializer, defaultValue, producer, consumer, null); } - public BlockEntitySynchronizationParameter(EntityDataSerializer serializer, T defaultValue, Function producer, @Nullable BiConsumer consumer, @Nullable BlockEntitySynchronizationClientListener listener) { + public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer serializer, T defaultValue, Function producer, @Nullable BiConsumer consumer, @Nullable BlockEntitySynchronizationClientListener listener) { + if (!HAD.add(id)) { + throw new IllegalArgumentException("Duplicate BlockEntitySynchronizationParameter: " + id); + } + this.id = id; this.value = defaultValue; this.serializer = serializer; this.valueProducer = producer; @@ -33,14 +42,10 @@ public class BlockEntitySynchronizationParameter { this.listener = listener; } - public int getId() { + public ResourceLocation getId() { return id; } - public void setId(int id) { - this.id = id; - } - public EntityDataSerializer getSerializer() { return serializer; } diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java index 8e54c3d73..2ee89de73 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/GridBlockEntity.java @@ -1,5 +1,6 @@ package com.refinedmods.refinedstorage.blockentity.grid; +import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.api.network.grid.GridType; import com.refinedmods.refinedstorage.api.network.grid.IGrid; @@ -30,53 +31,53 @@ import java.util.List; import java.util.Set; public class GridBlockEntity extends NetworkNodeBlockEntity { - public static final BlockEntitySynchronizationParameter EXACT_PATTERN = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, true, t -> t.getNode().isExactPattern(), (t, v) -> { + public static final BlockEntitySynchronizationParameter EXACT_PATTERN = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_exact_mode"), EntityDataSerializers.BOOLEAN, true, t -> t.getNode().isExactPattern(), (t, v) -> { t.getNode().setExactPattern(v); t.getNode().markDirty(); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.updateExactPattern(p))); - public static final BlockEntitySynchronizationParameter PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); - public static final BlockEntitySynchronizationParameter VIEW_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> { + public static final BlockEntitySynchronizationParameter PROCESSING_TYPE = IType.createParameter(new ResourceLocation(RS.ID, "grid_processing_type"), (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); + public static final BlockEntitySynchronizationParameter VIEW_TYPE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_view_type"), EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> { if (IGrid.isValidViewType(v)) { t.getNode().setViewType(v); t.getNode().markDirty(); } }, (initial, p) -> trySortGrid(initial)); - public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_ITEM_TAGS = new BlockEntitySynchronizationParameter<>(RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedItemTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedItemTags(v)); - public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_FLUID_TAGS = new BlockEntitySynchronizationParameter<>(RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedFluidTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedFluidTags(v)); - public static final BlockEntitySynchronizationParameter SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> { + public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_ITEM_TAGS = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_allowed_item_tags"), RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedItemTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedItemTags(v)); + public static final BlockEntitySynchronizationParameter>, GridBlockEntity> ALLOWED_FLUID_TAGS = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_allowed_fluid_tags"), RSSerializers.LIST_OF_SET_SERIALIZER, new ArrayList<>(), t -> t.getNode().getAllowedTagList().getAllowedFluidTags(), (t, v) -> t.getNode().getAllowedTagList().setAllowedFluidTags(v)); + public static final BlockEntitySynchronizationParameter SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_sorting_direction"), EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> { if (IGrid.isValidSortingDirection(v)) { t.getNode().setSortingDirection(v); t.getNode().markDirty(); } }, (initial, p) -> trySortGrid(initial)); - public static final BlockEntitySynchronizationParameter SORTING_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingType(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SORTING_TYPE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_sorting_type"), EntityDataSerializers.INT, 0, t -> t.getNode().getSortingType(), (t, v) -> { if (IGrid.isValidSortingType(v)) { t.getNode().setSortingType(v); t.getNode().markDirty(); } }, (initial, p) -> trySortGrid(initial)); - public static final BlockEntitySynchronizationParameter TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabSelected(), (t, v) -> { + public static final BlockEntitySynchronizationParameter TAB_SELECTED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_tab_selected"), EntityDataSerializers.INT, 0, t -> t.getNode().getTabSelected(), (t, v) -> { t.getNode().setTabSelected(v == t.getNode().getTabSelected() ? -1 : v); t.getNode().markDirty(); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort())); - public static final BlockEntitySynchronizationParameter TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { + public static final BlockEntitySynchronizationParameter TAB_PAGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_tab_page"), EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { if (v >= 0 && v <= t.getNode().getTotalTabPages()) { t.getNode().setTabPage(v); t.getNode().markDirty(); } }); - public static final BlockEntitySynchronizationParameter PROCESSING_PATTERN = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isProcessingPattern(), (t, v) -> { + public static final BlockEntitySynchronizationParameter PROCESSING_PATTERN = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_processing_pattern"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isProcessingPattern(), (t, v) -> { t.getNode().setProcessingPattern(v); t.getNode().clearMatrix(); t.getNode().markDirty(); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); - public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSize(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_size"), EntityDataSerializers.INT, 0, t -> t.getNode().getSize(), (t, v) -> { if (IGrid.isValidSize(v)) { t.getNode().setSize(v); t.getNode().markDirty(); } }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.resize(grid.getMinecraft(), grid.width, grid.height))); - public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { + public static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_search_box_mode"), EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { if (IGrid.isValidSearchBoxMode(v)) { t.getNode().setSearchBoxMode(v); t.getNode().markDirty(); diff --git a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java index 2fb1e54e6..3dae41cc5 100644 --- a/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java +++ b/src/main/java/com/refinedmods/refinedstorage/blockentity/grid/portable/PortableGridBlockEntity.java @@ -57,6 +57,7 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -86,42 +87,42 @@ public class PortableGridBlockEntity extends BaseBlockEntity implements IGrid, I private static final String NBT_ENERGY = "Energy"; private static final String NBT_ENCHANTMENTS = "Enchantments"; // @Volatile: Minecraft specific nbt key, see EnchantmentHelper - public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(); + public static final BlockEntitySynchronizationParameter REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "portable_grid_redstone_mode")); - private static final BlockEntitySynchronizationParameter SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingDirection, (t, v) -> { + private static final BlockEntitySynchronizationParameter SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_sorting_direction"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingDirection, (t, v) -> { if (IGrid.isValidSortingDirection(v)) { t.setSortingDirection(v); t.setChanged(); } }, (initial, p) -> GridBlockEntity.trySortGrid(initial)); - private static final BlockEntitySynchronizationParameter SORTING_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingType, (t, v) -> { + private static final BlockEntitySynchronizationParameter SORTING_TYPE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_sorting_type"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingType, (t, v) -> { if (IGrid.isValidSortingType(v)) { t.setSortingType(v); t.setChanged(); } }, (initial, p) -> GridBlockEntity.trySortGrid(initial)); - private static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSearchBoxMode, (t, v) -> { + private static final BlockEntitySynchronizationParameter SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_search_box_mode"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSearchBoxMode, (t, v) -> { if (IGrid.isValidSearchBoxMode(v)) { t.setSearchBoxMode(v); t.setChanged(); } }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p))); - private static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSize, (t, v) -> { + private static final BlockEntitySynchronizationParameter SIZE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_size"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSize, (t, v) -> { if (IGrid.isValidSize(v)) { t.setSize(v); t.setChanged(); } }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); - private static final BlockEntitySynchronizationParameter TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getTabSelected, (t, v) -> { + private static final BlockEntitySynchronizationParameter TAB_SELECTED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_tab_selected"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getTabSelected, (t, v) -> { t.setTabSelected(v == t.getTabSelected() ? -1 : v); t.setChanged(); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort())); - private static final BlockEntitySynchronizationParameter TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getTabPage, (t, v) -> { + private static final BlockEntitySynchronizationParameter TAB_PAGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_tab_page"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getTabPage, (t, v) -> { if (v >= 0 && v <= t.getTotalTabPages()) { t.setTabPage(v); t.setChanged(); diff --git a/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParamaterUpdateMessage.java b/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParamaterUpdateMessage.java index 10e04a116..5f539d67f 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParamaterUpdateMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParamaterUpdateMessage.java @@ -1,9 +1,10 @@ package com.refinedmods.refinedstorage.network.sync; -import com.refinedmods.refinedstorage.container.BaseContainerMenu; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; +import com.refinedmods.refinedstorage.container.BaseContainerMenu; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraftforge.network.NetworkEvent; @@ -20,7 +21,7 @@ public class BlockEntitySynchronizationParamaterUpdateMessage { } public static BlockEntitySynchronizationParamaterUpdateMessage decode(FriendlyByteBuf buf) { - int id = buf.readInt(); + ResourceLocation id = buf.readResourceLocation(); BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id); Object value = null; @@ -37,7 +38,7 @@ public class BlockEntitySynchronizationParamaterUpdateMessage { } public static void encode(BlockEntitySynchronizationParamaterUpdateMessage message, FriendlyByteBuf buf) { - buf.writeInt(message.parameter.getId()); + buf.writeResourceLocation(message.parameter.getId()); message.parameter.getSerializer().write(buf, message.value); } diff --git a/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParameterMessage.java b/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParameterMessage.java index 7440c6619..bfd900675 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParameterMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/sync/BlockEntitySynchronizationParameterMessage.java @@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.network.sync; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.network.NetworkEvent; @@ -20,7 +21,7 @@ public class BlockEntitySynchronizationParameterMessage { } public static BlockEntitySynchronizationParameterMessage decode(FriendlyByteBuf buf) { - int id = buf.readInt(); + ResourceLocation id = buf.readResourceLocation(); boolean initial = buf.readBoolean(); BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id); @@ -37,7 +38,7 @@ public class BlockEntitySynchronizationParameterMessage { } public static void encode(BlockEntitySynchronizationParameterMessage message, FriendlyByteBuf buf) { - buf.writeInt(message.parameter.getId()); + buf.writeResourceLocation(message.parameter.getId()); buf.writeBoolean(message.initial); message.parameter.getSerializer().write(buf, message.parameter.getValueProducer().apply(message.blockEntity));