diff --git a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java index c652aea70..05a84c88d 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/ClientSetup.java @@ -48,6 +48,14 @@ public class ClientSetup { bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "network_transmitter"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/network_transmitter/cutouts/connected"))); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "relay"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/relay/cutouts/connected"))); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "detector"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/detector/cutouts/on"))); + bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "security_manager"), (base, registry) -> new FullbrightBakedModel( + base, + new ResourceLocation(RS.ID, "block/security_manager/cutouts/top_connected"), + new ResourceLocation(RS.ID, "block/security_manager/cutouts/front_connected"), + new ResourceLocation(RS.ID, "block/security_manager/cutouts/left_connected"), + new ResourceLocation(RS.ID, "block/security_manager/cutouts/back_connected"), + new ResourceLocation(RS.ID, "block/security_manager/cutouts/right_connected") + )); bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel( new DiskDriveBakedModel( @@ -113,6 +121,7 @@ public class ClientSetup { ScreenManager.registerFactory(RSContainers.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new); ScreenManager.registerFactory(RSContainers.RELAY, RelayScreen::new); ScreenManager.registerFactory(RSContainers.DETECTOR, DetectorScreen::new); + ScreenManager.registerFactory(RSContainers.SECURITY_MANAGER, SecurityManagerScreen::new); ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RS.java b/src/main/java/com/raoulvdberge/refinedstorage/RS.java index 0d9bce856..5704c3335 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RS.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RS.java @@ -122,6 +122,7 @@ public final class RS { API.instance().getNetworkNodeRegistry().add(NetworkTransmitterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new NetworkTransmitterNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(RelayNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new RelayNetworkNode(world, pos))); API.instance().getNetworkNodeRegistry().add(DetectorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new DetectorNetworkNode(world, pos))); + API.instance().getNetworkNodeRegistry().add(SecurityManagerNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new SecurityManagerNetworkNode(world, pos))); API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); @@ -170,6 +171,7 @@ public final class RS { e.getRegistry().register(new NetworkTransmitterBlock()); e.getRegistry().register(new RelayBlock()); e.getRegistry().register(new DetectorBlock()); + e.getRegistry().register(new SecurityManagerBlock()); } @SubscribeEvent @@ -202,6 +204,7 @@ public final class RS { e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(NetworkTransmitterTile::new, RSBlocks.NETWORK_TRANSMITTER).build(null).setRegistryName(RS.ID, "network_transmitter"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(RelayTile::new, RSBlocks.RELAY).build(null).setRegistryName(RS.ID, "relay"))); e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(DetectorTile::new, RSBlocks.DETECTOR).build(null).setRegistryName(RS.ID, "detector"))); + e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(SecurityManagerTile::new, RSBlocks.SECURITY_MANAGER).build(null).setRegistryName(RS.ID, "security_manager"))); } private TileEntityType registerTileDataParameters(TileEntityType t) { @@ -226,6 +229,7 @@ public final class RS { e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new NetworkTransmitterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "network_transmitter")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new RelayContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "relay")); e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new DetectorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "detector")); + e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory((windowId, inv, tile) -> new SecurityManagerContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "security_manager")); } @SubscribeEvent @@ -300,6 +304,7 @@ public final class RS { e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_TRANSMITTER)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.RELAY)); e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DETECTOR)); + e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.SECURITY_MANAGER)); } /* TODO diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index 3750a146c..a58cc9086 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -58,6 +58,8 @@ public final class RSBlocks { public static final FluidStorageBlock FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK = null; @ObjectHolder(RS.ID + ":creative_fluid_storage_block") public static final FluidStorageBlock CREATIVE_FLUID_STORAGE_BLOCK = null; + @ObjectHolder(RS.ID + ":security_manager") + public static final SecurityManagerBlock SECURITY_MANAGER = null; public static final BlockDestructor DESTRUCTOR = new BlockDestructor(); public static final BlockConstructor CONSTRUCTOR = new BlockConstructor(); @@ -67,7 +69,6 @@ public final class RSBlocks { public static final BlockCrafter CRAFTER = new BlockCrafter(); public static final BlockFluidInterface FLUID_INTERFACE = new BlockFluidInterface(); public static final BlockDiskManipulator DISK_MANIPULATOR = new BlockDiskManipulator(); - public static final BlockSecurityManager SECURITY_MANAGER = new BlockSecurityManager(); public static final BlockStorageMonitor STORAGE_MONITOR = new BlockStorageMonitor(); public static final BlockPortableGrid PORTABLE_GRID = new BlockPortableGrid(); public static final BlockCrafterManager CRAFTER_MANAGER = new BlockCrafterManager(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java index bcb6a1a41..6feb76709 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSContainers.java @@ -29,6 +29,8 @@ public final class RSContainers { public static final ContainerType STORAGE_BLOCK = null; @ObjectHolder(RS.ID + ":fluid_storage_block") public static final ContainerType FLUID_STORAGE_BLOCK = null; + @ObjectHolder(RS.ID + ":security_manager") + public static final ContainerType SECURITY_MANAGER = null; //@ObjectHolder(RS.ID + ":crafter") public static final ContainerType CRAFTER = null; @@ -46,8 +48,6 @@ public final class RSContainers { public static final ContainerType FLUID_INTERFACE = null; //@ObjectHolder(RS.ID + ":interface") public static final ContainerType INTERFACE = null; - //@ObjectHolder(RS.ID + ":security_manager") - public static final ContainerType SECURITY_MANAGER = null; //@ObjectHolder(RS.ID + ":storage_monitor") public static final ContainerType STORAGE_MONITOR = null; //@ObjectHolder(RS.ID + ":wireless_transmitter") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java index d62f841a2..1c75e2911 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSOldConfig.java @@ -12,8 +12,6 @@ public class RSOldConfig { public int fluidInterfaceUsage; public int wirelessTransmitterUsage; public int diskManipulatorUsage; - public int securityManagerUsage; - public int securityManagerPerSecurityCardUsage; //endregion //region Wireless Transmitter @@ -79,8 +77,6 @@ public class RSOldConfig { fluidInterfaceUsage = config.getInt("fluidInterface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Fluid Interfaces"); wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters"); diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators"); - securityManagerUsage = config.getInt("securityManager", ENERGY, 4, 0, Integer.MAX_VALUE, "The base energy used by Security Managers"); - securityManagerPerSecurityCardUsage = config.getInt("securityManagerPerSecurityCard", ENERGY, 10, 0, Integer.MAX_VALUE, "The additional energy used by Security Cards in Security Managers"); //endregion //region Wireless Transmitter diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java index d0b8295e2..17f59ce6a 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSTiles.java @@ -58,15 +58,15 @@ public class RSTiles { public static final TileEntityType FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK = null; @ObjectHolder(RS.ID + ":creative_fluid_storage_block") public static final TileEntityType CREATIVE_FLUID_STORAGE_BLOCK = null; + @ObjectHolder(RS.ID + ":security_manager") + public static final TileEntityType SECURITY_MANAGER = null; //@ObjectHolder(RS.ID + ":portable_grid") public static final TileEntityType PORTABLE_GRID = null; - //@ObjectHolder(RS.ID + ":security_manager") - public static final TileEntityType SECURITY_MANAGER = null; //@ObjectHolder(RS.ID + ":storage_monitor") public static final TileEntityType STORAGE_MONITOR = null; //@ObjectHolder(RS.ID + ":wireless_transmitter") - public static final TileEntityType WIRELESS_TRANSMITTER = null; + public static final TileEntityType WIRELESS_TRANSMITTER = null; //@ObjectHolder(RS.ID + ":interface") public static final TileEntityType INTERFACE = null; //@ObjectHolder(RS.ID + ":fluid_interface") diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/SecurityManagerNetworkNode.java old mode 100755 new mode 100644 similarity index 94% rename from src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java rename to src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/SecurityManagerNetworkNode.java index f87e9f445..6ac9ed3b7 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/SecurityManagerNetworkNode.java @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -public class NetworkNodeSecurityManager extends NetworkNode implements ISecurityCardContainer { +public class SecurityManagerNetworkNode extends NetworkNode implements ISecurityCardContainer { public static final ResourceLocation ID = new ResourceLocation(RS.ID, "security_manager"); private List cards = new ArrayList<>(); @@ -48,17 +48,17 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity .addValidator(new ItemValidator(RSItems.SECURITY_CARD)) .addListener(new NetworkNodeInventoryListener(this)); - public NetworkNodeSecurityManager(World world, BlockPos pos) { + public SecurityManagerNetworkNode(World world, BlockPos pos) { super(world, pos); } @Override public int getEnergyUsage() { - int usage = RS.INSTANCE.config.securityManagerUsage; + int usage = RS.SERVER_CONFIG.getSecurityManager().getUsage(); for (int i = 0; i < cardsInv.getSlots(); ++i) { if (!cardsInv.getStackInSlot(i).isEmpty()) { - usage += RS.INSTANCE.config.securityManagerPerSecurityCardUsage; + usage += RS.SERVER_CONFIG.getSecurityManager().getUsagePerCard(); } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java deleted file mode 100755 index cb4064c1b..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.raoulvdberge.refinedstorage.block; - -import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; -import com.raoulvdberge.refinedstorage.tile.TileSecurityManager; - -public class BlockSecurityManager extends BlockNode { - public BlockSecurityManager() { - super(BlockInfoBuilder.forId("security_manager").tileEntity(TileSecurityManager::new).create()); - } - - /* TODO - @Override - @OnlyIn(Dist.CLIENT) - public void registerModels(IModelRegistration modelRegistration) { - modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory")); - - modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelFullbright( - base, - RS.ID + ":blocks/security_manager/cutouts/top_connected", - RS.ID + ":blocks/security_manager/cutouts/front_connected", - RS.ID + ":blocks/security_manager/cutouts/left_connected", - RS.ID + ":blocks/security_manager/cutouts/back_connected", - RS.ID + ":blocks/security_manager/cutouts/right_connected" - )); - } - - @Override - public BlockRenderLayer getRenderLayer() { - return BlockRenderLayer.CUTOUT; - } - - @Override - @Nullable - public BlockDirection getDirection() { - return BlockDirection.HORIZONTAL; - } - - @Override - public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) { - if (!world.isRemote) { - if (player.getGameProfile().getId().equals(((TileSecurityManager) world.getTileEntity(pos)).getNode().getOwner())) { - player.openGui(RS.INSTANCE, RSGui.SECURITY_MANAGER, world, pos.getX(), pos.getY(), pos.getZ()); - } else { - openNetworkGui(RSGui.SECURITY_MANAGER, player, world, pos, side, Permission.MODIFY, Permission.SECURITY); - } - } - - return true; - }*/ - - @Override - public boolean hasConnectedState() { - return true; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java index 085f0de12..717a9c5a7 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/ControllerBlock.java @@ -5,11 +5,13 @@ import com.raoulvdberge.refinedstorage.api.network.NetworkType; import com.raoulvdberge.refinedstorage.container.ControllerContainer; import com.raoulvdberge.refinedstorage.tile.ControllerTile; import com.raoulvdberge.refinedstorage.util.BlockUtils; +import com.raoulvdberge.refinedstorage.util.NetworkUtils; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.container.Container; import net.minecraft.inventory.container.INamedContainerProvider; import net.minecraft.item.ItemStack; @@ -26,6 +28,7 @@ import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.fml.network.NetworkHooks; import javax.annotation.Nullable; @@ -109,19 +112,23 @@ public class ControllerBlock extends Block { @Override @SuppressWarnings("deprecation") - public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult rayTraceResult) { + public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) { if (!world.isRemote) { - player.openContainer(new INamedContainerProvider() { - @Override - public ITextComponent getDisplayName() { - return new TranslationTextComponent("gui.refinedstorage." + (ControllerBlock.this.getType() == NetworkType.CREATIVE ? "creative_" : "") + "controller"); - } + return NetworkUtils.attemptModify(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui( + (ServerPlayerEntity) player, + new INamedContainerProvider() { + @Override + public ITextComponent getDisplayName() { + return new TranslationTextComponent("gui.refinedstorage." + (ControllerBlock.this.getType() == NetworkType.CREATIVE ? "creative_" : "") + "controller"); + } - @Override - public Container createMenu(int i, PlayerInventory playerInventory, PlayerEntity player) { - return new ControllerContainer((ControllerTile) world.getTileEntity(pos), player, i); - } - }); + @Override + public Container createMenu(int i, PlayerInventory playerInventory, PlayerEntity player) { + return new ControllerContainer((ControllerTile) world.getTileEntity(pos), player, i); + } + }, + pos + )); } return true; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/SecurityManagerBlock.java b/src/main/java/com/raoulvdberge/refinedstorage/block/SecurityManagerBlock.java new file mode 100644 index 000000000..c41f99058 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/SecurityManagerBlock.java @@ -0,0 +1,77 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.block.info.BlockDirection; +import com.raoulvdberge.refinedstorage.container.SecurityManagerContainer; +import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider; +import com.raoulvdberge.refinedstorage.tile.SecurityManagerTile; +import com.raoulvdberge.refinedstorage.util.BlockUtils; +import com.raoulvdberge.refinedstorage.util.NetworkUtils; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.fml.network.NetworkHooks; + +import javax.annotation.Nullable; + +public class SecurityManagerBlock extends NodeBlock { + public SecurityManagerBlock() { + super(BlockUtils.DEFAULT_ROCK_PROPERTIES); + + this.setRegistryName(RS.ID, "security_manager"); + } + + @Override + public BlockRenderLayer getRenderLayer() { + return BlockRenderLayer.CUTOUT; + } + + @Override + public BlockDirection getDirection() { + return BlockDirection.HORIZONTAL; + } + + @Override + @SuppressWarnings("deprecation") + public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { + if (!world.isRemote) { + Runnable action = () -> NetworkHooks.openGui( + (ServerPlayerEntity) player, + new PositionalTileContainerProvider( + new TranslationTextComponent("gui.refinedstorage.security_manager"), + (tile, windowId, inventory, p) -> new SecurityManagerContainer(tile, player, windowId), + pos + ), + pos + ); + + if (player.getGameProfile().getId().equals(((SecurityManagerTile) world.getTileEntity(pos)).getNode().getOwner())) { + action.run(); + } else { + return NetworkUtils.attempt(world, pos, hit.getFace(), player, action, Permission.MODIFY, Permission.SECURITY); + } + } + + return true; + } + + @Nullable + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return new SecurityManagerTile(); + } + + @Override + public boolean hasConnectedState() { + return true; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java index 6d6845da8..e412b02cc 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/config/ServerConfig.java @@ -19,6 +19,7 @@ public class ServerConfig { private NetworkTransmitter networkTransmitter; private Relay relay; private Detector detector; + private SecurityManager securityManager; private Upgrades upgrades; public ServerConfig() { @@ -35,6 +36,7 @@ public class ServerConfig { networkTransmitter = new NetworkTransmitter(); relay = new Relay(); detector = new Detector(); + securityManager = new SecurityManager(); upgrades = new Upgrades(); spec = builder.build(); @@ -96,6 +98,10 @@ public class ServerConfig { return detector; } + public SecurityManager getSecurityManager() { + return securityManager; + } + public ForgeConfigSpec getSpec() { return spec; } @@ -455,4 +461,26 @@ public class ServerConfig { return usage.get(); } } + + public class SecurityManager { + private final ForgeConfigSpec.IntValue usage; + private final ForgeConfigSpec.IntValue usagePerCard; + + public SecurityManager() { + builder.push("securityManager"); + + usage = builder.comment("The energy used by the Security Manager").defineInRange("usage", 4, 0, Integer.MAX_VALUE); + usagePerCard = builder.comment("The additional energy used by Security Cards in the Security Manager").defineInRange("usagePerCard", 10, 0, Integer.MAX_VALUE); + + builder.pop(); + } + + public int getUsage() { + return usage.get(); + } + + public int getUsagePerCard() { + return usagePerCard.get(); + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/SecurityManagerContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/SecurityManagerContainer.java index dd6b36373..f9699228f 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/SecurityManagerContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/SecurityManagerContainer.java @@ -1,12 +1,12 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RSContainers; -import com.raoulvdberge.refinedstorage.tile.TileSecurityManager; +import com.raoulvdberge.refinedstorage.tile.SecurityManagerTile; import net.minecraft.entity.player.PlayerEntity; import net.minecraftforge.items.SlotItemHandler; public class SecurityManagerContainer extends BaseContainer { - public SecurityManagerContainer(TileSecurityManager securityManager, PlayerEntity player, int windowId) { + public SecurityManagerContainer(SecurityManagerTile securityManager, PlayerEntity player, int windowId) { super(RSContainers.SECURITY_MANAGER, securityManager, player, windowId); int x = 8; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageSecurityManagerUpdate.java.off b/src/main/java/com/raoulvdberge/refinedstorage/network/MessageSecurityManagerUpdate.java.off deleted file mode 100644 index b34bf2a8b..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/MessageSecurityManagerUpdate.java.off +++ /dev/null @@ -1,67 +0,0 @@ -package com.raoulvdberge.refinedstorage.network; - -import com.raoulvdberge.refinedstorage.api.network.security.Permission; -import com.raoulvdberge.refinedstorage.tile.TileSecurityManager; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; - -public class MessageSecurityManagerUpdate extends MessageHandlerPlayerToServer implements IMessage { - private int x; - private int y; - private int z; - private Permission permission; - private boolean state; - - public MessageSecurityManagerUpdate() { - } - - public MessageSecurityManagerUpdate(TileSecurityManager securityManager, Permission permission, boolean state) { - this.x = securityManager.getPos().getX(); - this.y = securityManager.getPos().getY(); - this.z = securityManager.getPos().getZ(); - this.permission = permission; - this.state = state; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - - int id = buf.readInt(); - - permission = Permission.INSERT; - state = buf.readBoolean(); - - for (Permission otherPermission : Permission.values()) { - if (otherPermission.getId() == id) { - permission = otherPermission; - - break; - } - } - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(permission.getId()); - buf.writeBoolean(state); - } - - @Override - protected void handle(MessageSecurityManagerUpdate message, ServerPlayerEntity player) { - TileEntity tile = player.getEntityWorld().getTileEntity(new BlockPos(message.x, message.y, message.z)); - - if (tile instanceof TileSecurityManager) { - ((TileSecurityManager) tile).getNode().updatePermission(message.permission, message.state); - } - } - -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java index b3143afe2..01b9d5694 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/NetworkHandler.java @@ -45,6 +45,7 @@ public class NetworkHandler { handler.registerMessage(id++, GridFluidPullMessage.class, GridFluidPullMessage::encode, GridFluidPullMessage::decode, GridFluidPullMessage::handle); handler.registerMessage(id++, GridTransferMessage.class, GridTransferMessage::encode, GridTransferMessage::decode, GridTransferMessage::handle); handler.registerMessage(id++, GridProcessingTransferMessage.class, GridProcessingTransferMessage::encode, GridProcessingTransferMessage::decode, GridProcessingTransferMessage::handle); + handler.registerMessage(id++, SecurityManagerUpdateMessage.class, SecurityManagerUpdateMessage::encode, SecurityManagerUpdateMessage::decode, SecurityManagerUpdateMessage::handle); } public void sendToServer(Object message) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/network/SecurityManagerUpdateMessage.java b/src/main/java/com/raoulvdberge/refinedstorage/network/SecurityManagerUpdateMessage.java new file mode 100644 index 000000000..c87cdbf66 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/network/SecurityManagerUpdateMessage.java @@ -0,0 +1,63 @@ +package com.raoulvdberge.refinedstorage.network; + +import com.raoulvdberge.refinedstorage.api.network.security.Permission; +import com.raoulvdberge.refinedstorage.tile.SecurityManagerTile; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.network.PacketBuffer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.network.NetworkEvent; + +import java.util.function.Supplier; + +public class SecurityManagerUpdateMessage { + private BlockPos pos; + private Permission permission; + private boolean state; + + public SecurityManagerUpdateMessage(BlockPos pos, Permission permission, boolean state) { + this.pos = pos; + this.permission = permission; + this.state = state; + } + + public static SecurityManagerUpdateMessage decode(PacketBuffer buf) { + BlockPos pos = buf.readBlockPos(); + + int id = buf.readInt(); + Permission permission = Permission.INSERT; + + for (Permission otherPermission : Permission.values()) { + if (otherPermission.getId() == id) { + permission = otherPermission; + break; + } + } + + boolean state = buf.readBoolean(); + + return new SecurityManagerUpdateMessage(pos, permission, state); + } + + public static void encode(SecurityManagerUpdateMessage message, PacketBuffer buf) { + buf.writeBlockPos(message.pos); + buf.writeInt(message.permission.getId()); + buf.writeBoolean(message.state); + } + + public static void handle(SecurityManagerUpdateMessage message, Supplier ctx) { + PlayerEntity player = ctx.get().getSender(); + + if (player != null) { + ctx.get().enqueueWork(() -> { + TileEntity tile = player.getEntityWorld().getTileEntity(message.pos); + + if (tile instanceof SecurityManagerTile) { + ((SecurityManagerTile) tile).getNode().updatePermission(message.permission, message.state); + } + }); + } + + ctx.get().setPacketHandled(true); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/screen/SecurityManagerScreen.java similarity index 62% rename from src/main/java/com/raoulvdberge/refinedstorage/screen/GuiSecurityManager.java rename to src/main/java/com/raoulvdberge/refinedstorage/screen/SecurityManagerScreen.java index 43cca0564..5f2fecfbd 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/screen/GuiSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/screen/SecurityManagerScreen.java @@ -3,47 +3,43 @@ package com.raoulvdberge.refinedstorage.screen; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.api.network.security.Permission; import com.raoulvdberge.refinedstorage.container.SecurityManagerContainer; +import com.raoulvdberge.refinedstorage.item.SecurityCardItem; +import com.raoulvdberge.refinedstorage.network.SecurityManagerUpdateMessage; import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; -import com.raoulvdberge.refinedstorage.tile.TileSecurityManager; +import com.raoulvdberge.refinedstorage.tile.SecurityManagerTile; import com.raoulvdberge.refinedstorage.util.RenderUtils; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; import net.minecraftforge.fml.client.config.GuiCheckBox; -public class GuiSecurityManager extends BaseScreen { - private TileSecurityManager securityManager; +public class SecurityManagerScreen extends BaseScreen { + private final SecurityManagerTile securityManager; private GuiCheckBox[] permissions = new GuiCheckBox[Permission.values().length]; - public GuiSecurityManager(SecurityManagerContainer container, TileSecurityManager securityManager, PlayerInventory inventory) { - super(container, 176, 234, inventory, null); + public SecurityManagerScreen(SecurityManagerContainer container, PlayerInventory inventory, ITextComponent title) { + super(container, 176, 234, inventory, title); - this.securityManager = securityManager; + this.securityManager = (SecurityManagerTile) container.getTile(); } @Override public void onPostInit(int x, int y) { - addSideButton(new RedstoneModeSideButton(this, TileSecurityManager.REDSTONE_MODE)); + addSideButton(new RedstoneModeSideButton(this, SecurityManagerTile.REDSTONE_MODE)); int padding = 15; - permissions[0] = addCheckBox(x + 7, y + 93, I18n.format("gui.refinedstorage.security_manager.permission.0"), false, btn -> { - }); + permissions[0] = addCheckBox(x + 7, y + 93, I18n.format("gui.refinedstorage.security_manager.permission.0"), false, btn -> handle(0)); + permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.1"), false, btn -> handle(1)); + permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.2"), false, btn -> handle(2)); + permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, I18n.format("gui.refinedstorage.security_manager.permission.3"), false, btn -> handle(3)); + permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.4"), false, btn -> handle(4)); + permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.5"), false, btn -> handle(5)); + } - permissions[1] = addCheckBox(permissions[0].x, permissions[0].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.1"), false, btn -> { - }); - - permissions[2] = addCheckBox(permissions[1].x, permissions[1].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.2"), false, btn -> { - }); - - permissions[3] = addCheckBox(permissions[0].x + 90, permissions[0].y, I18n.format("gui.refinedstorage.security_manager.permission.3"), false, btn -> { - }); - - permissions[4] = addCheckBox(permissions[3].x, permissions[3].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.4"), false, btn -> { - }); - - permissions[5] = addCheckBox(permissions[4].x, permissions[4].y + padding, I18n.format("gui.refinedstorage.security_manager.permission.5"), false, btn -> { - }); + private void handle(int i) { + RS.NETWORK_HANDLER.sendToServer(new SecurityManagerUpdateMessage(securityManager.getPos(), Permission.values()[i], permissions[i].isChecked())); } @Override @@ -51,22 +47,10 @@ public class GuiSecurityManager extends BaseScreen { ItemStack card = securityManager.getNode().getEditCard().getStackInSlot(0); for (Permission permission : Permission.values()) { - // TODO permissions[permission.getId()].setIsChecked(!card.isEmpty() && ItemSecurityCard.hasPermission(card, permission)); + permissions[permission.getId()].setIsChecked(!card.isEmpty() && SecurityCardItem.hasPermission(card, permission)); } } - /* TODO - @Override - protected void actionPerformed(GuiButton button) throws IOException { - super.actionPerformed(button); - - for (int i = 0; i < permissions.length; ++i) { - if (button == permissions[i]) { - RS.INSTANCE.network.sendToServer(new MessageSecurityManagerUpdate(securityManager, Permission.values()[i], permissions[i].isChecked())); - } - } - }*/ - @Override public void renderBackground(int x, int y, int mouseX, int mouseY) { bindTexture(RS.ID, "gui/security_manager.png"); @@ -76,15 +60,15 @@ public class GuiSecurityManager extends BaseScreen { @Override public void renderForeground(int mouseX, int mouseY) { - renderString(7, 7, I18n.format("gui.refinedstorage:security_manager")); - renderString(7, 59, I18n.format("gui.refinedstorage:security_manager.configure")); + renderString(7, 7, title.getFormattedText()); + renderString(7, 59, I18n.format("gui.refinedstorage.security_manager.configure")); renderString(7, 140, I18n.format("container.inventory")); for (int i = 0; i < permissions.length; ++i) { GuiCheckBox permission = permissions[i]; if (RenderUtils.inBounds(permission.x - guiLeft, permission.y - guiTop, permission.getWidth(), permission.getHeight(), mouseX, mouseY)) { - renderTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage:security_manager.permission." + i + ".tooltip")); + renderTooltip(mouseX, mouseY, I18n.format("gui.refinedstorage.security_manager.permission." + i + ".tooltip")); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/SecurityManagerTile.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/SecurityManagerTile.java new file mode 100644 index 000000000..fef2f12ad --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/SecurityManagerTile.java @@ -0,0 +1,20 @@ +package com.raoulvdberge.refinedstorage.tile; + +import com.raoulvdberge.refinedstorage.RSTiles; +import com.raoulvdberge.refinedstorage.apiimpl.network.node.SecurityManagerNetworkNode; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SecurityManagerTile extends NetworkNodeTile { + public SecurityManagerTile() { + super(RSTiles.SECURITY_MANAGER); + } + + @Override + @Nonnull + public SecurityManagerNetworkNode createNode(World world, BlockPos pos) { + return new SecurityManagerNetworkNode(world, pos); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java deleted file mode 100755 index c3cf199d7..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSecurityManager.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.raoulvdberge.refinedstorage.tile; - -import com.raoulvdberge.refinedstorage.RSTiles; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeSecurityManager; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import javax.annotation.Nonnull; - -public class TileSecurityManager extends NetworkNodeTile { - public TileSecurityManager() { - super(RSTiles.SECURITY_MANAGER); - } - - @Override - @Nonnull - public NetworkNodeSecurityManager createNode(World world, BlockPos pos) { - return new NetworkNodeSecurityManager(world, pos); - } -} diff --git a/src/main/resources/assets/refinedstorage/blockstates/security_manager.json b/src/main/resources/assets/refinedstorage/blockstates/security_manager.json index d0c365eb0..8da28ed9d 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/security_manager.json +++ b/src/main/resources/assets/refinedstorage/blockstates/security_manager.json @@ -1,54 +1,36 @@ { - "forge_marker": 1, - "defaults": { - "model": "refinedstorage:security_manager", - "textures": { - "particle": "refinedstorage:blocks/security_manager/front", - "down": "refinedstorage:blocks/security_manager/bottom", - "up": "refinedstorage:blocks/security_manager/top", - "north": "refinedstorage:blocks/security_manager/front", - "east": "refinedstorage:blocks/security_manager/left", - "south": "refinedstorage:blocks/security_manager/back", - "west": "refinedstorage:blocks/security_manager/right", - "cutout_up": "refinedstorage:blocks/security_manager/cutouts/top_disconnected", - "cutout_north": "refinedstorage:blocks/security_manager/cutouts/front_disconnected", - "cutout_east": "refinedstorage:blocks/security_manager/cutouts/left_disconnected", - "cutout_south": "refinedstorage:blocks/security_manager/cutouts/back_disconnected", - "cutout_west": "refinedstorage:blocks/security_manager/cutouts/right_disconnected" - } - }, "variants": { - "inventory": [ - { - "transform": "forge:default-block" - } - ], - "connected": { - "true": { - "textures": { - "cutout_up": "refinedstorage:blocks/security_manager/cutouts/top_connected", - "cutout_north": "refinedstorage:blocks/security_manager/cutouts/front_connected", - "cutout_east": "refinedstorage:blocks/security_manager/cutouts/left_connected", - "cutout_south": "refinedstorage:blocks/security_manager/cutouts/back_connected", - "cutout_west": "refinedstorage:blocks/security_manager/cutouts/right_connected" - } - }, - "false": { - } + "connected=true,direction=north": { + "model": "refinedstorage:block/security_manager_connected", + "y": 0 }, - "direction": { - "north": { - "y": 0 - }, - "east": { - "y": 90 - }, - "south": { - "y": 180 - }, - "west": { - "y": 270 - } + "connected=true,direction=east": { + "model": "refinedstorage:block/security_manager_connected", + "y": 90 + }, + "connected=true,direction=south": { + "model": "refinedstorage:block/security_manager_connected", + "y": 180 + }, + "connected=true,direction=west": { + "model": "refinedstorage:block/security_manager_connected", + "y": 270 + }, + "connected=false,direction=north": { + "model": "refinedstorage:block/security_manager_disconnected", + "y": 0 + }, + "connected=false,direction=east": { + "model": "refinedstorage:block/security_manager_disconnected", + "y": 90 + }, + "connected=false,direction=south": { + "model": "refinedstorage:block/security_manager_disconnected", + "y": 180 + }, + "connected=false,direction=west": { + "model": "refinedstorage:block/security_manager_disconnected", + "y": 270 } } } \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.json b/src/main/resources/assets/refinedstorage/lang/en_us.json index e0c7a2941..6067e0a4b 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.json +++ b/src/main/resources/assets/refinedstorage/lang/en_us.json @@ -65,16 +65,16 @@ "gui.refinedstorage:crafting_preview.error.recursive.4": "Offending pattern:", "gui.refinedstorage:crafting_preview.error.too_complex.0": "The crafting task calculation was too complex", "gui.refinedstorage:crafting_preview.error.too_complex.1": "and was stopped to avoid server strain.", - "gui.refinedstorage:security_manager": "Security Manager", - "gui.refinedstorage:security_manager.configure": "Configure", + "gui.refinedstorage.security_manager": "Security Manager", + "gui.refinedstorage.security_manager.configure": "Configure", "gui.refinedstorage.security_manager.permission.0": "Insert", - "gui.refinedstorage.security_manager.permission.0.tooltip": "Inserting items to the network", + "gui.refinedstorage.security_manager.permission.0.tooltip": "Inserting items or fluids to the network", "gui.refinedstorage.security_manager.permission.1": "Extract", - "gui.refinedstorage.security_manager.permission.1.tooltip": "Extracting items from the network", + "gui.refinedstorage.security_manager.permission.1.tooltip": "Extracting items or fluids from the network", "gui.refinedstorage.security_manager.permission.2": "Autocrafting", "gui.refinedstorage.security_manager.permission.2.tooltip": "Starting, cancelling and viewing crafting tasks", "gui.refinedstorage.security_manager.permission.3": "Modify", - "gui.refinedstorage.security_manager.permission.3.tooltip": "Opening block GUIs", + "gui.refinedstorage.security_manager.permission.3.tooltip": "Opening blocks", "gui.refinedstorage.security_manager.permission.4": "Build", "gui.refinedstorage.security_manager.permission.4.tooltip": "Adding or removing devices to or from the network", "gui.refinedstorage.security_manager.permission.5": "Security", @@ -208,7 +208,7 @@ "block.refinedstorage.1024k_fluid_storage_block": "1024k Fluid Storage Block", "block.refinedstorage.4096k_fluid_storage_block": "4096k Fluid Storage Block", "block.refinedstorage.creative_fluid_storage_block": "Creative Fluid Storage Block", - "block.refinedstorage:security_manager": "Security Manager", + "block.refinedstorage.security_manager": "Security Manager", "block.refinedstorage.quartz_enriched_iron_block": "Block of Quartz Enriched Iron", "block.refinedstorage:storage_monitor": "Storage Monitor", "block.refinedstorage:portable_grid.0": "Portable Grid", diff --git a/src/main/resources/assets/refinedstorage/models/block/security_manager.json b/src/main/resources/assets/refinedstorage/models/block/security_manager.json index 694697d59..6ea85c9b0 100644 --- a/src/main/resources/assets/refinedstorage/models/block/security_manager.json +++ b/src/main/resources/assets/refinedstorage/models/block/security_manager.json @@ -1,5 +1,14 @@ { "parent": "block/cube", + "textures": { + "particle": "refinedstorage:block/security_manager/front", + "down": "refinedstorage:block/security_manager/bottom", + "up": "refinedstorage:block/security_manager/top", + "north": "refinedstorage:block/security_manager/front", + "east": "refinedstorage:block/security_manager/left", + "south": "refinedstorage:block/security_manager/back", + "west": "refinedstorage:block/security_manager/right" + }, "elements": [ { "from": [ diff --git a/src/main/resources/assets/refinedstorage/models/block/security_manager_connected.json b/src/main/resources/assets/refinedstorage/models/block/security_manager_connected.json new file mode 100644 index 000000000..edf8e7e45 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/security_manager_connected.json @@ -0,0 +1,10 @@ +{ + "parent": "refinedstorage:block/security_manager", + "textures": { + "cutout_up": "refinedstorage:block/security_manager/cutouts/top_connected", + "cutout_north": "refinedstorage:block/security_manager/cutouts/front_connected", + "cutout_east": "refinedstorage:block/security_manager/cutouts/left_connected", + "cutout_south": "refinedstorage:block/security_manager/cutouts/back_connected", + "cutout_west": "refinedstorage:block/security_manager/cutouts/right_connected" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/security_manager_disconnected.json b/src/main/resources/assets/refinedstorage/models/block/security_manager_disconnected.json new file mode 100644 index 000000000..60c88c77d --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/security_manager_disconnected.json @@ -0,0 +1,10 @@ +{ + "parent": "refinedstorage:block/security_manager", + "textures": { + "cutout_up": "refinedstorage:block/security_manager/cutouts/top_disconnected", + "cutout_north": "refinedstorage:block/security_manager/cutouts/front_disconnected", + "cutout_east": "refinedstorage:block/security_manager/cutouts/left_disconnected", + "cutout_south": "refinedstorage:block/security_manager/cutouts/back_disconnected", + "cutout_west": "refinedstorage:block/security_manager/cutouts/right_disconnected" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/item/security_manager.json b/src/main/resources/assets/refinedstorage/models/item/security_manager.json new file mode 100644 index 000000000..75bb7a2eb --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/item/security_manager.json @@ -0,0 +1,3 @@ +{ + "parent": "refinedstorage:block/security_manager_disconnected" +} \ No newline at end of file diff --git a/src/main/resources/data/refinedstorage/loot_tables/blocks/security_manager.json b/src/main/resources/data/refinedstorage/loot_tables/blocks/security_manager.json new file mode 100644 index 000000000..f1c8a7238 --- /dev/null +++ b/src/main/resources/data/refinedstorage/loot_tables/blocks/security_manager.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "refinedstorage:security_manager" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/recipes/security_manager.json b/src/main/resources/data/refinedstorage/recipes/security_manager.json similarity index 87% rename from src/main/resources/assets/refinedstorage/recipes/security_manager.json rename to src/main/resources/data/refinedstorage/recipes/security_manager.json index 967eb3544..67ecfe120 100644 --- a/src/main/resources/assets/refinedstorage/recipes/security_manager.json +++ b/src/main/resources/data/refinedstorage/recipes/security_manager.json @@ -10,8 +10,7 @@ "item": "refinedstorage:quartz_enriched_iron" }, "C": { - "type": "forge:ore_dict", - "ore": "chest" + "tag": "forge:chests" }, "S": { "item": "refinedstorage:security_card"