Fix data parameter desyncs, causing side buttons to not work sometimes. Fixes #3449
API break
This commit is contained in:
@@ -11,6 +11,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
- Ported to Minecraft 1.20.1.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed GUI side buttons not working sometimes when using Refined Storage with addons.
|
||||
|
||||
## [v1.11.6] - 2023-03-30
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
@@ -9,6 +10,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -16,7 +18,7 @@ import net.minecraftforge.client.model.data.ModelData;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class CableBlockEntity extends NetworkNodeBlockEntity<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()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ConstructorNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
@@ -11,6 +12,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -18,14 +20,14 @@ import net.minecraftforge.client.model.data.ModelData;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ConstructorBlockEntity extends NetworkNodeBlockEntity<ConstructorNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> TYPE = IType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Boolean, ConstructorBlockEntity> DROP = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isDrop(), (t, v) -> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "constructor_compare"));
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ConstructorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "constructor_type"));
|
||||
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().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, v) -> t.getNode().getCoverManager().readFromNbt(v),
|
||||
(initial, p) -> {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.network.INetwork;
|
||||
import com.refinedmods.refinedstorage.api.network.INetworkManager;
|
||||
@@ -18,6 +19,7 @@ import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
@@ -36,11 +38,11 @@ import java.util.List;
|
||||
public class ControllerBlockEntity extends BaseBlockEntity implements INetworkNodeProxy<RootNetworkNode>, IRedstoneConfigurable {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ControllerBlockEntity> ENERGY_USAGE = new BlockEntitySynchronizationParameter<>(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_CAPACITY = new BlockEntitySynchronizationParameter<>(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<Integer, ControllerBlockEntity> REDSTONE_MODE = RedstoneMode.createParameter(new ResourceLocation(RS.ID, "controller_redstone_mode"));
|
||||
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<>(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<>(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<>(new ResourceLocation(RS.ID, "controller_nodes"), RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), ControllerBlockEntity::collectClientNodes);
|
||||
|
||||
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
@@ -8,6 +9,7 @@ import com.refinedmods.refinedstorage.screen.CrafterBlockEntitySynchronizationCl
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
@@ -19,8 +21,8 @@ import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CrafterBlockEntity extends NetworkNodeBlockEntity<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)));
|
||||
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));
|
||||
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<>(new ResourceLocation(RS.ID, "crafter_has_root"), EntityDataSerializers.BOOLEAN, false, t -> t.getNode().getRootContainerNotSelf().isPresent(), null, (t, v) -> new CrafterBlockEntitySynchronizationClientListener().onChanged(t, v));
|
||||
|
||||
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.CrafterManagerNetworkNode;
|
||||
@@ -9,17 +10,18 @@ import com.refinedmods.refinedstorage.screen.BaseScreen;
|
||||
import com.refinedmods.refinedstorage.screen.CrafterManagerScreen;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class CrafterManagerBlockEntity extends NetworkNodeBlockEntity<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)) {
|
||||
t.getNode().setSearchBoxMode(v);
|
||||
t.getNode().markDirty();
|
||||
}
|
||||
}, (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)) {
|
||||
t.getNode().setSize(v);
|
||||
t.getNode().markDirty();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DestructorNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
@@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -19,15 +21,15 @@ import net.minecraftforge.client.model.data.ModelData;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class DestructorBlockEntity extends NetworkNodeBlockEntity<DestructorNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> TYPE = IType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Boolean, DestructorBlockEntity> PICKUP = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.BOOLEAN, false, t -> t.getNode().isPickupItem(), (t, v) -> {
|
||||
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(new ResourceLocation(RS.ID, "destructor_whitelist_blacklist"));
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DestructorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "destructor_type"));
|
||||
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().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, v) -> t.getNode().getCoverManager().readFromNbt(v),
|
||||
(initial, p) -> {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DetectorNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
@@ -11,21 +12,22 @@ import com.refinedmods.refinedstorage.screen.DetectorScreen;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class DetectorBlockEntity extends NetworkNodeBlockEntity<DetectorNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> TYPE = IType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> MODE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getMode(), (t, v) -> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "detector_compare"));
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DetectorBlockEntity> TYPE = IType.createParameter(new ResourceLocation(RS.ID, "detector_type"));
|
||||
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) {
|
||||
t.getNode().setMode(v);
|
||||
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().markDirty();
|
||||
}, (initial, value) -> BaseScreen.executeLater(DetectorScreen.class, detectorScreen -> detectorScreen.updateAmountField(value)));
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.disk.IStorageDisk;
|
||||
@@ -16,6 +17,7 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.IntTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -30,12 +32,12 @@ import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class DiskDriveBlockEntity extends NetworkNodeBlockEntity<DiskDriveNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskDriveBlockEntity> TYPE = IType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<AccessType, DiskDriveBlockEntity> ACCESS_TYPE = IAccessType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Long, DiskDriveBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
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(new ResourceLocation(RS.ID, "disk_drive_compare"));
|
||||
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(new ResourceLocation(RS.ID, "disk_drive_type"));
|
||||
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<>(new ResourceLocation(RS.ID, "disk_drive_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
long stored = 0;
|
||||
|
||||
for (IStorageDisk storage : t.getNode().getItemDisks()) {
|
||||
@@ -52,7 +54,7 @@ public class DiskDriveBlockEntity extends NetworkNodeBlockEntity<DiskDriveNetwor
|
||||
|
||||
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;
|
||||
|
||||
for (IStorageDisk storage : t.getNode().getItemDisks()) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.DiskState;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.diskmanipulator.DiskManipulatorNetworkNode;
|
||||
@@ -16,6 +17,7 @@ import net.minecraft.nbt.IntTag;
|
||||
import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -30,10 +32,10 @@ import javax.annotation.Nullable;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class DiskManipulatorBlockEntity extends NetworkNodeBlockEntity<DiskManipulatorNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, DiskManipulatorBlockEntity> TYPE = IType.createParameter();
|
||||
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> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "disk_manipulator_compare"));
|
||||
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(new ResourceLocation(RS.ID, "disk_manipulator_type"));
|
||||
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().markDirty();
|
||||
});
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
@@ -11,6 +12,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -19,14 +21,14 @@ import javax.annotation.Nonnull;
|
||||
|
||||
public class ExporterBlockEntity extends NetworkNodeBlockEntity<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, v) -> t.getNode().getCoverManager().readFromNbt(v),
|
||||
(initial, p) -> {
|
||||
});
|
||||
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ExporterBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ExporterBlockEntity> TYPE = IType.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(new ResourceLocation(RS.ID, "exporter_type"));
|
||||
|
||||
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.api.storage.externalstorage.IExternalStorage;
|
||||
@@ -13,6 +14,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
@@ -22,12 +24,12 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalStorageNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ExternalStorageBlockEntity> TYPE = IType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<AccessType, ExternalStorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Long, ExternalStorageBlockEntity> STORED = new BlockEntitySynchronizationParameter<>(RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
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(new ResourceLocation(RS.ID, "external_storage_compare"));
|
||||
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(new ResourceLocation(RS.ID, "external_storage_type"));
|
||||
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<>(new ResourceLocation(RS.ID, "external_storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> {
|
||||
long stored = 0;
|
||||
|
||||
for (IExternalStorage<ItemStack> storage : t.getNode().getItemStorages()) {
|
||||
@@ -40,7 +42,7 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalS
|
||||
|
||||
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;
|
||||
|
||||
for (IExternalStorage<ItemStack> storage : t.getNode().getItemStorages()) {
|
||||
@@ -54,7 +56,7 @@ public class ExternalStorageBlockEntity extends NetworkNodeBlockEntity<ExternalS
|
||||
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()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.FluidInterfaceNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
@@ -7,6 +8,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
@@ -20,8 +22,8 @@ import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class FluidInterfaceBlockEntity extends NetworkNodeBlockEntity<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_OUT = new BlockEntitySynchronizationParameter<>(RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankOut().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<>(new ResourceLocation(RS.ID, "fluid_interface_out"), RSSerializers.FLUID_STACK_SERIALIZER, FluidStack.EMPTY, t -> t.getNode().getTankOut().getFluid());
|
||||
|
||||
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.storage.FluidStorageNetworkNode;
|
||||
@@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
@@ -19,11 +21,11 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class FluidStorageBlockEntity extends NetworkNodeBlockEntity<FluidStorageNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, FluidStorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<AccessType, FluidStorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter();
|
||||
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<Integer, FluidStorageBlockEntity> PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "fluid_storage_priority"));
|
||||
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(new ResourceLocation(RS.ID, "fluid_storage_whitelist_blacklist"));
|
||||
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<>(new ResourceLocation(RS.ID, "fluid_storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0);
|
||||
|
||||
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.ImporterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
@@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.util.LevelUtils;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
@@ -19,10 +21,10 @@ import net.minecraftforge.client.model.data.ModelData;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class ImporterBlockEntity extends NetworkNodeBlockEntity<ImporterNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, ImporterBlockEntity> TYPE = IType.createParameter();
|
||||
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<Integer, ImporterBlockEntity> COMPARE = IComparable.createParameter(new ResourceLocation(RS.ID, "importer_compare"));
|
||||
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(new ResourceLocation(RS.ID, "importer_type"));
|
||||
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()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.InterfaceNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
@@ -7,6 +8,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
@@ -18,7 +20,7 @@ import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class InterfaceBlockEntity extends NetworkNodeBlockEntity<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()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeManager;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
@@ -13,6 +14,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.capability.NetworkNodeProxyCapability;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
@@ -26,7 +28,7 @@ import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public abstract class NetworkNodeBlockEntity<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 N clientNode;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
@@ -21,8 +22,8 @@ import javax.annotation.Nullable;
|
||||
import java.util.Optional;
|
||||
|
||||
public class NetworkTransmitterBlockEntity extends NetworkNodeBlockEntity<NetworkTransmitterNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, NetworkTransmitterBlockEntity> DISTANCE = new BlockEntitySynchronizationParameter<>(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<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<>(new ResourceLocation(RS.ID, "network_transmitter_receiver_dimension"), RSSerializers.OPTIONAL_RESOURCE_LOCATION_SERIALIZER, Optional.empty(), t -> {
|
||||
if (t.getNode().getReceiverDimension() != null) {
|
||||
return Optional.of(t.getNode().getReceiverDimension().location());
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.storage.StorageNetworkNode;
|
||||
@@ -12,6 +13,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
@@ -19,11 +21,11 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class StorageBlockEntity extends NetworkNodeBlockEntity<StorageNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> PRIORITY = IPrioritizable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, StorageBlockEntity> WHITELIST_BLACKLIST = IWhitelistBlacklist.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<AccessType, StorageBlockEntity> ACCESS_TYPE = IAccessType.createParameter();
|
||||
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<Integer, StorageBlockEntity> PRIORITY = IPrioritizable.createParameter(new ResourceLocation(RS.ID, "storage_priority"));
|
||||
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(new ResourceLocation(RS.ID, "storage_whitelist_blacklist"));
|
||||
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<>(new ResourceLocation(RS.ID, "storage_stored"), RSSerializers.LONG_SERIALIZER, 0L, t -> t.getNode().getStorage() != null ? (long) t.getNode().getStorage().getStored() : 0);
|
||||
|
||||
public static BlockEntitySynchronizationSpec SPEC = BlockEntitySynchronizationSpec.builder()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.StorageMonitorNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.config.IComparable;
|
||||
@@ -8,6 +9,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
@@ -16,8 +18,8 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class StorageMonitorBlockEntity extends NetworkNodeBlockEntity<StorageMonitorNetworkNode> {
|
||||
public static final BlockEntitySynchronizationParameter<Integer, StorageMonitorBlockEntity> COMPARE = IComparable.createParameter();
|
||||
public static final BlockEntitySynchronizationParameter<Integer, StorageMonitorBlockEntity> TYPE = IType.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(new ResourceLocation(RS.ID, "storage_monitor_type"));
|
||||
|
||||
private static final String NBT_TYPE = "Type";
|
||||
private static final String NBT_FLUIDSTACK = "FluidStack";
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
package com.refinedmods.refinedstorage.blockentity;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.WirelessTransmitterNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class WirelessTransmitterBlockEntity extends NetworkNodeBlockEntity<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()
|
||||
.addWatchedParameter(REDSTONE_MODE)
|
||||
|
||||
@@ -2,13 +2,14 @@ package com.refinedmods.refinedstorage.blockentity.config;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.refinedmods.refinedstorage.api.storage.AccessType;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.RSSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
public interface IAccessType {
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<AccessType, T> createParameter() {
|
||||
return new BlockEntitySynchronizationParameter<>(RSSerializers.ACCESS_TYPE_SERIALIZER, AccessType.INSERT_EXTRACT, t -> ((IAccessType) t.getNode()).getAccessType(), (t, v) -> ((IAccessType) t.getNode()).setAccessType(v));
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<AccessType, T> createParameter(ResourceLocation id) {
|
||||
return new BlockEntitySynchronizationParameter<>(id, RSSerializers.ACCESS_TYPE_SERIALIZER, AccessType.INSERT_EXTRACT, t -> ((IAccessType) t.getNode()).getAccessType(), (t, v) -> ((IAccessType) t.getNode()).setAccessType(v));
|
||||
}
|
||||
|
||||
AccessType getAccessType();
|
||||
|
||||
@@ -3,11 +3,12 @@ package com.refinedmods.refinedstorage.blockentity.config;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
public interface IComparable {
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() {
|
||||
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IComparable) t.getNode()).getCompare(), (t, v) -> ((IComparable) t.getNode()).setCompare(v));
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
|
||||
return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IComparable) t.getNode()).getCompare(), (t, v) -> ((IComparable) t.getNode()).setCompare(v));
|
||||
}
|
||||
|
||||
int getCompare();
|
||||
|
||||
@@ -3,11 +3,12 @@ package com.refinedmods.refinedstorage.blockentity.config;
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
public interface IPrioritizable {
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() {
|
||||
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IPrioritizable) t.getNode()).getPriority(), (t, v) -> ((IPrioritizable) t.getNode()).setPriority(v));
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
|
||||
return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IPrioritizable) t.getNode()).getPriority(), (t, v) -> ((IPrioritizable) t.getNode()).setPriority(v));
|
||||
}
|
||||
|
||||
int getPriority();
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.refinedmods.refinedstorage.blockentity.config;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationClientListener;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
|
||||
@@ -14,16 +15,16 @@ public interface IType {
|
||||
int ITEMS = 0;
|
||||
int FLUIDS = 1;
|
||||
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(@Nullable BlockEntitySynchronizationClientListener<Integer> clientListener) {
|
||||
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, ITEMS, t -> ((IType) t.getNode()).getType(), (t, v) -> {
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id, @Nullable BlockEntitySynchronizationClientListener<Integer> clientListener) {
|
||||
return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, ITEMS, t -> ((IType) t.getNode()).getType(), (t, v) -> {
|
||||
if (v == IType.ITEMS || v == IType.FLUIDS) {
|
||||
((IType) t.getNode()).setType(v);
|
||||
}
|
||||
}, clientListener);
|
||||
}
|
||||
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() {
|
||||
return createParameter(null);
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
|
||||
return createParameter(id, null);
|
||||
}
|
||||
|
||||
int getType();
|
||||
|
||||
@@ -2,9 +2,10 @@ package com.refinedmods.refinedstorage.blockentity.config;
|
||||
|
||||
import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.refinedmods.refinedstorage.apiimpl.API;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
@@ -14,8 +15,8 @@ public interface IWhitelistBlacklist {
|
||||
int WHITELIST = 0;
|
||||
int BLACKLIST = 1;
|
||||
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter() {
|
||||
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> {
|
||||
static <T extends BlockEntity & INetworkNodeProxy<?>> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
|
||||
return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, 0, t -> ((IWhitelistBlacklist) t.getNode()).getWhitelistBlacklistMode(), (t, v) -> {
|
||||
if (v == WHITELIST || v == BLACKLIST) {
|
||||
((IWhitelistBlacklist) t.getNode()).setWhitelistBlacklistMode(v);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.blockentity.config;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
public enum RedstoneMode {
|
||||
@@ -22,8 +23,8 @@ public enum RedstoneMode {
|
||||
return id < 0 || id >= values().length ? IGNORE : values()[id];
|
||||
}
|
||||
|
||||
public static <T extends BlockEntity & IRedstoneConfigurable> BlockEntitySynchronizationParameter<Integer, T> createParameter() {
|
||||
return new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, IGNORE.ordinal(), t -> t.getRedstoneMode().ordinal(), (t, v) -> t.setRedstoneMode(RedstoneMode.getById(v)));
|
||||
public static <T extends BlockEntity & IRedstoneConfigurable> BlockEntitySynchronizationParameter<Integer, T> createParameter(ResourceLocation id) {
|
||||
return new BlockEntitySynchronizationParameter<>(id, EntityDataSerializers.INT, IGNORE.ordinal(), t -> t.getRedstoneMode().ordinal(), (t, v) -> t.setRedstoneMode(RedstoneMode.getById(v)));
|
||||
}
|
||||
|
||||
public boolean isEnabled(boolean powered) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity.craftingmonitor;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.apiimpl.network.node.CraftingMonitorNetworkNode;
|
||||
import com.refinedmods.refinedstorage.blockentity.NetworkNodeBlockEntity;
|
||||
@@ -7,6 +8,7 @@ import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizatio
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationSpec;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
@@ -15,7 +17,7 @@ import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity<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())) {
|
||||
t.getNode().setTabSelected(Optional.empty());
|
||||
} else {
|
||||
@@ -25,7 +27,7 @@ public class CraftingMonitorBlockEntity extends NetworkNodeBlockEntity<CraftingM
|
||||
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) {
|
||||
t.getNode().setTabPage(v);
|
||||
t.getNode().markDirty();
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.blockentity.data;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.network.sync.BlockEntitySynchronizationParamaterUpdateMessage;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -10,8 +11,7 @@ import java.util.Map;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class BlockEntitySynchronizationManager {
|
||||
private static final Map<Integer, BlockEntitySynchronizationParameter> REGISTRY = new HashMap<>();
|
||||
private static int lastId = 0;
|
||||
private static final Map<ResourceLocation, BlockEntitySynchronizationParameter> REGISTRY = new HashMap<>();
|
||||
|
||||
private final BlockEntity blockEntity;
|
||||
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.
|
||||
public synchronized static void registerParameter(BlockEntitySynchronizationParameter parameter) {
|
||||
parameter.setId(lastId);
|
||||
|
||||
REGISTRY.put(lastId++, parameter);
|
||||
REGISTRY.put(parameter.getId(), parameter);
|
||||
}
|
||||
|
||||
public static BlockEntitySynchronizationParameter getParameter(int id) {
|
||||
public static BlockEntitySynchronizationParameter getParameter(ResourceLocation id) {
|
||||
return REGISTRY.get(id);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,31 +1,40 @@
|
||||
package com.refinedmods.refinedstorage.blockentity.data;
|
||||
|
||||
import net.minecraft.network.syncher.EntityDataSerializer;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class BlockEntitySynchronizationParameter<T, E extends BlockEntity> {
|
||||
private static final Set<ResourceLocation> HAD = new HashSet<>();
|
||||
|
||||
private final ResourceLocation id;
|
||||
private final EntityDataSerializer<T> serializer;
|
||||
private final Function<E, T> valueProducer;
|
||||
@Nullable
|
||||
private final BiConsumer<E, T> valueConsumer;
|
||||
@Nullable
|
||||
private final BlockEntitySynchronizationClientListener<T> listener;
|
||||
private int id;
|
||||
private T value;
|
||||
|
||||
public BlockEntitySynchronizationParameter(EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer) {
|
||||
this(serializer, defaultValue, producer, null);
|
||||
public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer) {
|
||||
this(id, serializer, defaultValue, producer, null);
|
||||
}
|
||||
|
||||
public BlockEntitySynchronizationParameter(EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer, @Nullable BiConsumer<E, T> consumer) {
|
||||
this(serializer, defaultValue, producer, consumer, null);
|
||||
public BlockEntitySynchronizationParameter(ResourceLocation id, EntityDataSerializer<T> serializer, T defaultValue, Function<E, T> producer, @Nullable BiConsumer<E, T> consumer) {
|
||||
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.serializer = serializer;
|
||||
this.valueProducer = producer;
|
||||
@@ -33,14 +42,10 @@ public class BlockEntitySynchronizationParameter<T, E extends BlockEntity> {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
public ResourceLocation getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public EntityDataSerializer<T> getSerializer() {
|
||||
return serializer;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.refinedmods.refinedstorage.blockentity.grid;
|
||||
|
||||
import com.refinedmods.refinedstorage.RS;
|
||||
import com.refinedmods.refinedstorage.RSBlockEntities;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.GridType;
|
||||
import com.refinedmods.refinedstorage.api.network.grid.IGrid;
|
||||
@@ -30,53 +31,53 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class GridBlockEntity extends NetworkNodeBlockEntity<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().markDirty();
|
||||
}, (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> VIEW_TYPE = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> {
|
||||
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<>(new ResourceLocation(RS.ID, "grid_view_type"), EntityDataSerializers.INT, 0, t -> t.getNode().getViewType(), (t, v) -> {
|
||||
if (IGrid.isValidViewType(v)) {
|
||||
t.getNode().setViewType(v);
|
||||
t.getNode().markDirty();
|
||||
}
|
||||
}, (initial, p) -> trySortGrid(initial));
|
||||
public static final BlockEntitySynchronizationParameter<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_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<Integer, GridBlockEntity> SORTING_DIRECTION = new BlockEntitySynchronizationParameter<>(EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, 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<>(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<>(new ResourceLocation(RS.ID, "grid_sorting_direction"), EntityDataSerializers.INT, 0, t -> t.getNode().getSortingDirection(), (t, v) -> {
|
||||
if (IGrid.isValidSortingDirection(v)) {
|
||||
t.getNode().setSortingDirection(v);
|
||||
t.getNode().markDirty();
|
||||
}
|
||||
}, (initial, p) -> trySortGrid(initial));
|
||||
public static final BlockEntitySynchronizationParameter<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)) {
|
||||
t.getNode().setSortingType(v);
|
||||
t.getNode().markDirty();
|
||||
}
|
||||
}, (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().markDirty();
|
||||
}, (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()) {
|
||||
t.getNode().setTabPage(v);
|
||||
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().clearMatrix();
|
||||
t.getNode().markDirty();
|
||||
}, (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)) {
|
||||
t.getNode().setSize(v);
|
||||
t.getNode().markDirty();
|
||||
}
|
||||
}, (initial, p) -> BaseScreen.executeLater(GridScreen.class, grid -> grid.resize(grid.getMinecraft(), grid.width, grid.height)));
|
||||
public static final BlockEntitySynchronizationParameter<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)) {
|
||||
t.getNode().setSearchBoxMode(v);
|
||||
t.getNode().markDirty();
|
||||
|
||||
@@ -57,6 +57,7 @@ import net.minecraft.nbt.ListTag;
|
||||
import net.minecraft.nbt.Tag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
@@ -86,42 +87,42 @@ public class PortableGridBlockEntity extends BaseBlockEntity implements IGrid, I
|
||||
private static final String NBT_ENERGY = "Energy";
|
||||
private static final String NBT_ENCHANTMENTS = "Enchantments"; // @Volatile: Minecraft specific nbt key, see EnchantmentHelper
|
||||
|
||||
public static final BlockEntitySynchronizationParameter<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)) {
|
||||
t.setSortingDirection(v);
|
||||
t.setChanged();
|
||||
}
|
||||
}, (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)) {
|
||||
t.setSortingType(v);
|
||||
t.setChanged();
|
||||
}
|
||||
}, (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)) {
|
||||
t.setSearchBoxMode(v);
|
||||
t.setChanged();
|
||||
}
|
||||
}, (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)) {
|
||||
t.setSize(v);
|
||||
t.setChanged();
|
||||
}
|
||||
}, (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.setChanged();
|
||||
}, (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()) {
|
||||
t.setTabPage(v);
|
||||
t.setChanged();
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.refinedmods.refinedstorage.network.sync;
|
||||
|
||||
import com.refinedmods.refinedstorage.container.BaseContainerMenu;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import com.refinedmods.refinedstorage.container.BaseContainerMenu;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
@@ -20,7 +21,7 @@ public class BlockEntitySynchronizationParamaterUpdateMessage {
|
||||
}
|
||||
|
||||
public static BlockEntitySynchronizationParamaterUpdateMessage decode(FriendlyByteBuf buf) {
|
||||
int id = buf.readInt();
|
||||
ResourceLocation id = buf.readResourceLocation();
|
||||
|
||||
BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id);
|
||||
Object value = null;
|
||||
@@ -37,7 +38,7 @@ public class BlockEntitySynchronizationParamaterUpdateMessage {
|
||||
}
|
||||
|
||||
public static void encode(BlockEntitySynchronizationParamaterUpdateMessage message, FriendlyByteBuf buf) {
|
||||
buf.writeInt(message.parameter.getId());
|
||||
buf.writeResourceLocation(message.parameter.getId());
|
||||
|
||||
message.parameter.getSerializer().write(buf, message.value);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.network.sync;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager;
|
||||
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationParameter;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
@@ -20,7 +21,7 @@ public class BlockEntitySynchronizationParameterMessage {
|
||||
}
|
||||
|
||||
public static BlockEntitySynchronizationParameterMessage decode(FriendlyByteBuf buf) {
|
||||
int id = buf.readInt();
|
||||
ResourceLocation id = buf.readResourceLocation();
|
||||
boolean initial = buf.readBoolean();
|
||||
|
||||
BlockEntitySynchronizationParameter parameter = BlockEntitySynchronizationManager.getParameter(id);
|
||||
@@ -37,7 +38,7 @@ public class BlockEntitySynchronizationParameterMessage {
|
||||
}
|
||||
|
||||
public static void encode(BlockEntitySynchronizationParameterMessage message, FriendlyByteBuf buf) {
|
||||
buf.writeInt(message.parameter.getId());
|
||||
buf.writeResourceLocation(message.parameter.getId());
|
||||
buf.writeBoolean(message.initial);
|
||||
|
||||
message.parameter.getSerializer().write(buf, message.parameter.getValueProducer().apply(message.blockEntity));
|
||||
|
||||
Reference in New Issue
Block a user