Fix data parameter desyncs, causing side buttons to not work sometimes. Fixes #3449

API break
This commit is contained in:
raoulvdberge
2023-07-03 19:53:31 +02:00
committed by Raoul
parent 5ce6647783
commit 88a28b427e
34 changed files with 187 additions and 129 deletions

View File

@@ -11,6 +11,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Ported to Minecraft 1.20.1. - 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 ## [v1.11.6] - 2023-03-30
### Fixed ### Fixed

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -16,7 +18,7 @@ import net.minecraftforge.client.model.data.ModelData;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class CableBlockEntity extends NetworkNodeBlockEntity<CableNetworkNode> { public class CableBlockEntity extends NetworkNodeBlockEntity<CableNetworkNode> {
public static final BlockEntitySynchronizationParameter<CompoundTag, CableBlockEntity> 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<CompoundTag, CableBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.ConstructorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.ConstructorNetworkNode;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -18,14 +20,14 @@ import net.minecraftforge.client.model.data.ModelData;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class ConstructorBlockEntity extends NetworkNodeBlockEntity<ConstructorNetworkNode> { public class ConstructorBlockEntity extends NetworkNodeBlockEntity<ConstructorNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "constructor_compare"));
public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "constructor_type"));
public static final BlockEntitySynchronizationParameter<Boolean, ConstructorBlockEntity> DROP = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isDrop(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Boolean, ConstructorBlockEntity> DROP = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "constructor_drop"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isDrop(), (t, v) -> {
t.getNode().setDrop(v); t.getNode().setDrop(v);
t.getNode().markDirty(); t.getNode().markDirty();
}); });
public static final BlockEntitySynchronizationParameter<CompoundTag, ConstructorBlockEntity> COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), public static final BlockEntitySynchronizationParameter<CompoundTag, ConstructorBlockEntity> COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "constructor_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(),
t -> t.getNode().getCoverManager().writeToNbt(), t -> t.getNode().getCoverManager().writeToNbt(),
(t, v) -> t.getNode().getCoverManager().readFromNbt(v), (t, v) -> t.getNode().getCoverManager().readFromNbt(v),
(initial, p) -> { (initial, p) -> {

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.INetwork;
import com.refinedmods.refinedstorage.api.network.INetworkManager; 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.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -36,11 +38,11 @@ import java.util.List;
public class ControllerBlockEntity extends BaseBlockEntity implements INetworkNodeProxy<RootNetworkNode>, IRedstoneConfigurable { public class ControllerBlockEntity extends BaseBlockEntity implements INetworkNodeProxy<RootNetworkNode>, IRedstoneConfigurable {
private static final Logger LOGGER = LogManager.getLogger(); private static final Logger LOGGER = LogManager.getLogger();
public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "controller_redstone_mode"));
public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_USAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyUsage()); public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_USAGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_energy_usage"), EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyUsage());
public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_STORED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getEnergyStored()); public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_energy_stored"), EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getEnergyStored());
public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_CAPACITY = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getMaxEnergyStored()); public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_CAPACITY = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_energy_capacity"), EntityDataSerializers.INT, 0, t -> t.getNetwork().getEnergyStorage().getMaxEnergyStored());
public static final BlockEntitySynchronizationParameter<List<ClientNode>, ControllerBlockEntity> NODES = new BlockEntitySynchronizationParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), ControllerBlockEntity::collectClientNodes); public static final BlockEntitySynchronizationParameter<List<ClientNode>, ControllerBlockEntity> NODES = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "controller_nodes"), RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), ControllerBlockEntity::collectClientNodes);
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterNetworkNode;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; 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.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
@@ -19,8 +21,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class CrafterBlockEntity extends NetworkNodeBlockEntity<CrafterNetworkNode> { public class CrafterBlockEntity extends NetworkNodeBlockEntity<CrafterNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, CrafterBlockEntity> MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, CrafterNetworkNode.CrafterMode.IGNORE.ordinal(), t -> t.getNode().getMode().ordinal(), (t, v) -> t.getNode().setMode(CrafterNetworkNode.CrafterMode.getById(v))); public static final BlockEntitySynchronizationParameter<Integer, CrafterBlockEntity> 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<Boolean, CrafterBlockEntity> HAS_ROOT = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().getRootContainerNotSelf().isPresent(), null, (t, v) -> new CrafterBlockEntitySynchronizationClientListener().onChanged(t, v)); private static final BlockEntitySynchronizationParameter<Boolean, CrafterBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterManagerNetworkNode; 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 com.refinedmods.refinedstorage.screen.CrafterManagerScreen;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
public class CrafterManagerBlockEntity extends NetworkNodeBlockEntity<CrafterManagerNetworkNode> { public class CrafterManagerBlockEntity extends NetworkNodeBlockEntity<CrafterManagerNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, CrafterManagerBlockEntity> SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, CrafterManagerBlockEntity> 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)) { if (IGrid.isValidSearchBoxMode(v)) {
t.getNode().setSearchBoxMode(v); t.getNode().setSearchBoxMode(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}, (initial, p) -> BaseScreen.executeLater(CrafterManagerScreen.class, crafterManager -> crafterManager.getSearchField().setMode(p))); }, (initial, p) -> BaseScreen.executeLater(CrafterManagerScreen.class, crafterManager -> crafterManager.getSearchField().setMode(p)));
public static final BlockEntitySynchronizationParameter<Integer, CrafterManagerBlockEntity> SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, CrafterManagerBlockEntity> 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)) { if (IGrid.isValidSize(v)) {
t.getNode().setSize(v); t.getNode().setSize(v);
t.getNode().markDirty(); t.getNode().markDirty();

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.DestructorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.DestructorNetworkNode;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -19,15 +21,15 @@ import net.minecraftforge.client.model.data.ModelData;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class DestructorBlockEntity extends NetworkNodeBlockEntity<DestructorNetworkNode> { public class DestructorBlockEntity extends NetworkNodeBlockEntity<DestructorNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "destructor_compare"));
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "destructor_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "destructor_type"));
public static final BlockEntitySynchronizationParameter<Boolean, DestructorBlockEntity> PICKUP = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Boolean, DestructorBlockEntity> PICKUP = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "destructor_pickup"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> {
t.getNode().setPickupItem(v); t.getNode().setPickupItem(v);
t.getNode().markDirty(); t.getNode().markDirty();
}); });
public static final BlockEntitySynchronizationParameter<CompoundTag, DestructorBlockEntity> COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), public static final BlockEntitySynchronizationParameter<CompoundTag, DestructorBlockEntity> COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "destructor_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(),
t -> t.getNode().getCoverManager().writeToNbt(), t -> t.getNode().getCoverManager().writeToNbt(),
(t, v) -> t.getNode().getCoverManager().readFromNbt(v), (t, v) -> t.getNode().getCoverManager().readFromNbt(v),
(initial, p) -> { (initial, p) -> {

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.DetectorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.DetectorNetworkNode;
import com.refinedmods.refinedstorage.blockentity.config.IComparable; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class DetectorBlockEntity extends NetworkNodeBlockEntity<DetectorNetworkNode> { public class DetectorBlockEntity extends NetworkNodeBlockEntity<DetectorNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "detector_compare"));
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "detector_type"));
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getMode(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> 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) { if (v == DetectorNetworkNode.MODE_UNDER || v == DetectorNetworkNode.MODE_EQUAL || v == DetectorNetworkNode.MODE_ABOVE) {
t.getNode().setMode(v); t.getNode().setMode(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}); });
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> AMOUNT = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getAmount(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> AMOUNT = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "detector_amount"), EntityDataSerializers.INT, 0, t -> t.getNode().getAmount(), (t, v) -> {
t.getNode().setAmount(v); t.getNode().setAmount(v);
t.getNode().markDirty(); t.getNode().markDirty();
}, (initial, value) -> BaseScreen.executeLater(DetectorScreen.class, detectorScreen -> detectorScreen.updateAmountField(value))); }, (initial, value) -> BaseScreen.executeLater(DetectorScreen.class, detectorScreen -> detectorScreen.updateAmountField(value)));

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.AccessType;
import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk; 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.IntTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -30,12 +32,12 @@ import javax.annotation.Nullable;
import java.util.Arrays; import java.util.Arrays;
public class DiskDriveBlockEntity extends NetworkNodeBlockEntity<DiskDriveNetworkNode> { public class DiskDriveBlockEntity extends NetworkNodeBlockEntity<DiskDriveNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> PRIORITY = IPrioritizable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "disk_drive_priority"));
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "disk_drive_compare"));
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "disk_drive_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "disk_drive_type"));
public static final BlockEntitySynchronizationParameter<AccessType, DiskDriveBlockEntity> ACCESS_TYPE = IAccessType.createParameter(); public static final BlockEntitySynchronizationParameter<AccessType, DiskDriveBlockEntity> ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "disk_drive_access_type"));
public static final BlockEntitySynchronizationParameter<Long, DiskDriveBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { public static final BlockEntitySynchronizationParameter<Long, DiskDriveBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "disk_drive_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> {
long stored = 0; long stored = 0;
for (IStorageDisk storage : t.getNode().getItemDisks()) { for (IStorageDisk storage : t.getNode().getItemDisks()) {
@@ -52,7 +54,7 @@ public class DiskDriveBlockEntity extends NetworkNodeBlockEntity<DiskDriveNetwor
return stored; return stored;
}); });
public static final BlockEntitySynchronizationParameter<Long, DiskDriveBlockEntity> CAPACITY = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { public static final BlockEntitySynchronizationParameter<Long, DiskDriveBlockEntity> CAPACITY = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "disk_drive_capacity"), RSSerializers.LONG_SERIALIZER, 0L, t -> {
long capacity = 0; long capacity = 0;
for (IStorageDisk storage : t.getNode().getItemDisks()) { for (IStorageDisk storage : t.getNode().getItemDisks()) {

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState; import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
import com.refinedmods.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode; 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.ListTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -30,10 +32,10 @@ import javax.annotation.Nullable;
import java.util.Arrays; import java.util.Arrays;
public class DiskManipulatorBlockEntity extends NetworkNodeBlockEntity<DiskManipulatorNetworkNode> { public class DiskManipulatorBlockEntity extends NetworkNodeBlockEntity<DiskManipulatorNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_compare"));
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_type"));
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> IO_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, DiskManipulatorNetworkNode.IO_MODE_INSERT, t -> t.getNode().getIoMode(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> 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().setIoMode(v);
t.getNode().markDirty(); t.getNode().markDirty();
}); });

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -19,14 +21,14 @@ import javax.annotation.Nonnull;
public class ExporterBlockEntity extends NetworkNodeBlockEntity<ExporterNetworkNode> { public class ExporterBlockEntity extends NetworkNodeBlockEntity<ExporterNetworkNode> {
public static final BlockEntitySynchronizationParameter<CompoundTag, ExporterBlockEntity> COVER_MANAGER = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.COMPOUND_TAG, new CompoundTag(), public static final BlockEntitySynchronizationParameter<CompoundTag, ExporterBlockEntity> COVER_MANAGER = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "exporter_cover_manager"), EntityDataSerializers.COMPOUND_TAG, new CompoundTag(),
t -> t.getNode().getCoverManager().writeToNbt(), t -> t.getNode().getCoverManager().writeToNbt(),
(t, v) -> t.getNode().getCoverManager().readFromNbt(v), (t, v) -> t.getNode().getCoverManager().readFromNbt(v),
(initial, p) -> { (initial, p) -> {
}); });
public static final BlockEntitySynchronizationParameter<Integer, ExporterBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ExporterBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "exporter_compare"));
public static final BlockEntitySynchronizationParameter<Integer, ExporterBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ExporterBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "exporter_type"));
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.AccessType;
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -22,12 +24,12 @@ import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalStorageNetworkNode> { public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalStorageNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> PRIORITY = IPrioritizable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "external_storage_priority"));
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "external_storage_compare"));
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "external_storage_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "external_storage_type"));
public static final BlockEntitySynchronizationParameter<AccessType, ExternalStorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter(); public static final BlockEntitySynchronizationParameter<AccessType, ExternalStorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "external_storage_access_type"));
public static final BlockEntitySynchronizationParameter<Long, ExternalStorageBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { public static final BlockEntitySynchronizationParameter<Long, ExternalStorageBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "external_storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> {
long stored = 0; long stored = 0;
for (IExternalStorage<ItemStack> storage : t.getNode().getItemStorages()) { for (IExternalStorage<ItemStack> storage : t.getNode().getItemStorages()) {
@@ -40,7 +42,7 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalS
return stored; return stored;
}); });
public static final BlockEntitySynchronizationParameter<Long, ExternalStorageBlockEntity> CAPACITY = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> { public static final BlockEntitySynchronizationParameter<Long, ExternalStorageBlockEntity> CAPACITY = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "external_storage_capacity"), RSSerializers.LONG_SERIALIZER, 0L, t -> {
long capacity = 0; long capacity = 0;
for (IExternalStorage<ItemStack> storage : t.getNode().getItemStorages()) { for (IExternalStorage<ItemStack> storage : t.getNode().getItemStorages()) {
@@ -54,7 +56,7 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalS
return capacity; return capacity;
}); });
public static final BlockEntitySynchronizationParameter<CompoundTag, ExternalStorageBlockEntity> 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<CompoundTag, ExternalStorageBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.FluidInterfaceNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.FluidInterfaceNetworkNode;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; 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 com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
@@ -20,8 +22,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class FluidInterfaceBlockEntity extends NetworkNodeBlockEntity<FluidInterfaceNetworkNode> { public class FluidInterfaceBlockEntity extends NetworkNodeBlockEntity<FluidInterfaceNetworkNode> {
public static final BlockEntitySynchronizationParameter<FluidStack, FluidInterfaceBlockEntity> TANK_IN = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankIn().getFluid()); public static final BlockEntitySynchronizationParameter<FluidStack, FluidInterfaceBlockEntity> 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<FluidStack, FluidInterfaceBlockEntity> TANK_OUT = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankOut().getFluid()); public static final BlockEntitySynchronizationParameter<FluidStack, FluidInterfaceBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.AccessType;
import com.refinedmods.refinedstorage.apiimpl.network.node.storage.FluidStorageNetworkNode; 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.BlockEntitySynchronizationSpec;
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -19,11 +21,11 @@ import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class FluidStorageBlockEntity extends NetworkNodeBlockEntity<FluidStorageNetworkNode> { public class FluidStorageBlockEntity extends NetworkNodeBlockEntity<FluidStorageNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> PRIORITY = IPrioritizable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "fluid_storage_priority"));
public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "fluid_storage_compare"));
public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "fluid_storage_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<AccessType, FluidStorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter(); public static final BlockEntitySynchronizationParameter<AccessType, FluidStorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "fluid_storage_access_type"));
public static final BlockEntitySynchronizationParameter<Long, FluidStorageBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); public static final BlockEntitySynchronizationParameter<Long, FluidStorageBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.ImporterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.ImporterNetworkNode;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; 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.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.client.model.data.ModelData; import net.minecraftforge.client.model.data.ModelData;
@@ -19,10 +21,10 @@ import net.minecraftforge.client.model.data.ModelData;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class ImporterBlockEntity extends NetworkNodeBlockEntity<ImporterNetworkNode> { public class ImporterBlockEntity extends NetworkNodeBlockEntity<ImporterNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "importer_compare"));
public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "importer_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "importer_type"));
public static final BlockEntitySynchronizationParameter<CompoundTag, ImporterBlockEntity> 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<CompoundTag, ImporterBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.InterfaceNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.InterfaceNetworkNode;
import com.refinedmods.refinedstorage.blockentity.config.IComparable; 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 com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
@@ -18,7 +20,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class InterfaceBlockEntity extends NetworkNodeBlockEntity<InterfaceNetworkNode> { public class InterfaceBlockEntity extends NetworkNodeBlockEntity<InterfaceNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, InterfaceBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, InterfaceBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "interface_compare"));
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; 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.INetworkNode;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; 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 com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
@@ -26,7 +28,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public abstract class NetworkNodeBlockEntity<N extends NetworkNode> extends BaseBlockEntity implements INetworkNodeProxy<N>, IRedstoneConfigurable { public abstract class NetworkNodeBlockEntity<N extends NetworkNode> extends BaseBlockEntity implements INetworkNodeProxy<N>, IRedstoneConfigurable {
public static final BlockEntitySynchronizationParameter<Integer, NetworkNodeBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, NetworkNodeBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "redstone_mode"));
private final LazyOptional<INetworkNodeProxy<N>> networkNodeProxy = LazyOptional.of(() -> this); private final LazyOptional<INetworkNodeProxy<N>> networkNodeProxy = LazyOptional.of(() -> this);
private N clientNode; private N clientNode;

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
@@ -21,8 +22,8 @@ import javax.annotation.Nullable;
import java.util.Optional; import java.util.Optional;
public class NetworkTransmitterBlockEntity extends NetworkNodeBlockEntity<NetworkTransmitterNetworkNode> { public class NetworkTransmitterBlockEntity extends NetworkNodeBlockEntity<NetworkTransmitterNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, NetworkTransmitterBlockEntity> DISTANCE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getDistance()); public static final BlockEntitySynchronizationParameter<Integer, NetworkTransmitterBlockEntity> DISTANCE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "network_transmitter_distance"), EntityDataSerializers.INT, 0, t -> t.getNode().getDistance());
public static final BlockEntitySynchronizationParameter<Optional<ResourceLocation>, NetworkTransmitterBlockEntity> RECEIVER_DIMENSION = new BlockEntitySynchronizationParameter<>(RSSerializers.OPTIONAL_RESOURCE_LOCATION_SERIALIZER, Optional.empty(), t -> { public static final BlockEntitySynchronizationParameter<Optional<ResourceLocation>, 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) { if (t.getNode().getReceiverDimension() != null) {
return Optional.of(t.getNode().getReceiverDimension().location()); return Optional.of(t.getNode().getReceiverDimension().location());
} }

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.storage.AccessType; import com.refinedmods.refinedstorage.api.storage.AccessType;
import com.refinedmods.refinedstorage.apiimpl.network.node.storage.StorageNetworkNode; 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.BlockEntitySynchronizationSpec;
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers; import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -19,11 +21,11 @@ import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class StorageBlockEntity extends NetworkNodeBlockEntity<StorageNetworkNode> { public class StorageBlockEntity extends NetworkNodeBlockEntity<StorageNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> PRIORITY = IPrioritizable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "storage_priority"));
public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "storage_compare"));
public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter(new ResourceLocation(RS.ID, "storage_whitelist_blacklist"));
public static final BlockEntitySynchronizationParameter<AccessType, StorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter(); public static final BlockEntitySynchronizationParameter<AccessType, StorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter(new ResourceLocation(RS.ID, "storage_access_type"));
public static final BlockEntitySynchronizationParameter<Long, StorageBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0); public static final BlockEntitySynchronizationParameter<Long, StorageBlockEntity> 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() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.StorageMonitorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.StorageMonitorNetworkNode;
import com.refinedmods.refinedstorage.blockentity.config.IComparable; 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 com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -16,8 +18,8 @@ import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nullable; import javax.annotation.Nullable;
public class StorageMonitorBlockEntity extends NetworkNodeBlockEntity<StorageMonitorNetworkNode> { public class StorageMonitorBlockEntity extends NetworkNodeBlockEntity<StorageMonitorNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, StorageMonitorBlockEntity> COMPARE = IComparable.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, StorageMonitorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "storage_monitor_compare"));
public static final BlockEntitySynchronizationParameter<Integer, StorageMonitorBlockEntity> TYPE = IType.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, StorageMonitorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "storage_monitor_type"));
private static final String NBT_TYPE = "Type"; private static final String NBT_TYPE = "Type";
private static final String NBT_FLUIDSTACK = "FluidStack"; private static final String NBT_FLUIDSTACK = "FluidStack";

