Finish wireless terminals
| @@ -28,7 +28,7 @@ import java.util.HashMap; | ||||
| import java.util.List; | ||||
|  | ||||
| public class ServerStorage implements ModInitializer { | ||||
|     public static final List<String> moduleList = Arrays.asList("bus", "configuration", "container", "display", "drive", "filtering", "inventory", "pagination", "pcb", "transport", "netherite_upgrade"); | ||||
|     public static final List<String> moduleList = Arrays.asList("bus", "configuration", "container", "display", "drive", "filtering", "inventory", "pagination", "pcb", "transport", "antenna", "radio", "antenna_connector", "modem", "netherite_upgrade"); | ||||
|     public static final List<String> tiers = Arrays.asList("iron", "golden", "diamond", "netherite"); | ||||
|     public static final List<String> materialList = Arrays.asList("pcb", "pcb_substrate", "cpu", "cpu_substrate", "drive_controller", "drive_casing"); | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,8 @@ | ||||
| package systems.brn.serverstorage.blocks; | ||||
|  | ||||
| import eu.pb4.polymer.blocks.api.BlockModelType; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockModel; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; | ||||
| import eu.pb4.polymer.core.api.block.SimplePolymerBlock; | ||||
| import net.minecraft.block.Block; | ||||
| import net.minecraft.block.BlockState; | ||||
| @@ -9,11 +12,14 @@ import net.minecraft.inventory.Inventory; | ||||
| import net.minecraft.item.ItemStack; | ||||
| import net.minecraft.state.StateManager; | ||||
| import net.minecraft.state.property.EnumProperty; | ||||
| import net.minecraft.util.Identifier; | ||||
| import net.minecraft.util.math.BlockPos; | ||||
| import net.minecraft.util.math.Direction; | ||||
| import net.minecraft.world.World; | ||||
| import systems.brn.serverstorage.lib.ConnectionType; | ||||
|  | ||||
| import java.util.HashMap; | ||||
|  | ||||
| public class ConnectedBlock extends SimplePolymerBlock { | ||||
|  | ||||
|     public static final EnumProperty<ConnectionType> NORTH = EnumProperty.of("north", ConnectionType.class); | ||||
| @@ -23,6 +29,39 @@ public class ConnectedBlock extends SimplePolymerBlock { | ||||
|     public static final EnumProperty<ConnectionType> UP = EnumProperty.of("up", ConnectionType.class); | ||||
|     public static final EnumProperty<ConnectionType> DOWN = EnumProperty.of("down", ConnectionType.class); | ||||
|  | ||||
|     // Function to get Y-axis rotation for North, South, East, and West directions | ||||
|     public static int getRotationFromDirection(Direction direction) { | ||||
|         if (direction == Direction.EAST) { | ||||
|             return 90; | ||||
|         } else if (direction == Direction.SOUTH) { | ||||
|             return 180; | ||||
|         } else if (direction == Direction.WEST) { | ||||
|             return 270; | ||||
|         } else { | ||||
|             return 0; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     // Function to get X-axis rotation for Up and Down directions | ||||
|     public static int getXRotationFromDirection(Direction direction) { | ||||
|         if (direction == Direction.UP) { | ||||
|             return 270; | ||||
|         } else if (direction == Direction.DOWN) { | ||||
|             return 90; | ||||
|         } else { | ||||
|             return 0; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static HashMap<Direction, BlockState> generateRotations(Identifier identifier) { | ||||
|         Identifier modelIdentifier = identifier.withPath("block/" + identifier.getPath()); | ||||
|         HashMap<Direction, BlockState> rotations = new HashMap<>(); | ||||
|         for (Direction direction : Direction.values()) { | ||||
|             rotations.put(direction, PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(modelIdentifier, getXRotationFromDirection(direction), getRotationFromDirection(direction)))); | ||||
|         } | ||||
|         return rotations; | ||||
|     } | ||||
|  | ||||
|     public void setDefaultState() { | ||||
|         setDefaultState(getStateManager().getDefaultState() | ||||
|                 .with(NORTH, ConnectionType.NONE) | ||||
| @@ -66,9 +105,9 @@ public class ConnectedBlock extends SimplePolymerBlock { | ||||
|             BlockEntity blockEntity = world.getBlockEntity(neighborPos); | ||||
|             boolean isConnectedToInventory = blockEntity instanceof Inventory; | ||||
|             ConnectionType connectionType = ConnectionType.NONE; | ||||
|             if (isConnectedToBus){ | ||||
|             if (isConnectedToBus) { | ||||
|                 connectionType = ConnectionType.BUS; | ||||
|             } else if (isConnectedToInventory){ | ||||
|             } else if (isConnectedToInventory) { | ||||
|                 connectionType = ConnectionType.INVENTORY; | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| package systems.brn.serverstorage.blocks; | ||||
|  | ||||
| import eu.pb4.polymer.blocks.api.BlockModelType; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockModel; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; | ||||
| import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; | ||||
| import eu.pb4.polymer.core.api.block.PolymerBlockUtils; | ||||
| import net.fabricmc.fabric.api.event.player.UseBlockCallback; | ||||
| @@ -27,24 +24,26 @@ import org.jetbrains.annotations.Nullable; | ||||
| import systems.brn.serverstorage.blockentities.HardDriveContainerBlockEntity; | ||||
| import systems.brn.serverstorage.lib.StorageNetwork; | ||||
|  | ||||
| import java.util.HashMap; | ||||
|  | ||||
| import static systems.brn.serverstorage.ServerStorage.*; | ||||
|  | ||||
| public class HardDriveContainerBlock extends ConnectedBlock implements PolymerTexturedBlock, BlockEntityProvider { | ||||
|  | ||||
|     final Identifier identifier; | ||||
|     public static final DirectionProperty FACING = FacingBlock.FACING; | ||||
|     private final BlockState polymerBlockState; | ||||
|     private final HashMap<Direction, BlockState> rotations; | ||||
|  | ||||
|     public HardDriveContainerBlock(AbstractBlock.Settings settings, Identifier identifier) { | ||||
|         super(settings, Blocks.NOTE_BLOCK); | ||||
|         this.identifier = identifier; | ||||
|         this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); | ||||
|         this.polymerBlockState = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(identifier.withPath("block/" + identifier.getPath()))); | ||||
|         this.rotations = generateRotations(identifier); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPlacementState(ItemPlacementContext ctx) { | ||||
|         return this.getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite()); | ||||
|         return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -55,7 +54,8 @@ public class HardDriveContainerBlock extends ConnectedBlock implements PolymerTe | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPolymerBlockState(BlockState state) { | ||||
|         return this.polymerBlockState; | ||||
|         Direction direction = state.get(FACING); | ||||
|         return rotations.get(direction); | ||||
|     } | ||||
|  | ||||
|     public static void register() { | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| package systems.brn.serverstorage.blocks; | ||||
|  | ||||
| import eu.pb4.polymer.blocks.api.BlockModelType; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockModel; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; | ||||
| import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; | ||||
| import eu.pb4.polymer.core.api.block.PolymerBlockUtils; | ||||
| import eu.pb4.sgui.api.elements.GuiElementBuilder; | ||||
| @@ -35,24 +32,26 @@ import systems.brn.serverstorage.lib.PagedGui; | ||||
| import systems.brn.serverstorage.screens.SearchScreen; | ||||
| import systems.brn.serverstorage.screens.SettingsScreen; | ||||
|  | ||||
| import java.util.HashMap; | ||||
|  | ||||
| import static systems.brn.serverstorage.ServerStorage.*; | ||||
| import static systems.brn.serverstorage.lib.PagedGui.*; | ||||
|  | ||||
| public class InventoryInterfaceBlock extends ConnectedBlock implements PolymerTexturedBlock, BlockEntityProvider { | ||||
|     final Identifier identifier; | ||||
|     public static final DirectionProperty FACING = FacingBlock.FACING; | ||||
|     private final BlockState polymerBlockState; | ||||
|     private final HashMap<Direction, BlockState> rotations; | ||||
|  | ||||
|     public InventoryInterfaceBlock(Settings settings, Identifier identifier) { | ||||
|         super(settings, Blocks.NOTE_BLOCK); | ||||
|         this.identifier = identifier; | ||||
|         this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); | ||||
|         this.polymerBlockState = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(identifier.withPath("block/" + identifier.getPath()))); | ||||
|         this.rotations = generateRotations(identifier); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPlacementState(ItemPlacementContext ctx) { | ||||
|         return this.getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite()); | ||||
|         return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -63,7 +62,8 @@ public class InventoryInterfaceBlock extends ConnectedBlock implements PolymerTe | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPolymerBlockState(BlockState state) { | ||||
|         return this.polymerBlockState; | ||||
|         Direction direction = state.get(FACING); | ||||
|         return rotations.get(direction); | ||||
|     } | ||||
|  | ||||
|     public static void register() { | ||||
| @@ -150,7 +150,7 @@ public class InventoryInterfaceBlock extends ConnectedBlock implements PolymerTe | ||||
|         Block block = state.getBlock(); | ||||
|  | ||||
|         if (block instanceof InventoryInterfaceBlock) { | ||||
|             if (!world.getGameRules().getBoolean(ServerStorage_Interface_Enable)){ | ||||
|             if (!world.getGameRules().getBoolean(ServerStorage_Interface_Enable)) { | ||||
|                 playerEntity.sendMessage(Text.translatable("message.serverstorage.block_disabled"), true); | ||||
|                 return ActionResult.PASS; | ||||
|             } | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| package systems.brn.serverstorage.blocks; | ||||
|  | ||||
| import eu.pb4.polymer.blocks.api.BlockModelType; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockModel; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; | ||||
| import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; | ||||
| import eu.pb4.polymer.core.api.block.PolymerBlockUtils; | ||||
| import net.fabricmc.fabric.api.event.player.UseBlockCallback; | ||||
| @@ -34,6 +31,7 @@ import systems.brn.serverstorage.lib.WirelessTerminalComponents; | ||||
| import systems.brn.serverstorage.screens.RadioBlockPlayerMangementScreen; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.UUID; | ||||
|  | ||||
| @@ -43,18 +41,19 @@ import static systems.brn.serverstorage.lib.Util.removePosition; | ||||
| public class RadioInterfaceBlock extends ConnectedBlock implements PolymerTexturedBlock, BlockEntityProvider { | ||||
|     final Identifier identifier; | ||||
|     public static final DirectionProperty FACING = FacingBlock.FACING; | ||||
|     private final BlockState polymerBlockState; | ||||
|     private final HashMap<Direction, BlockState> rotations; | ||||
|  | ||||
|     public RadioInterfaceBlock(Settings settings, Identifier identifier) { | ||||
|         super(settings, Blocks.NOTE_BLOCK); | ||||
|         this.identifier = identifier; | ||||
|         this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); | ||||
|         this.polymerBlockState = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(identifier.withPath("block/" + identifier.getPath()))); | ||||
|         this.rotations = generateRotations(identifier); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPlacementState(ItemPlacementContext ctx) { | ||||
|         return this.getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite()); | ||||
|         return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -65,7 +64,8 @@ public class RadioInterfaceBlock extends ConnectedBlock implements PolymerTextur | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPolymerBlockState(BlockState state) { | ||||
|         return this.polymerBlockState; | ||||
|         Direction direction = state.get(FACING); | ||||
|         return rotations.get(direction); | ||||
|     } | ||||
|  | ||||
|     public static void register() { | ||||
|   | ||||
| @@ -1,8 +1,5 @@ | ||||
| package systems.brn.serverstorage.blocks; | ||||
|  | ||||
| import eu.pb4.polymer.blocks.api.BlockModelType; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockModel; | ||||
| import eu.pb4.polymer.blocks.api.PolymerBlockResourceUtils; | ||||
| import eu.pb4.polymer.blocks.api.PolymerTexturedBlock; | ||||
| import eu.pb4.polymer.core.api.block.PolymerBlockUtils; | ||||
| import net.fabricmc.fabric.api.event.player.UseBlockCallback; | ||||
| @@ -33,6 +30,7 @@ import org.jetbrains.annotations.Nullable; | ||||
| import systems.brn.serverstorage.blockentities.StorageInterfaceBlockEntity; | ||||
| import systems.brn.serverstorage.screens.StorageScreen; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
|  | ||||
| import static systems.brn.serverstorage.ServerStorage.*; | ||||
| @@ -41,18 +39,18 @@ import static systems.brn.serverstorage.lib.Util.generateBookContent; | ||||
| public class StorageInterfaceBlock extends ConnectedBlock implements PolymerTexturedBlock, BlockEntityProvider { | ||||
|     final Identifier identifier; | ||||
|     public static final DirectionProperty FACING = FacingBlock.FACING; | ||||
|     private final BlockState polymerBlockState; | ||||
|     private final HashMap<Direction, BlockState> rotations; | ||||
|  | ||||
|     public StorageInterfaceBlock(Settings settings, Identifier identifier) { | ||||
|         super(settings, Blocks.NOTE_BLOCK); | ||||
|         this.identifier = identifier; | ||||
|         this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); | ||||
|         this.polymerBlockState = PolymerBlockResourceUtils.requestBlock(BlockModelType.FULL_BLOCK, PolymerBlockModel.of(identifier.withPath("block/" + identifier.getPath()))); | ||||
|         this.rotations = generateRotations(identifier); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPlacementState(ItemPlacementContext ctx) { | ||||
|         return this.getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite()); | ||||
|         return this.getDefaultState().with(FACING, ctx.getPlayerLookDirection().getOpposite()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -63,7 +61,8 @@ public class StorageInterfaceBlock extends ConnectedBlock implements PolymerText | ||||
|  | ||||
|     @Override | ||||
|     public BlockState getPolymerBlockState(BlockState state) { | ||||
|         return this.polymerBlockState; | ||||
|         Direction direction = state.get(FACING); | ||||
|         return rotations.get(direction); | ||||
|     } | ||||
|  | ||||
|     public static void register() { | ||||
|   | ||||
| @@ -1,32 +0,0 @@ | ||||
| { | ||||
|   "multipart": [ | ||||
|     { | ||||
|       "when": { "north": "none", "south": "none", "west": "none", "east": "none", "up": "none", "down": "none" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_blank" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "north": "bus" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_bus_north" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "south": "bus" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_bus_south" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "west": "bus" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_bus_west" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "east": "bus" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_bus_east" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "up": "bus" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_bus_up" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "down": "bus" }, | ||||
|       "apply": { "model": "serverstorage:block/bus_connector_bus_down" } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -1,27 +0,0 @@ | ||||
| { | ||||
|   "variants": { | ||||
|     "facing=down": { | ||||
|       "model": "serverstorage:block/drive_container", | ||||
|       "x": 180 | ||||
|     }, | ||||
|     "facing=east": { | ||||
|       "model": "serverstorage:block/drive_container", | ||||
|       "y": 90 | ||||
|     }, | ||||
|     "facing=north": { | ||||
|       "model": "serverstorage:block/drive_container" | ||||
|     }, | ||||
|     "facing=south": { | ||||
|       "model": "serverstorage:block/drive_container", | ||||
|       "y": 180 | ||||
|     }, | ||||
|     "facing=up": { | ||||
|       "model": "serverstorage:block/drive_container", | ||||
|       "x": 90 | ||||
|     }, | ||||
|     "facing=west": { | ||||
|       "model": "serverstorage:block/drive_container", | ||||
|       "y": 270 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,32 +0,0 @@ | ||||
| { | ||||
|   "multipart": [ | ||||
|     { | ||||
|       "when": { "north": "none", "south": "none", "west": "none", "east": "none", "up": "none", "down": "none" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_blank" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "north": "inventory" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_inventory_north" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "south": "inventory" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_inventory_south" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "west": "inventory" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_inventory_west" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "east": "inventory" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_inventory_east" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "up": "inventory" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_inventory_up" } | ||||
|     }, | ||||
|     { | ||||
|       "when": { "down": "inventory" }, | ||||
|       "apply": { "model": "serverstorage:block/inventory_interface_inventory_down" } | ||||
|     } | ||||
|   ] | ||||
| } | ||||
| @@ -1,26 +0,0 @@ | ||||
| { | ||||
|   "variants": { | ||||
|     "facing=down": { | ||||
|       "model": "serverstorage:block/storage", | ||||
|       "x": 180 | ||||
|     }, | ||||
|     "facing=east": { | ||||
|       "model": "serverstorage:block/storage", | ||||
|       "y": 90 | ||||
|     }, | ||||
|     "facing=north": { | ||||
|       "model": "serverstorage:block/storage" | ||||
|     }, | ||||
|     "facing=south": { | ||||
|       "model": "serverstorage:block/storage", | ||||
|       "y": 180 | ||||
|     }, | ||||
|     "facing=up": { | ||||
|       "model": "serverstorage:block/storage" | ||||
|     }, | ||||
|     "facing=west": { | ||||
|       "model": "serverstorage:block/storage", | ||||
|       "y": 270 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -34,6 +34,10 @@ | ||||
|   "item.serverstorage.module_inventory": "Inventory Module", | ||||
|   "item.serverstorage.module_pagination": "Pagination Module", | ||||
|   "item.serverstorage.module_transport": "Transport Module", | ||||
|   "item.serverstorage.module_antenna": "Antenna Module", | ||||
|   "item.serverstorage.module_radio": "Radio Module", | ||||
|   "item.serverstorage.module_antenna_connector": "Antenna Connector Module", | ||||
|   "item.serverstorage.module_modem": "MoDem Module", | ||||
|   "item.serverstorage.module_netherite_upgrade": "Netherite Upgrade Module", | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,6 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube_all", | ||||
|   "textures": { | ||||
|     "all": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,6 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube_all", | ||||
|   "textures": { | ||||
|     "all": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/bus_connector_bus", | ||||
|     "up": "serverstorage:block/bus_connector_blank", | ||||
|     "north": "serverstorage:block/bus_connector_blank", | ||||
|     "south": "serverstorage:block/bus_connector_blank", | ||||
|     "west": "serverstorage:block/bus_connector_blank", | ||||
|     "east": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/bus_connector_blank", | ||||
|     "up": "serverstorage:block/bus_connector_blank", | ||||
|     "north": "serverstorage:block/bus_connector_blank", | ||||
|     "south": "serverstorage:block/bus_connector_blank", | ||||
|     "west": "serverstorage:block/bus_connector_blank", | ||||
|     "east": "serverstorage:block/bus_connector_bus" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/bus_connector_blank", | ||||
|     "up": "serverstorage:block/bus_connector_blank", | ||||
|     "north": "serverstorage:block/bus_connector_bus", | ||||
|     "south": "serverstorage:block/bus_connector_blank", | ||||
|     "west": "serverstorage:block/bus_connector_blank", | ||||
|     "east": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/bus_connector_blank", | ||||
|     "up": "serverstorage:block/bus_connector_blank", | ||||
|     "north": "serverstorage:block/bus_connector_blank", | ||||
|     "south": "serverstorage:block/bus_connector_bus", | ||||
|     "west": "serverstorage:block/bus_connector_blank", | ||||
|     "east": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/bus_connector_blank", | ||||
|     "up": "serverstorage:block/bus_connector_bus", | ||||
|     "north": "serverstorage:block/bus_connector_blank", | ||||
|     "south": "serverstorage:block/bus_connector_blank", | ||||
|     "west": "serverstorage:block/bus_connector_blank", | ||||
|     "east": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/bus_connector_blank", | ||||
|     "up": "serverstorage:block/bus_connector_blank", | ||||
|     "north": "serverstorage:block/bus_connector_blank", | ||||
|     "south": "serverstorage:block/bus_connector_blank", | ||||
|     "west": "serverstorage:block/bus_connector_bus", | ||||
|     "east": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,6 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube_all", | ||||
|   "textures": { | ||||
|     "all": "serverstorage:block/bus_connector_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,7 +1,11 @@ | ||||
| { | ||||
|   "parent": "block/orientable_vertical", | ||||
|   "parent": "block/orientable", | ||||
|   "textures": { | ||||
|     "front": "serverstorage:block/drive_container_front", | ||||
|     "side": "serverstorage:block/drive_container_side" | ||||
|     "side": "serverstorage:block/drive_container_side", | ||||
|     "top": "serverstorage:block/drive_container_side", | ||||
|     "east": "serverstorage:block/drive_container_side", | ||||
|     "south": "serverstorage:block/drive_container_side", | ||||
|     "west": "serverstorage:block/drive_container_side" | ||||
|   } | ||||
| } | ||||
| @@ -1,6 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube_all", | ||||
|   "textures": { | ||||
|     "all": "serverstorage:block/inventory_interface_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/inventory_interface_inventory", | ||||
|     "up": "serverstorage:block/inventory_interface_blank", | ||||
|     "north": "serverstorage:block/inventory_interface_blank", | ||||
|     "south": "serverstorage:block/inventory_interface_blank", | ||||
|     "west": "serverstorage:block/inventory_interface_blank", | ||||
|     "east": "serverstorage:block/inventory_interface_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/inventory_interface_blank", | ||||
|     "up": "serverstorage:block/inventory_interface_blank", | ||||
|     "north": "serverstorage:block/inventory_interface_blank", | ||||
|     "south": "serverstorage:block/inventory_interface_blank", | ||||
|     "west": "serverstorage:block/inventory_interface_blank", | ||||
|     "east": "serverstorage:block/inventory_interface_inventory" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/inventory_interface_blank", | ||||
|     "up": "serverstorage:block/inventory_interface_blank", | ||||
|     "north": "serverstorage:block/inventory_interface_inventory", | ||||
|     "south": "serverstorage:block/inventory_interface_blank", | ||||
|     "west": "serverstorage:block/inventory_interface_blank", | ||||
|     "east": "serverstorage:block/inventory_interface_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/inventory_interface_blank", | ||||
|     "up": "serverstorage:block/inventory_interface_blank", | ||||
|     "north": "serverstorage:block/inventory_interface_blank", | ||||
|     "south": "serverstorage:block/inventory_interface_inventory", | ||||
|     "west": "serverstorage:block/inventory_interface_blank", | ||||
|     "east": "serverstorage:block/inventory_interface_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/inventory_interface_blank", | ||||
|     "up": "serverstorage:block/inventory_interface_inventory", | ||||
|     "north": "serverstorage:block/inventory_interface_blank", | ||||
|     "south": "serverstorage:block/inventory_interface_blank", | ||||
|     "west": "serverstorage:block/inventory_interface_blank", | ||||
|     "east": "serverstorage:block/inventory_interface_blank" | ||||
|   } | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| { | ||||
|   "parent": "block/cube", | ||||
|   "textures": { | ||||
|     "down": "serverstorage:block/inventory_interface_blank", | ||||
|     "up": "serverstorage:block/inventory_interface_blank", | ||||
|     "north": "serverstorage:block/inventory_interface_blank", | ||||
|     "south": "serverstorage:block/inventory_interface_blank", | ||||
|     "west": "serverstorage:block/inventory_interface_inventory", | ||||
|     "east": "serverstorage:block/inventory_interface_blank" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,11 @@ | ||||
| { | ||||
|   "parent": "block/orientable", | ||||
|   "textures": { | ||||
|     "front": "serverstorage:block/radio_interface_front", | ||||
|     "side": "serverstorage:block/radio_interface_side", | ||||
|     "top": "serverstorage:block/radio_interface_side", | ||||
|     "east": "serverstorage:block/radio_interface_side", | ||||
|     "south": "serverstorage:block/radio_interface_side", | ||||
|     "west": "serverstorage:block/radio_interface_side" | ||||
|   } | ||||
| } | ||||
| @@ -1,3 +1,3 @@ | ||||
| { | ||||
|   "parent": "serverstorage:block/bus_connector_blank" | ||||
|   "parent": "serverstorage:block/bus_connector" | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/diamond_antenna" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/golden_antenna" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/iron_antenna" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/module_antenna" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/module_antenna_connector" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/module_modem" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/module_radio" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/netherite_antenna" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,3 @@ | ||||
| { | ||||
|   "parent": "serverstorage:block/radio_interface" | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "parent": "minecraft:item/handheld", | ||||
|   "textures": { | ||||
|     "layer0": "serverstorage:item/wireless_terminal" | ||||
|   } | ||||
| } | ||||
| After Width: | Height: | Size: 421 B | 
| After Width: | Height: | Size: 657 B | 
| After Width: | Height: | Size: 180 B | 
| After Width: | Height: | Size: 180 B | 
| After Width: | Height: | Size: 180 B | 
| After Width: | Height: | Size: 186 B | 
| After Width: | Height: | Size: 204 B | 
| After Width: | Height: | Size: 200 B | 
| After Width: | Height: | Size: 201 B | 
| After Width: | Height: | Size: 185 B | 
| After Width: | Height: | Size: 670 B | 
| @@ -0,0 +1,18 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     " ##", | ||||
|     "## ", | ||||
|     "#  " | ||||
|   ], | ||||
|   "key": { | ||||
|     "#": { | ||||
|       "item": "minecraft:diamond" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:diamond_antenna", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,18 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     " ##", | ||||
|     "## ", | ||||
|     "#  " | ||||
|   ], | ||||
|   "key": { | ||||
|     "#": { | ||||
|       "item": "minecraft:gold_ingot" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:golden_antenna", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,18 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     " ##", | ||||
|     "## ", | ||||
|     "#  " | ||||
|   ], | ||||
|   "key": { | ||||
|     "#": { | ||||
|       "item": "minecraft:iron_ingot" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:iron_antenna", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,30 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     "RIR", | ||||
|     "SCS", | ||||
|     "GGG" | ||||
|   ], | ||||
|   "key": { | ||||
|     "G": { | ||||
|       "item": "minecraft:gold_nugget" | ||||
|     }, | ||||
|     "R": { | ||||
|       "item": "minecraft:iron_ingot" | ||||
|     }, | ||||
|     "I": { | ||||
|       "item": "minecraft:gold_ingot" | ||||
|     }, | ||||
|     "C": { | ||||
|       "item": "serverstorage:material_cpu" | ||||
|     }, | ||||
|     "S": { | ||||
|       "item": "serverstorage:material_pcb_substrate" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:module_antenna", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,27 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     "RGR", | ||||
|     "SCS", | ||||
|     "GGG" | ||||
|   ], | ||||
|   "key": { | ||||
|     "G": { | ||||
|       "item": "minecraft:gold_nugget" | ||||
|     }, | ||||
|     "R": { | ||||
|       "item": "minecraft:iron_ingot" | ||||
|     }, | ||||
|     "C": { | ||||
|       "item": "serverstorage:material_cpu" | ||||
|     }, | ||||
|     "S": { | ||||
|       "item": "serverstorage:material_pcb_substrate" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:module_antenna_connector", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,27 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     "ICI", | ||||
|     "SCS", | ||||
|     "GGG" | ||||
|   ], | ||||
|   "key": { | ||||
|     "G": { | ||||
|       "item": "minecraft:gold_nugget" | ||||
|     }, | ||||
|     "I": { | ||||
|       "item": "minecraft:gold_ingot" | ||||
|     }, | ||||
|     "C": { | ||||
|       "item": "serverstorage:material_cpu" | ||||
|     }, | ||||
|     "S": { | ||||
|       "item": "serverstorage:material_pcb_substrate" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:module_modem", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,27 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     "CIC", | ||||
|     "SCS", | ||||
|     "GGG" | ||||
|   ], | ||||
|   "key": { | ||||
|     "G": { | ||||
|       "item": "minecraft:gold_nugget" | ||||
|     }, | ||||
|     "I": { | ||||
|       "item": "minecraft:gold_ingot" | ||||
|     }, | ||||
|     "C": { | ||||
|       "item": "serverstorage:material_cpu" | ||||
|     }, | ||||
|     "S": { | ||||
|       "item": "serverstorage:material_pcb_substrate" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:module_radio", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,16 @@ | ||||
| { | ||||
|   "type": "minecraft:smithing_transform", | ||||
|   "addition": { | ||||
|     "item": "minecraft:netherite_ingot" | ||||
|   }, | ||||
|   "base": { | ||||
|     "item": "serverstorage:diamond_antenna" | ||||
|   }, | ||||
|   "result": { | ||||
|     "count": 1, | ||||
|     "id": "serverstorage:netherite_antenna" | ||||
|   }, | ||||
|   "template": { | ||||
|     "item": "serverstorage:module_netherite_upgrade" | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,39 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     "CBH", | ||||
|     "MUG", | ||||
|     "MPF" | ||||
|   ], | ||||
|   "key": { | ||||
|     "P": { | ||||
|       "item": "serverstorage:material_pcb" | ||||
|     }, | ||||
|     "U": { | ||||
|       "item": "serverstorage:material_cpu" | ||||
|     }, | ||||
|     "C": { | ||||
|       "item": "serverstorage:module_radio" | ||||
|     }, | ||||
|     "B": { | ||||
|       "item": "serverstorage:module_bus" | ||||
|     }, | ||||
|     "H": { | ||||
|       "item": "serverstorage:module_antenna_connector" | ||||
|     }, | ||||
|     "M": { | ||||
|       "item": "serverstorage:module_modem" | ||||
|     }, | ||||
|     "G": { | ||||
|       "item": "serverstorage:module_configuration" | ||||
|     }, | ||||
|     "F": { | ||||
|       "item": "serverstorage:module_pagination" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:radio_interface", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,39 @@ | ||||
| { | ||||
|   "type": "minecraft:crafting_shaped", | ||||
|   "category": "misc", | ||||
|   "pattern": [ | ||||
|     "AHM", | ||||
|     "CGF", | ||||
|     "UMP" | ||||
|   ], | ||||
|   "key": { | ||||
|     "P": { | ||||
|       "item": "serverstorage:material_pcb" | ||||
|     }, | ||||
|     "U": { | ||||
|       "item": "serverstorage:material_cpu" | ||||
|     }, | ||||
|     "A": { | ||||
|       "item": "serverstorage:module_antenna" | ||||
|     }, | ||||
|     "C": { | ||||
|       "item": "serverstorage:module_radio" | ||||
|     }, | ||||
|     "H": { | ||||
|       "item": "serverstorage:module_antenna_connector" | ||||
|     }, | ||||
|     "M": { | ||||
|       "item": "serverstorage:module_modem" | ||||
|     }, | ||||
|     "G": { | ||||
|       "item": "serverstorage:module_configuration" | ||||
|     }, | ||||
|     "F": { | ||||
|       "item": "serverstorage:module_pagination" | ||||
|     } | ||||
|   }, | ||||
|   "result": { | ||||
|     "id": "serverstorage:wireless_terminal", | ||||
|     "count": 1 | ||||
|   } | ||||
| } | ||||