Re-add the Security Manager
This commit is contained in:
@@ -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);
|
||||
|
@@ -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 <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) {
|
||||
@@ -226,6 +229,7 @@ public final class RS {
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<NetworkTransmitterContainer, NetworkTransmitterTile>((windowId, inv, tile) -> new NetworkTransmitterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "network_transmitter"));
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<RelayContainer, RelayTile>((windowId, inv, tile) -> new RelayContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "relay"));
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<DetectorContainer, DetectorTile>((windowId, inv, tile) -> new DetectorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "detector"));
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<SecurityManagerContainer, SecurityManagerTile>((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
|
||||
|
@@ -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();
|
||||
|
@@ -29,6 +29,8 @@ public final class RSContainers {
|
||||
public static final ContainerType<StorageContainer> STORAGE_BLOCK = null;
|
||||
@ObjectHolder(RS.ID + ":fluid_storage_block")
|
||||
public static final ContainerType<FluidStorageContainer> FLUID_STORAGE_BLOCK = null;
|
||||
@ObjectHolder(RS.ID + ":security_manager")
|
||||
public static final ContainerType<SecurityManagerContainer> SECURITY_MANAGER = null;
|
||||
|
||||
//@ObjectHolder(RS.ID + ":crafter")
|
||||
public static final ContainerType<CrafterContainer> CRAFTER = null;
|
||||
@@ -46,8 +48,6 @@ public final class RSContainers {
|
||||
public static final ContainerType<FluidInterfaceContainer> FLUID_INTERFACE = null;
|
||||
//@ObjectHolder(RS.ID + ":interface")
|
||||
public static final ContainerType<ImporterContainer> INTERFACE = null;
|
||||
//@ObjectHolder(RS.ID + ":security_manager")
|
||||
public static final ContainerType<SecurityManagerContainer> SECURITY_MANAGER = null;
|
||||
//@ObjectHolder(RS.ID + ":storage_monitor")
|
||||
public static final ContainerType<StorageMonitorContainer> STORAGE_MONITOR = null;
|
||||
//@ObjectHolder(RS.ID + ":wireless_transmitter")
|
||||
|
@@ -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
|
||||
|
@@ -58,15 +58,15 @@ public class RSTiles {
|
||||
public static final TileEntityType<FluidStorageTile> FOUR_THOUSAND_NINETY_SIX_K_FLUID_STORAGE_BLOCK = null;
|
||||
@ObjectHolder(RS.ID + ":creative_fluid_storage_block")
|
||||
public static final TileEntityType<FluidStorageTile> CREATIVE_FLUID_STORAGE_BLOCK = null;
|
||||
@ObjectHolder(RS.ID + ":security_manager")
|
||||
public static final TileEntityType<SecurityManagerTile> SECURITY_MANAGER = null;
|
||||
|
||||
//@ObjectHolder(RS.ID + ":portable_grid")
|
||||
public static final TileEntityType<TilePortableGrid> PORTABLE_GRID = null;
|
||||
//@ObjectHolder(RS.ID + ":security_manager")
|
||||
public static final TileEntityType<TileSecurityManager> SECURITY_MANAGER = null;
|
||||
//@ObjectHolder(RS.ID + ":storage_monitor")
|
||||
public static final TileEntityType<TileStorageMonitor> STORAGE_MONITOR = null;
|
||||
//@ObjectHolder(RS.ID + ":wireless_transmitter")
|
||||
public static final TileEntityType<TileSecurityManager> WIRELESS_TRANSMITTER = null;
|
||||
public static final TileEntityType<SecurityManagerTile> WIRELESS_TRANSMITTER = null;
|
||||
//@ObjectHolder(RS.ID + ":interface")
|
||||
public static final TileEntityType<ImporterTile> INTERFACE = null;
|
||||
//@ObjectHolder(RS.ID + ":fluid_interface")
|
||||
|
@@ -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<ISecurityCard> 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();
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
|
@@ -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<SecurityManagerTile>(
|
||||
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;
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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<MessageSecurityManagerUpdate> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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) {
|
||||
|
@@ -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<NetworkEvent.Context> 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);
|
||||
}
|
||||
}
|
@@ -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<SecurityManagerContainer> {
|
||||
private TileSecurityManager securityManager;
|
||||
public class SecurityManagerScreen extends BaseScreen<SecurityManagerContainer> {
|
||||
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<SecurityManagerContainer> {
|
||||
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<SecurityManagerContainer> {
|
||||
|
||||
@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"));
|
||||
}
|
||||
}
|
||||
}
|
@@ -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<SecurityManagerNetworkNode> {
|
||||
public SecurityManagerTile() {
|
||||
super(RSTiles.SECURITY_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public SecurityManagerNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new SecurityManagerNetworkNode(world, pos);
|
||||
}
|
||||
}
|
@@ -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<NetworkNodeSecurityManager> {
|
||||
public TileSecurityManager() {
|
||||
super(RSTiles.SECURITY_MANAGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public NetworkNodeSecurityManager createNode(World world, BlockPos pos) {
|
||||
return new NetworkNodeSecurityManager(world, pos);
|
||||
}
|
||||
}
|
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
@@ -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",
|
||||
|
@@ -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": [
|
||||
|
@@ -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"
|
||||
}
|
||||
}
|
@@ -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"
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/security_manager_disconnected"
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "refinedstorage:security_manager"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -10,8 +10,7 @@
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
||||
},
|
||||
"C": {
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "chest"
|
||||
"tag": "forge:chests"
|
||||
},
|
||||
"S": {
|
||||
"item": "refinedstorage:security_card"
|
Reference in New Issue
Block a user