View File

@@ -1,18 +1,20 @@
package com.refinedmods.refinedstorage.blockentity; package com.refinedmods.refinedstorage.blockentity;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.WirelessTransmitterNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.WirelessTransmitterNetworkNode;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class WirelessTransmitterBlockEntity extends NetworkNodeBlockEntity<WirelessTransmitterNetworkNode> { public class WirelessTransmitterBlockEntity extends NetworkNodeBlockEntity<WirelessTransmitterNetworkNode> {
public static final BlockEntitySynchronizationParameter<Integer, WirelessTransmitterBlockEntity> RANGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getRange()); public static final BlockEntitySynchronizationParameter<Integer, WirelessTransmitterBlockEntity> RANGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "wireless_transmitter_range"), EntityDataSerializers.INT, 0, t -> t.getNode().getRange());
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder() public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
.addWatchedParameter(REDSTONE_MODE) .addWatchedParameter(REDSTONE_MODE)

View File

@@ -2,13 +2,14 @@ package com.refinedmods.refinedstorage.blockentity.config;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
import com.refinedmods.refinedstorage.api.storage.AccessType; 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.BlockEntitySynchronizationParameter;
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
public interface IAccessType { public interface IAccessType {
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<AccessType, T> createParameter() { static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<AccessType, T> createParameter(ResourceLocation id) {
return new BlockEntitySynchronizationParameter<>(RSSerializers.ACCESS_TYPE_SERIALIZER, AccessType.INSERT_EXTRACT, t -> ((IAccessType) t.getNode()).getAccessType(), (t, v) -> ((IAccessType) t.getNode()).setAccessType(v)); 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(); AccessType getAccessType();

View File

@@ -3,11 +3,12 @@ package com.refinedmods.refinedstorage.blockentity.config;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
public interface IComparable { public interface IComparable {
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() { static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IComparable) t.getNode()).getCompare(), (t, v) -> ((IComparable) t.getNode()).setCompare(v)); return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IComparable) t.getNode()).getCompare(), (t, v) -> ((IComparable) t.getNode()).setCompare(v));
} }
int getCompare(); int getCompare();

View File

@@ -3,11 +3,12 @@ package com.refinedmods.refinedstorage.blockentity.config;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
public interface IPrioritizable { public interface IPrioritizable {
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() { static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IPrioritizable) t.getNode()).getPriority(), (t, v) -> ((IPrioritizable) t.getNode()).setPriority(v)); return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IPrioritizable) t.getNode()).getPriority(), (t, v) -> ((IPrioritizable) t.getNode()).setPriority(v));
} }
int getPriority(); int getPriority();

View File

@@ -1,10 +1,11 @@
package com.refinedmods.refinedstorage.blockentity.config; package com.refinedmods.refinedstorage.blockentity.config;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; 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.BlockEntitySynchronizationClientListener;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.IItemHandlerModifiable;
@@ -14,16 +15,16 @@ public interface IType {
int ITEMS = 0; int ITEMS = 0;
int FLUIDS = 1; int FLUIDS = 1;
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(@Nullable BlockEntitySynchronizationClientListener<Integer> clientListener) { static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id, @Nullable BlockEntitySynchronizationClientListener<Integer> clientListener) {
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, ITEMS, t -> ((IType) t.getNode()).getType(), (t, v) -> { return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, ITEMS, t -> ((IType) t.getNode()).getType(), (t, v) -> {
if (v == IType.ITEMS || v == IType.FLUIDS) { if (v == IType.ITEMS || v == IType.FLUIDS) {
((IType) t.getNode()).setType(v); ((IType) t.getNode()).setType(v);
} }
}, clientListener); }, clientListener);
} }
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() { static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
return createParameter(null); return createParameter(id, null);
} }
int getType(); int getType();

View File

@@ -2,9 +2,10 @@ package com.refinedmods.refinedstorage.blockentity.config;
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@@ -14,8 +15,8 @@ public interface IWhitelistBlacklist {
int WHITELIST = 0; int WHITELIST = 0;
int BLACKLIST = 1; int BLACKLIST = 1;
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() { static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> { return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> {
if (v == WHITELIST || v == BLACKLIST) { if (v == WHITELIST || v == BLACKLIST) {
((IWhitelistBlacklist) t.getNode()).setWhitelistBlacklistMode(v); ((IWhitelistBlacklist) t.getNode()).setWhitelistBlacklistMode(v);
} }

View File

@@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.blockentity.config;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
public enum RedstoneMode { public enum RedstoneMode {
@@ -22,8 +23,8 @@ public enum RedstoneMode {
return id < 0 || id >= values().length ? IGNORE : values()[id]; return id < 0 || id >= values().length ? IGNORE : values()[id];
} }
public static <T extends BlockEntity & IRedstoneConfigurable> BlockEntitySynchronizationParameter<Integer, T> createParameter() { public static <T extends BlockEntity & IRedstoneConfigurable> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGNORE.ordinal(), t -> t.getRedstoneMode().ordinal(), (t, v) -> t.setRedstoneMode(RedstoneMode.getById(v))); return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, IGNORE.ordinal(), t -> t.getRedstoneMode().ordinal(), (t, v) -> t.setRedstoneMode(RedstoneMode.getById(v)));
} }
public boolean isEnabled(boolean powered) { public boolean isEnabled(boolean powered) {

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity.craftingmonitor; package com.refinedmods.refinedstorage.blockentity.craftingmonitor;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.apiimpl.network.node.CraftingMonitorNetworkNode; import com.refinedmods.refinedstorage.apiimpl.network.node.CraftingMonitorNetworkNode;
import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity; 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 com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@@ -15,7 +17,7 @@ import java.util.Optional;
import java.util.UUID; import java.util.UUID;
public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity<CraftingMonitorNetworkNode> { public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity<CraftingMonitorNetworkNode> {
public static final BlockEntitySynchronizationParameter<Optional<UUID>, CraftingMonitorBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.OPTIONAL_UUID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Optional<UUID>, 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())) { if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) {
t.getNode().setTabSelected(Optional.empty()); t.getNode().setTabSelected(Optional.empty());
} else { } else {
@@ -25,7 +27,7 @@ public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity<CraftingM
t.getNode().markDirty(); t.getNode().markDirty();
}); });
public static final BlockEntitySynchronizationParameter<Integer, CraftingMonitorBlockEntity> TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, CraftingMonitorBlockEntity> TAB_PAGE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "crafting_monitor_tab_page"), EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
if (v >= 0) { if (v >= 0) {
t.getNode().setTabPage(v); t.getNode().setTabPage(v);
t.getNode().markDirty(); t.getNode().markDirty();

View File

@@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity.data;
import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.network.sync.BlockEntitySynchronizationParamaterUpdateMessage; import com.refinedmods.refinedstorage.network.sync.BlockEntitySynchronizationParamaterUpdateMessage;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import java.util.HashMap; import java.util.HashMap;
@@ -10,8 +11,7 @@ import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
public class BlockEntitySynchronizationManager { public class BlockEntitySynchronizationManager {
private static final Map<Integer, BlockEntitySynchronizationParameter> REGISTRY = new HashMap<>(); private static final Map<ResourceLocation, BlockEntitySynchronizationParameter> REGISTRY = new HashMap<>();
private static int lastId = 0;
private final BlockEntity blockEntity; private final BlockEntity blockEntity;
private final List<BlockEntitySynchronizationParameter> parameters; private final List<BlockEntitySynchronizationParameter> parameters;
@@ -50,12 +50,10 @@ public class BlockEntitySynchronizationManager {
// Synchronized so we don't conflict with addons that reuse this register method in parallel. // Synchronized so we don't conflict with addons that reuse this register method in parallel.
public synchronized static void registerParameter(BlockEntitySynchronizationParameter parameter) { public synchronized static void registerParameter(BlockEntitySynchronizationParameter parameter) {
parameter.setId(lastId); REGISTRY.put(parameter.getId(), parameter);
REGISTRY.put(lastId++, parameter);
} }
public static BlockEntitySynchronizationParameter getParameter(int id) { public static BlockEntitySynchronizationParameter getParameter(ResourceLocation id) {
return REGISTRY.get(id); return REGISTRY.get(id);
} }

View File

@@ -1,31 +1,40 @@
package com.refinedmods.refinedstorage.blockentity.data; package com.refinedmods.refinedstorage.blockentity.data;
import net.minecraft.network.syncher.EntityDataSerializer; import net.minecraft.network.syncher.EntityDataSerializer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.HashSet;
import java.util.Set;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.Function; import java.util.function.Function;
public class BlockEntitySynchronizationParameter<T, E extends BlockEntity> { public class BlockEntitySynchronizationParameter<T, E extends BlockEntity> {
private static final Set<ResourceLocation> HAD = new HashSet<>();
private final ResourceLocation id;
private final EntityDataSerializer<T> serializer; private final EntityDataSerializer<T> serializer;
private final Function<E, T> valueProducer; private final Function<E, T> valueProducer;
@Nullable @Nullable
private final BiConsumer<E, T> valueConsumer; private final BiConsumer<E, T> valueConsumer;
@Nullable @Nullable
private final BlockEntitySynchronizationClientListener<T> listener; private final BlockEntitySynchronizationClientListener<T> listener;
private int id;
private T value; private T value;
public BlockEntitySynchronizationParameter(EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer) { public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer) {
this(serializer, defaultValue, producer, null); this(id, serializer, defaultValue, producer, null);
} }
public BlockEntitySynchronizationParameter(EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer, @Nullable BiConsumer<E, T> consumer) { public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer, @Nullable BiConsumer<E, T> consumer) {
this(serializer, defaultValue, producer, consumer, null); this(id, serializer, defaultValue, producer, consumer, null);
} }
public BlockEntitySynchronizationParameter(EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer, @Nullable BiConsumer<E, T> consumer, @Nullable BlockEntitySynchronizationClientListener<T> listener) { public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer, @Nullable BiConsumer<E, T> consumer, @Nullable BlockEntitySynchronizationClientListener<T> listener) {
if (!HAD.add(id)) {
throw new IllegalArgumentException("Duplicate BlockEntitySynchronizationParameter: " + id);
}
this.id = id;
this.value = defaultValue; this.value = defaultValue;
this.serializer = serializer; this.serializer = serializer;
this.valueProducer = producer; this.valueProducer = producer;
@@ -33,14 +42,10 @@ public class BlockEntitySynchronizationParameter<T, E extends BlockEntity> {
this.listener = listener; this.listener = listener;
} }
public int getId() { public ResourceLocation getId() {
return id; return id;
} }
public void setId(int id) {
this.id = id;
}
public EntityDataSerializer<T> getSerializer() { public EntityDataSerializer<T> getSerializer() {
return serializer; return serializer;
} }

View File

@@ -1,5 +1,6 @@
package com.refinedmods.refinedstorage.blockentity.grid; package com.refinedmods.refinedstorage.blockentity.grid;
import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlockEntities; import com.refinedmods.refinedstorage.RSBlockEntities;
import com.refinedmods.refinedstorage.api.network.grid.GridType; import com.refinedmods.refinedstorage.api.network.grid.GridType;
import com.refinedmods.refinedstorage.api.network.grid.IGrid; import com.refinedmods.refinedstorage.api.network.grid.IGrid;
@@ -30,53 +31,53 @@ import java.util.List;
import java.util.Set; import java.util.Set;
public class GridBlockEntity extends NetworkNodeBlockEntity<GridNetworkNode> { public class GridBlockEntity extends NetworkNodeBlockEntity<GridNetworkNode> {
public static final BlockEntitySynchronizationParameter<Boolean, GridBlockEntity> EXACT_PATTERN = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, true, t -> t.getNode().isExactPattern(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Boolean, GridBlockEntity> 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().setExactPattern(v);
t.getNode().markDirty(); t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.updateExactPattern(p))); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.updateExactPattern(p)));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> PROCESSING_TYPE = IType.createParameter((initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> PROCESSING_TYPE = IType.createParameter(new ResourceLocation(RS.ID, "grid_processing_type"), (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> VIEW_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> VIEW_TYPE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_view_type"), EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> {
if (IGrid.isValidViewType(v)) { if (IGrid.isValidViewType(v)) {
t.getNode().setViewType(v); t.getNode().setViewType(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}, (initial, p) -> trySortGrid(initial)); }, (initial, p) -> trySortGrid(initial));
public static final BlockEntitySynchronizationParameter<List<Set<ResourceLocation>>, 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<List<Set<ResourceLocation>>, 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<List<Set<ResourceLocation>>, 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<List<Set<ResourceLocation>>, 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<Integer, GridBlockEntity> SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_sorting_direction"), EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> {
if (IGrid.isValidSortingDirection(v)) { if (IGrid.isValidSortingDirection(v)) {
t.getNode().setSortingDirection(v); t.getNode().setSortingDirection(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}, (initial, p) -> trySortGrid(initial)); }, (initial, p) -> trySortGrid(initial));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> SORTING_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingType(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> SORTING_TYPE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_sorting_type"), EntityDataSerializers.INT, 0, t -> t.getNode().getSortingType(), (t, v) -> {
if (IGrid.isValidSortingType(v)) { if (IGrid.isValidSortingType(v)) {
t.getNode().setSortingType(v); t.getNode().setSortingType(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}, (initial, p) -> trySortGrid(initial)); }, (initial, p) -> trySortGrid(initial));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabSelected(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> 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().setTabSelected(v == t.getNode().getTabSelected() ? -1 : v);
t.getNode().markDirty(); t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort())); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getTabPage(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> 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()) { if (v >= 0 && v <= t.getNode().getTotalTabPages()) {
t.getNode().setTabPage(v); t.getNode().setTabPage(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}); });
public static final BlockEntitySynchronizationParameter<Boolean, GridBlockEntity> PROCESSING_PATTERN = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isProcessingPattern(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Boolean, GridBlockEntity> 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().setProcessingPattern(v);
t.getNode().clearMatrix(); t.getNode().clearMatrix();
t.getNode().markDirty(); t.getNode().markDirty();
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSize(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> SIZE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "grid_size"), EntityDataSerializers.INT, 0, t -> t.getNode().getSize(), (t, v) -> {
if (IGrid.isValidSize(v)) { if (IGrid.isValidSize(v)) {
t.getNode().setSize(v); t.getNode().setSize(v);
t.getNode().markDirty(); t.getNode().markDirty();
} }
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.resize(grid.getMinecraft(), grid.width, grid.height))); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.resize(grid.getMinecraft(), grid.width, grid.height)));
public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSearchBoxMode(), (t, v) -> { public static final BlockEntitySynchronizationParameter<Integer, GridBlockEntity> 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)) { if (IGrid.isValidSearchBoxMode(v)) {
t.getNode().setSearchBoxMode(v); t.getNode().setSearchBoxMode(v);
t.getNode().markDirty(); t.getNode().markDirty();

View File

@@ -57,6 +57,7 @@ import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player; 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_ENERGY = "Energy";
private static final String NBT_ENCHANTMENTS = "Enchantments"; // @Volatile: Minecraft specific nbt key, see EnchantmentHelper private static final String NBT_ENCHANTMENTS = "Enchantments"; // @Volatile: Minecraft specific nbt key, see EnchantmentHelper
public static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(); public static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "portable_grid_redstone_mode"));
private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingDirection, (t, v) -> { private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_sorting_direction"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingDirection, (t, v) -> {
if (IGrid.isValidSortingDirection(v)) { if (IGrid.isValidSortingDirection(v)) {
t.setSortingDirection(v); t.setSortingDirection(v);
t.setChanged(); t.setChanged();
} }
}, (initial, p) -> GridBlockEntity.trySortGrid(initial)); }, (initial, p) -> GridBlockEntity.trySortGrid(initial));
private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SORTING_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingType, (t, v) -> { private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SORTING_TYPE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_sorting_type"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSortingType, (t, v) -> {
if (IGrid.isValidSortingType(v)) { if (IGrid.isValidSortingType(v)) {
t.setSortingType(v); t.setSortingType(v);
t.setChanged(); t.setChanged();
} }
}, (initial, p) -> GridBlockEntity.trySortGrid(initial)); }, (initial, p) -> GridBlockEntity.trySortGrid(initial));
private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SEARCH_BOX_MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSearchBoxMode, (t, v) -> { private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> 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)) { if (IGrid.isValidSearchBoxMode(v)) {
t.setSearchBoxMode(v); t.setSearchBoxMode(v);
t.setChanged(); t.setChanged();
} }
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p))); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getSearchField().setMode(p)));
private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SIZE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSize, (t, v) -> { private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> SIZE = new BlockEntitySynchronizationParameter<>(new ResourceLocation(RS.ID, "portable_grid_size"), EntityDataSerializers.INT, 0, PortableGridBlockEntity::getSize, (t, v) -> {
if (IGrid.isValidSize(v)) { if (IGrid.isValidSize(v)) {
t.setSize(v); t.setSize(v);
t.setChanged(); t.setChanged();
} }
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init)); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, BaseScreen::init));
private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> TAB_SELECTED = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getTabSelected, (t, v) -> { private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> 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.setTabSelected(v == t.getTabSelected() ? -1 : v);
t.setChanged(); t.setChanged();
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort())); }, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.getView().sort()));
private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> TAB_PAGE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, PortableGridBlockEntity::getTabPage, (t, v) -> { private static final BlockEntitySynchronizationParameter<Integer, PortableGridBlockEntity> 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()) { if (v >= 0 && v <= t.getTotalTabPages()) {
t.setTabPage(v); t.setTabPage(v);
t.setChanged(); t.setChanged();

View File

@@ -1,9 +1,10 @@
package com.refinedmods.refinedstorage.network.sync; 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.BlockEntitySynchronizationManager;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import com.refinedmods.refinedstorage.container.BaseContainerMenu;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkEvent;
@@ -20,7 +21,7 @@ public class BlockEntitySynchronizationParamaterUpdateMessage {
} }
public static BlockEntitySynchronizationParamaterUpdateMessage decode(FriendlyByteBuf buf) { public static BlockEntitySynchronizationParamaterUpdateMessage decode(FriendlyByteBuf buf) {
int id = buf.readInt(); ResourceLocation id = buf.readResourceLocation();
BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id); BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id);
Object value = null; Object value = null;
@@ -37,7 +38,7 @@ public class BlockEntitySynchronizationParamaterUpdateMessage {
} }
public static void encode(BlockEntitySynchronizationParamaterUpdateMessage message, FriendlyByteBuf buf) { 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); message.parameter.getSerializer().write(buf, message.value);
} }

View File

@@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.network.sync;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter; import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkEvent;
@@ -20,7 +21,7 @@ public class BlockEntitySynchronizationParameterMessage {
} }
public static BlockEntitySynchronizationParameterMessage decode(FriendlyByteBuf buf) { public static BlockEntitySynchronizationParameterMessage decode(FriendlyByteBuf buf) {
int id = buf.readInt(); ResourceLocation id = buf.readResourceLocation();
boolean initial = buf.readBoolean(); boolean initial = buf.readBoolean();
BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id); BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id);
@@ -37,7 +38,7 @@ public class BlockEntitySynchronizationParameterMessage {
} }
public static void encode(BlockEntitySynchronizationParameterMessage message, FriendlyByteBuf buf) { public static void encode(BlockEntitySynchronizationParameterMessage message, FriendlyByteBuf buf) {
buf.writeInt(message.parameter.getId()); buf.writeResourceLocation(message.parameter.getId());
buf.writeBoolean(message.initial); buf.writeBoolean(message.initial);
message.parameter.getSerializer().write(buf, message.parameter.getValueProducer().apply(message.blockEntity)); message.parameter.getSerializer().write(buf, message.parameter.getValueProducer().apply(message.blockEntity));