Re-add the Network Transmitter
This commit is contained in:
		| @@ -67,6 +67,11 @@ public class ClientSetup { | |||||||
|             new ResourceLocation(RS.ID, "block/network_receiver/cutouts/connected") |             new ResourceLocation(RS.ID, "block/network_receiver/cutouts/connected") | ||||||
|         )); |         )); | ||||||
|  |  | ||||||
|  |         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, "pattern"), (base, registry) -> new PatternBakedModel(base)); |         bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base)); | ||||||
|  |  | ||||||
|         bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel( |         bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "disk_drive"), (base, registry) -> new FullbrightBakedModel( | ||||||
| @@ -128,6 +133,7 @@ public class ClientSetup { | |||||||
|         ScreenManager.registerFactory(RSContainers.EXTERNAL_STORAGE, ExternalStorageScreen::new); |         ScreenManager.registerFactory(RSContainers.EXTERNAL_STORAGE, ExternalStorageScreen::new); | ||||||
|         ScreenManager.registerFactory(RSContainers.IMPORTER, ImporterScreen::new); |         ScreenManager.registerFactory(RSContainers.IMPORTER, ImporterScreen::new); | ||||||
|         ScreenManager.registerFactory(RSContainers.EXPORTER, ExporterScreen::new); |         ScreenManager.registerFactory(RSContainers.EXPORTER, ExporterScreen::new); | ||||||
|  |         ScreenManager.registerFactory(RSContainers.NETWORK_TRANSMITTER, NetworkTransmitterScreen::new); | ||||||
|  |  | ||||||
|         ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); |         ClientRegistry.registerKeyBinding(RSKeyBindings.FOCUS_SEARCH_BAR); | ||||||
|         ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); |         ClientRegistry.registerKeyBinding(RSKeyBindings.CLEAR_GRID_CRAFTING_MATRIX); | ||||||
|   | |||||||
| @@ -116,6 +116,7 @@ public final class RS { | |||||||
|         API.instance().getNetworkNodeRegistry().add(ImporterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ImporterNetworkNode(world, pos))); |         API.instance().getNetworkNodeRegistry().add(ImporterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ImporterNetworkNode(world, pos))); | ||||||
|         API.instance().getNetworkNodeRegistry().add(ExporterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ExporterNetworkNode(world, pos))); |         API.instance().getNetworkNodeRegistry().add(ExporterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new ExporterNetworkNode(world, pos))); | ||||||
|         API.instance().getNetworkNodeRegistry().add(NetworkReceiverNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new NetworkReceiverNetworkNode(world, pos))); |         API.instance().getNetworkNodeRegistry().add(NetworkReceiverNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new NetworkReceiverNetworkNode(world, pos))); | ||||||
|  |         API.instance().getNetworkNodeRegistry().add(NetworkTransmitterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new NetworkTransmitterNetworkNode(world, pos))); | ||||||
|  |  | ||||||
|         API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); |         API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory()); | ||||||
|  |  | ||||||
| @@ -161,6 +162,7 @@ public final class RS { | |||||||
|         e.getRegistry().register(new ImporterBlock()); |         e.getRegistry().register(new ImporterBlock()); | ||||||
|         e.getRegistry().register(new ExporterBlock()); |         e.getRegistry().register(new ExporterBlock()); | ||||||
|         e.getRegistry().register(new NetworkReceiverBlock()); |         e.getRegistry().register(new NetworkReceiverBlock()); | ||||||
|  |         e.getRegistry().register(new NetworkTransmitterBlock()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SubscribeEvent |     @SubscribeEvent | ||||||
| @@ -190,6 +192,7 @@ public final class RS { | |||||||
|         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ImporterTile::new, RSBlocks.IMPORTER).build(null).setRegistryName(RS.ID, "importer"))); |         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ImporterTile::new, RSBlocks.IMPORTER).build(null).setRegistryName(RS.ID, "importer"))); | ||||||
|         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ExporterTile::new, RSBlocks.EXPORTER).build(null).setRegistryName(RS.ID, "exporter"))); |         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(ExporterTile::new, RSBlocks.EXPORTER).build(null).setRegistryName(RS.ID, "exporter"))); | ||||||
|         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(NetworkReceiverTile::new, RSBlocks.NETWORK_RECEIVER).build(null).setRegistryName(RS.ID, "network_receiver"))); |         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(NetworkReceiverTile::new, RSBlocks.NETWORK_RECEIVER).build(null).setRegistryName(RS.ID, "network_receiver"))); | ||||||
|  |         e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(NetworkTransmitterTile::new, RSBlocks.NETWORK_TRANSMITTER).build(null).setRegistryName(RS.ID, "network_transmitter"))); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) { |     private <T extends TileEntity> TileEntityType<T> registerTileDataParameters(TileEntityType<T> t) { | ||||||
| @@ -211,6 +214,7 @@ public final class RS { | |||||||
|         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ExternalStorageContainer, ExternalStorageTile>((windowId, inv, tile) -> new ExternalStorageContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "external_storage")); |         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ExternalStorageContainer, ExternalStorageTile>((windowId, inv, tile) -> new ExternalStorageContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "external_storage")); | ||||||
|         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ImporterContainer, ImporterTile>((windowId, inv, tile) -> new ImporterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "importer")); |         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ImporterContainer, ImporterTile>((windowId, inv, tile) -> new ImporterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "importer")); | ||||||
|         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ExporterContainer, ExporterTile>((windowId, inv, tile) -> new ExporterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "exporter")); |         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<ExporterContainer, ExporterTile>((windowId, inv, tile) -> new ExporterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "exporter")); | ||||||
|  |         e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<NetworkTransmitterContainer, NetworkTransmitterTile>((windowId, inv, tile) -> new NetworkTransmitterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "network_transmitter")); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SubscribeEvent |     @SubscribeEvent | ||||||
| @@ -282,6 +286,7 @@ public final class RS { | |||||||
|         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.IMPORTER)); |         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.IMPORTER)); | ||||||
|         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.EXPORTER)); |         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.EXPORTER)); | ||||||
|         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_RECEIVER)); |         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_RECEIVER)); | ||||||
|  |         e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.NETWORK_TRANSMITTER)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /* TODO |     /* TODO | ||||||
|   | |||||||
| @@ -18,8 +18,9 @@ public final class RSBlocks { | |||||||
|     public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor(); |     public static final BlockCraftingMonitor CRAFTING_MONITOR = new BlockCraftingMonitor(); | ||||||
|     public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); |     public static final BlockWirelessTransmitter WIRELESS_TRANSMITTER = new BlockWirelessTransmitter(); | ||||||
|     public static final BlockCrafter CRAFTER = new BlockCrafter(); |     public static final BlockCrafter CRAFTER = new BlockCrafter(); | ||||||
|     public static final BlockNetworkTransmitter NETWORK_TRANSMITTER = new BlockNetworkTransmitter(); |  | ||||||
|  |  | ||||||
|  |     @ObjectHolder(RS.ID + ":network_transmitter") | ||||||
|  |     public static final NetworkTransmitterBlock NETWORK_TRANSMITTER = null; | ||||||
|     @ObjectHolder(RS.ID + ":network_receiver") |     @ObjectHolder(RS.ID + ":network_receiver") | ||||||
|     public static final NetworkReceiverBlock NETWORK_RECEIVER = null; |     public static final NetworkReceiverBlock NETWORK_RECEIVER = null; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -45,8 +45,10 @@ public final class RSContainers { | |||||||
|  |  | ||||||
|     //@ObjectHolder(RS.ID + ":interface") |     //@ObjectHolder(RS.ID + ":interface") | ||||||
|     public static final ContainerType<ImporterContainer> INTERFACE = null; |     public static final ContainerType<ImporterContainer> INTERFACE = null; | ||||||
|     //@ObjectHolder(RS.ID + ":network_transmitter") |  | ||||||
|  |     @ObjectHolder(RS.ID + ":network_transmitter") | ||||||
|     public static final ContainerType<NetworkTransmitterContainer> NETWORK_TRANSMITTER = null; |     public static final ContainerType<NetworkTransmitterContainer> NETWORK_TRANSMITTER = null; | ||||||
|  |  | ||||||
|     //@ObjectHolder(RS.ID + ":relay") |     //@ObjectHolder(RS.ID + ":relay") | ||||||
|     public static final ContainerType<RelayContainer> RELAY = null; |     public static final ContainerType<RelayContainer> RELAY = null; | ||||||
|     //@ObjectHolder(RS.ID + ":security_manager") |     //@ObjectHolder(RS.ID + ":security_manager") | ||||||
|   | |||||||
| @@ -13,7 +13,6 @@ public class RSOldConfig { | |||||||
|     public int fluidInterfaceUsage; |     public int fluidInterfaceUsage; | ||||||
|     public int relayUsage; |     public int relayUsage; | ||||||
|     public int wirelessTransmitterUsage; |     public int wirelessTransmitterUsage; | ||||||
|     public int networkTransmitterUsage; |  | ||||||
|     public int diskManipulatorUsage; |     public int diskManipulatorUsage; | ||||||
|     public int securityManagerUsage; |     public int securityManagerUsage; | ||||||
|     public int securityManagerPerSecurityCardUsage; |     public int securityManagerPerSecurityCardUsage; | ||||||
| @@ -83,7 +82,6 @@ public class RSOldConfig { | |||||||
|         fluidInterfaceUsage = config.getInt("fluidInterface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Fluid Interfaces"); |         fluidInterfaceUsage = config.getInt("fluidInterface", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Fluid Interfaces"); | ||||||
|         relayUsage = config.getInt("relay", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Relays"); |         relayUsage = config.getInt("relay", ENERGY, 1, 0, Integer.MAX_VALUE, "The energy used by Relays"); | ||||||
|         wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters"); |         wirelessTransmitterUsage = config.getInt("wirelessTransmitter", ENERGY, 8, 0, Integer.MAX_VALUE, "The energy used by Wireless Transmitters"); | ||||||
|         networkTransmitterUsage = config.getInt("networkTransmitter", ENERGY, 64, 0, Integer.MAX_VALUE, "The energy used by Network Transmitters"); |  | ||||||
|         diskManipulatorUsage = config.getInt("diskManipulator", ENERGY, 3, 0, Integer.MAX_VALUE, "The energy used by Disk Manipulators"); |         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"); |         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"); |         securityManagerPerSecurityCardUsage = config.getInt("securityManagerPerSecurityCard", ENERGY, 10, 0, Integer.MAX_VALUE, "The additional energy used by Security Cards in Security Managers"); | ||||||
|   | |||||||
| @@ -57,9 +57,9 @@ public class RSTiles { | |||||||
|  |  | ||||||
|     //@ObjectHolder(RS.ID + ":interface") |     //@ObjectHolder(RS.ID + ":interface") | ||||||
|     public static final TileEntityType<ImporterTile> INTERFACE = null; |     public static final TileEntityType<ImporterTile> INTERFACE = null; | ||||||
|     //@ObjectHolder(RS.ID + ":network_transmitter") |  | ||||||
|     public static final TileEntityType<TileNetworkTransmitter> NETWORK_TRANSMITTER = null; |  | ||||||
|  |  | ||||||
|  |     @ObjectHolder(RS.ID + ":network_transmitter") | ||||||
|  |     public static final TileEntityType<NetworkTransmitterTile> NETWORK_TRANSMITTER = null; | ||||||
|     @ObjectHolder(RS.ID + ":network_receiver") |     @ObjectHolder(RS.ID + ":network_receiver") | ||||||
|     public static final TileEntityType<NetworkReceiverTile> NETWORK_RECEIVER = null; |     public static final TileEntityType<NetworkReceiverTile> NETWORK_RECEIVER = null; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -72,6 +72,7 @@ public abstract class NetworkNode implements INetworkNode, INetworkNodeVisitor { | |||||||
|     @Nonnull |     @Nonnull | ||||||
|     @Override |     @Override | ||||||
|     public ItemStack getItemStack() { |     public ItemStack getItemStack() { | ||||||
|  |         // TODO This doesn't work crossdim. | ||||||
|         return new ItemStack(Item.BLOCK_TO_ITEM.get(world.getBlockState(pos).getBlock()), 1); |         return new ItemStack(Item.BLOCK_TO_ITEM.get(world.getBlockState(pos).getBlock()), 1); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,17 +6,19 @@ import com.raoulvdberge.refinedstorage.api.util.Action; | |||||||
| import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; | import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler; | ||||||
| import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator; | import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator; | ||||||
| import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; | import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener; | ||||||
|  | import com.raoulvdberge.refinedstorage.item.NetworkCardItem; | ||||||
| import com.raoulvdberge.refinedstorage.util.StackUtils; | import com.raoulvdberge.refinedstorage.util.StackUtils; | ||||||
| import net.minecraft.item.ItemStack; | import net.minecraft.item.ItemStack; | ||||||
| import net.minecraft.nbt.CompoundNBT; | import net.minecraft.nbt.CompoundNBT; | ||||||
| import net.minecraft.util.ResourceLocation; | import net.minecraft.util.ResourceLocation; | ||||||
| import net.minecraft.util.math.BlockPos; | import net.minecraft.util.math.BlockPos; | ||||||
| import net.minecraft.world.World; | import net.minecraft.world.World; | ||||||
|  | import net.minecraft.world.dimension.DimensionType; | ||||||
| import net.minecraftforge.items.IItemHandler; | import net.minecraftforge.items.IItemHandler; | ||||||
| 
 | 
 | ||||||
| import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||||
| 
 | 
 | ||||||
| public class NetworkNodeNetworkTransmitter extends NetworkNode { | public class NetworkTransmitterNetworkNode extends NetworkNode { | ||||||
|     public static final ResourceLocation ID = new ResourceLocation(RS.ID, "network_transmitter"); |     public static final ResourceLocation ID = new ResourceLocation(RS.ID, "network_transmitter"); | ||||||
| 
 | 
 | ||||||
|     private BaseItemHandler networkCard = new BaseItemHandler(1) |     private BaseItemHandler networkCard = new BaseItemHandler(1) | ||||||
| @@ -27,9 +29,10 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { | |||||||
| 
 | 
 | ||||||
|             if (card.isEmpty()) { |             if (card.isEmpty()) { | ||||||
|                 receiver = null; |                 receiver = null; | ||||||
|  |                 receiverDimension = null; | ||||||
|             } else { |             } else { | ||||||
|                 // TODO receiver = ItemNetworkCard.getReceiver(card); |                 receiver = NetworkCardItem.getReceiver(card); | ||||||
|                 // TODO receiverDimension = ItemNetworkCard.getDimension(card); |                 receiverDimension = NetworkCardItem.getDimension(card); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if (network != null) { |             if (network != null) { | ||||||
| @@ -38,9 +41,9 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { | |||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|     private BlockPos receiver; |     private BlockPos receiver; | ||||||
|     private int receiverDimension; |     private DimensionType receiverDimension; | ||||||
| 
 | 
 | ||||||
|     public NetworkNodeNetworkTransmitter(World world, BlockPos pos) { |     public NetworkTransmitterNetworkNode(World world, BlockPos pos) { | ||||||
|         super(world, pos); |         super(world, pos); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @@ -67,7 +70,7 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { | |||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public int getEnergyUsage() { |     public int getEnergyUsage() { | ||||||
|         return RS.INSTANCE.config.networkTransmitterUsage; |         return RS.SERVER_CONFIG.getNetworkTransmitter().getUsage(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public BaseItemHandler getNetworkCard() { |     public BaseItemHandler getNetworkCard() { | ||||||
| @@ -84,24 +87,25 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { | |||||||
|         return receiver; |         return receiver; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public int getReceiverDimension() { |     @Nullable | ||||||
|  |     public DimensionType getReceiverDimension() { | ||||||
|         return receiverDimension; |         return receiverDimension; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public int getDistance() { |     public int getDistance() { | ||||||
|         if (receiver == null) { |         if (receiver == null || receiverDimension == null || !isSameDimension()) { | ||||||
|             return 0; |             return -1; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return (int) Math.sqrt(Math.pow(pos.getX() - receiver.getX(), 2) + Math.pow(pos.getY() - receiver.getY(), 2) + Math.pow(pos.getZ() - receiver.getZ(), 2)); |         return (int) Math.sqrt(Math.pow(pos.getX() - receiver.getX(), 2) + Math.pow(pos.getY() - receiver.getY(), 2) + Math.pow(pos.getZ() - receiver.getZ(), 2)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public boolean isSameDimension() { |     public boolean isSameDimension() { | ||||||
|         return world.getDimension().getType().getId() == receiverDimension; |         return world.getDimension().getType() == receiverDimension; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private boolean canTransmit() { |     private boolean canTransmit() { | ||||||
|         return canUpdate() && receiver != null; |         return canUpdate() && receiver != null && receiverDimension != null; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
| @@ -115,15 +119,18 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode { | |||||||
| 
 | 
 | ||||||
|         if (canTransmit()) { |         if (canTransmit()) { | ||||||
|             if (!isSameDimension()) { |             if (!isSameDimension()) { | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
| 
 | 
 | ||||||
| // TODO                final World dimensionWorld = DimensionManager.getWorld(receiverDimension); |             // TODO if (!isSameDimension()) { | ||||||
|  |             //    World dimensionWorld = DimensionManager.getWorld(world.getServer(), receiverDimension, true, true); | ||||||
| 
 | 
 | ||||||
|             //if (dimensionWorld != null) { |             //if (dimensionWorld != null) { | ||||||
|             //        operator.apply(dimensionWorld, receiver, null); |             //        operator.apply(dimensionWorld, receiver, null); | ||||||
|             //    } |             //    } | ||||||
|             } else { |             //} else { | ||||||
|                 operator.apply(world, receiver, null); |                 operator.apply(world, receiver, null); | ||||||
|             } |             //} | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -1,34 +0,0 @@ | |||||||
| package com.raoulvdberge.refinedstorage.block; |  | ||||||
|  |  | ||||||
| import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; |  | ||||||
| import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter; |  | ||||||
|  |  | ||||||
| public class BlockNetworkTransmitter extends BlockNode { |  | ||||||
|     public BlockNetworkTransmitter() { |  | ||||||
|         super(BlockInfoBuilder.forId("network_transmitter").tileEntity(TileNetworkTransmitter::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/network_transmitter/cutouts/connected")); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public BlockRenderLayer getRenderLayer() { |  | ||||||
|         return BlockRenderLayer.CUTOUT; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) { |  | ||||||
|         return openNetworkGui(RSGui.NETWORK_TRANSMITTER, player, world, pos, side); |  | ||||||
|     }*/ |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public boolean hasConnectedState() { |  | ||||||
|         return true; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -0,0 +1,64 @@ | |||||||
|  | package com.raoulvdberge.refinedstorage.block; | ||||||
|  |  | ||||||
|  | import com.raoulvdberge.refinedstorage.RS; | ||||||
|  | import com.raoulvdberge.refinedstorage.container.NetworkTransmitterContainer; | ||||||
|  | import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerProvider; | ||||||
|  | import com.raoulvdberge.refinedstorage.tile.NetworkTransmitterTile; | ||||||
|  | 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 NetworkTransmitterBlock extends NodeBlock { | ||||||
|  |     public NetworkTransmitterBlock() { | ||||||
|  |         super(BlockUtils.DEFAULT_ROCK_PROPERTIES); | ||||||
|  |  | ||||||
|  |         this.setRegistryName(RS.ID, "network_transmitter"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public BlockRenderLayer getRenderLayer() { | ||||||
|  |         return BlockRenderLayer.CUTOUT; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Nullable | ||||||
|  |     @Override | ||||||
|  |     public TileEntity createTileEntity(BlockState state, IBlockReader world) { | ||||||
|  |         return new NetworkTransmitterTile(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @SuppressWarnings("deprecation") | ||||||
|  |     public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { | ||||||
|  |         if (!world.isRemote) { | ||||||
|  |             return NetworkUtils.attemptModify(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui( | ||||||
|  |                 (ServerPlayerEntity) player, | ||||||
|  |                 new PositionalTileContainerProvider<NetworkTransmitterTile>( | ||||||
|  |                     new TranslationTextComponent("gui.refinedstorage.network_transmitter"), | ||||||
|  |                     (tile, windowId, inventory, p) -> new NetworkTransmitterContainer(tile, player, windowId), | ||||||
|  |                     pos | ||||||
|  |                 ), | ||||||
|  |                 pos | ||||||
|  |             )); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public boolean hasConnectedState() { | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -16,6 +16,7 @@ public class ServerConfig { | |||||||
|     private Importer importer; |     private Importer importer; | ||||||
|     private Exporter exporter; |     private Exporter exporter; | ||||||
|     private NetworkReceiver networkReceiver; |     private NetworkReceiver networkReceiver; | ||||||
|  |     private NetworkTransmitter networkTransmitter; | ||||||
|     private Upgrades upgrades; |     private Upgrades upgrades; | ||||||
|  |  | ||||||
|     public ServerConfig() { |     public ServerConfig() { | ||||||
| @@ -29,6 +30,7 @@ public class ServerConfig { | |||||||
|         importer = new Importer(); |         importer = new Importer(); | ||||||
|         exporter = new Exporter(); |         exporter = new Exporter(); | ||||||
|         networkReceiver = new NetworkReceiver(); |         networkReceiver = new NetworkReceiver(); | ||||||
|  |         networkTransmitter = new NetworkTransmitter(); | ||||||
|         upgrades = new Upgrades(); |         upgrades = new Upgrades(); | ||||||
|  |  | ||||||
|         spec = builder.build(); |         spec = builder.build(); | ||||||
| @@ -78,6 +80,10 @@ public class ServerConfig { | |||||||
|         return networkReceiver; |         return networkReceiver; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public NetworkTransmitter getNetworkTransmitter() { | ||||||
|  |         return networkTransmitter; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public ForgeConfigSpec getSpec() { |     public ForgeConfigSpec getSpec() { | ||||||
|         return spec; |         return spec; | ||||||
|     } |     } | ||||||
| @@ -389,4 +395,20 @@ public class ServerConfig { | |||||||
|             return usage.get(); |             return usage.get(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public class NetworkTransmitter { | ||||||
|  |         private final ForgeConfigSpec.IntValue usage; | ||||||
|  |  | ||||||
|  |         public NetworkTransmitter() { | ||||||
|  |             builder.push("networkTransmitter"); | ||||||
|  |  | ||||||
|  |             usage = builder.comment("The energy used by the Network Transmitter").defineInRange("usage", 64, 0, Integer.MAX_VALUE); | ||||||
|  |  | ||||||
|  |             builder.pop(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public int getUsage() { | ||||||
|  |             return usage.get(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,12 +1,12 @@ | |||||||
| package com.raoulvdberge.refinedstorage.container; | package com.raoulvdberge.refinedstorage.container; | ||||||
|  |  | ||||||
| import com.raoulvdberge.refinedstorage.RSContainers; | import com.raoulvdberge.refinedstorage.RSContainers; | ||||||
| import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter; | import com.raoulvdberge.refinedstorage.tile.NetworkTransmitterTile; | ||||||
| import net.minecraft.entity.player.PlayerEntity; | import net.minecraft.entity.player.PlayerEntity; | ||||||
| import net.minecraftforge.items.SlotItemHandler; | import net.minecraftforge.items.SlotItemHandler; | ||||||
|  |  | ||||||
| public class NetworkTransmitterContainer extends BaseContainer { | public class NetworkTransmitterContainer extends BaseContainer { | ||||||
|     public NetworkTransmitterContainer(TileNetworkTransmitter networkTransmitter, PlayerEntity player, int windowId) { |     public NetworkTransmitterContainer(NetworkTransmitterTile networkTransmitter, PlayerEntity player, int windowId) { | ||||||
|         super(RSContainers.NETWORK_TRANSMITTER, networkTransmitter, player, windowId); |         super(RSContainers.NETWORK_TRANSMITTER, networkTransmitter, player, windowId); | ||||||
|  |  | ||||||
|         addSlot(new SlotItemHandler(networkTransmitter.getNode().getNetworkCard(), 0, 8, 20)); |         addSlot(new SlotItemHandler(networkTransmitter.getNode().getNetworkCard(), 0, 8, 20)); | ||||||
|   | |||||||
| @@ -1,54 +0,0 @@ | |||||||
| package com.raoulvdberge.refinedstorage.screen; |  | ||||||
|  |  | ||||||
| import com.raoulvdberge.refinedstorage.RS; |  | ||||||
| import com.raoulvdberge.refinedstorage.container.NetworkTransmitterContainer; |  | ||||||
| import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; |  | ||||||
| import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter; |  | ||||||
| import net.minecraft.client.resources.I18n; |  | ||||||
| import net.minecraft.entity.player.PlayerInventory; |  | ||||||
|  |  | ||||||
| public class GuiNetworkTransmitter extends BaseScreen<NetworkTransmitterContainer> { |  | ||||||
|     private TileNetworkTransmitter networkTransmitter; |  | ||||||
|  |  | ||||||
|     public GuiNetworkTransmitter(NetworkTransmitterContainer container, TileNetworkTransmitter networkTransmitter, PlayerInventory inventory) { |  | ||||||
|         super(container, 176, 137, inventory, null); |  | ||||||
|  |  | ||||||
|         this.networkTransmitter = networkTransmitter; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void onPostInit(int x, int y) { |  | ||||||
|         addSideButton(new RedstoneModeSideButton(this, TileNetworkTransmitter.REDSTONE_MODE)); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void tick(int x, int y) { |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void renderBackground(int x, int y, int mouseX, int mouseY) { |  | ||||||
|         bindTexture(RS.ID, "gui/network_transmitter.png"); |  | ||||||
|  |  | ||||||
|         blit(x, y, 0, 0, xSize, ySize); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public void renderForeground(int mouseX, int mouseY) { |  | ||||||
|         renderString(7, 7, I18n.format("gui.refinedstorage:network_transmitter")); |  | ||||||
|  |  | ||||||
|         String distance; |  | ||||||
|  |  | ||||||
|         if (networkTransmitter.getNode().getNetworkCard().getStackInSlot(0).isEmpty()) { |  | ||||||
|             distance = I18n.format("gui.refinedstorage:network_transmitter.missing_card"); |  | ||||||
|         } else if (TileNetworkTransmitter.RECEIVER_DIMENSION.getValue() != networkTransmitter.getWorld().getDimension().getType().getId()) { |  | ||||||
|             distance = I18n.format("gui.refinedstorage:network_transmitter.dimension", TileNetworkTransmitter.RECEIVER_DIMENSION.getValue()); |  | ||||||
|         } else if (TileNetworkTransmitter.DISTANCE.getValue() != -1) { |  | ||||||
|             distance = I18n.format("gui.refinedstorage:network_transmitter.distance", TileNetworkTransmitter.DISTANCE.getValue()); |  | ||||||
|         } else { |  | ||||||
|             distance = I18n.format("gui.refinedstorage:network_transmitter.missing_card"); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         renderString(51, 24, distance); |  | ||||||
|         renderString(7, 42, I18n.format("container.inventory")); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -0,0 +1,55 @@ | |||||||
|  | package com.raoulvdberge.refinedstorage.screen; | ||||||
|  |  | ||||||
|  | import com.raoulvdberge.refinedstorage.RS; | ||||||
|  | import com.raoulvdberge.refinedstorage.container.NetworkTransmitterContainer; | ||||||
|  | import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton; | ||||||
|  | import com.raoulvdberge.refinedstorage.tile.NetworkTransmitterTile; | ||||||
|  | import net.minecraft.client.resources.I18n; | ||||||
|  | import net.minecraft.entity.player.PlayerInventory; | ||||||
|  | import net.minecraft.util.ResourceLocation; | ||||||
|  | import net.minecraft.util.text.ITextComponent; | ||||||
|  |  | ||||||
|  | import java.util.Optional; | ||||||
|  |  | ||||||
|  | public class NetworkTransmitterScreen extends BaseScreen<NetworkTransmitterContainer> { | ||||||
|  |     public NetworkTransmitterScreen(NetworkTransmitterContainer container, PlayerInventory inventory, ITextComponent title) { | ||||||
|  |         super(container, 176, 137, inventory, title); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void onPostInit(int x, int y) { | ||||||
|  |         addSideButton(new RedstoneModeSideButton(this, NetworkTransmitterTile.REDSTONE_MODE)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void tick(int x, int y) { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void renderBackground(int x, int y, int mouseX, int mouseY) { | ||||||
|  |         bindTexture(RS.ID, "gui/network_transmitter.png"); | ||||||
|  |  | ||||||
|  |         blit(x, y, 0, 0, xSize, ySize); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void renderForeground(int mouseX, int mouseY) { | ||||||
|  |         renderString(7, 7, title.getFormattedText()); | ||||||
|  |  | ||||||
|  |         String text; | ||||||
|  |  | ||||||
|  |         Optional<ResourceLocation> receiverDim = NetworkTransmitterTile.RECEIVER_DIMENSION.getValue(); | ||||||
|  |         int distance = NetworkTransmitterTile.DISTANCE.getValue(); | ||||||
|  |  | ||||||
|  |         if (!receiverDim.isPresent()) { | ||||||
|  |             text = I18n.format("gui.refinedstorage.network_transmitter.missing_card"); | ||||||
|  |         } else if (distance != -1) { | ||||||
|  |             text = I18n.format("gui.refinedstorage.network_transmitter.distance", distance); | ||||||
|  |         } else { | ||||||
|  |             text = receiverDim.get().toString(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         renderString(51, 24, text); | ||||||
|  |         renderString(7, 42, I18n.format("container.inventory")); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,55 @@ | |||||||
|  | package com.raoulvdberge.refinedstorage.tile; | ||||||
|  |  | ||||||
|  | import com.raoulvdberge.refinedstorage.RSTiles; | ||||||
|  | import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkTransmitterNetworkNode; | ||||||
|  | import com.raoulvdberge.refinedstorage.tile.data.RSSerializers; | ||||||
|  | import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; | ||||||
|  | import net.minecraft.network.datasync.DataSerializers; | ||||||
|  | import net.minecraft.util.Direction; | ||||||
|  | import net.minecraft.util.ResourceLocation; | ||||||
|  | import net.minecraft.util.math.BlockPos; | ||||||
|  | import net.minecraft.world.World; | ||||||
|  | import net.minecraftforge.common.capabilities.Capability; | ||||||
|  | import net.minecraftforge.common.util.LazyOptional; | ||||||
|  | import net.minecraftforge.items.CapabilityItemHandler; | ||||||
|  | import net.minecraftforge.items.IItemHandler; | ||||||
|  |  | ||||||
|  | import javax.annotation.Nonnull; | ||||||
|  | import javax.annotation.Nullable; | ||||||
|  | import java.util.Optional; | ||||||
|  |  | ||||||
|  | public class NetworkTransmitterTile extends NetworkNodeTile<NetworkTransmitterNetworkNode> { | ||||||
|  |     public static final TileDataParameter<Integer, NetworkTransmitterTile> DISTANCE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getDistance()); | ||||||
|  |     public static final TileDataParameter<Optional<ResourceLocation>, NetworkTransmitterTile> RECEIVER_DIMENSION = new TileDataParameter<>(RSSerializers.OPTIONAL_RESOURCE_LOCATION_SERIALIZER, Optional.empty(), t -> { | ||||||
|  |         if (t.getNode().getReceiverDimension() != null) { | ||||||
|  |             return Optional.of(t.getNode().getReceiverDimension().getRegistryName()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return Optional.empty(); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     private LazyOptional<IItemHandler> networkCardCapability = LazyOptional.of(() -> getNode().getNetworkCard()); | ||||||
|  |  | ||||||
|  |     public NetworkTransmitterTile() { | ||||||
|  |         super(RSTiles.NETWORK_TRANSMITTER); | ||||||
|  |  | ||||||
|  |         dataManager.addWatchedParameter(DISTANCE); | ||||||
|  |         dataManager.addWatchedParameter(RECEIVER_DIMENSION); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Nonnull | ||||||
|  |     public NetworkTransmitterNetworkNode createNode(World world, BlockPos pos) { | ||||||
|  |         return new NetworkTransmitterNetworkNode(world, pos); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Nonnull | ||||||
|  |     @Override | ||||||
|  |     public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction direction) { | ||||||
|  |         if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { | ||||||
|  |             return networkCardCapability.cast(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return super.getCapability(cap, direction); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,48 +0,0 @@ | |||||||
| package com.raoulvdberge.refinedstorage.tile; |  | ||||||
|  |  | ||||||
| import com.raoulvdberge.refinedstorage.RSTiles; |  | ||||||
| import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeNetworkTransmitter; |  | ||||||
| import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; |  | ||||||
| import net.minecraft.network.datasync.DataSerializers; |  | ||||||
| import net.minecraft.util.math.BlockPos; |  | ||||||
| import net.minecraft.world.World; |  | ||||||
|  |  | ||||||
| import javax.annotation.Nonnull; |  | ||||||
|  |  | ||||||
| public class TileNetworkTransmitter extends NetworkNodeTile<NetworkNodeNetworkTransmitter> { |  | ||||||
|     public static final TileDataParameter<Integer, TileNetworkTransmitter> DISTANCE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> { |  | ||||||
|         NetworkNodeNetworkTransmitter transmitter = t.getNode(); |  | ||||||
|  |  | ||||||
|         return (transmitter.getReceiver() != null && transmitter.isSameDimension()) ? transmitter.getDistance() : -1; |  | ||||||
|     }); |  | ||||||
|     // TODO Use dim here instead? |  | ||||||
|     public static final TileDataParameter<Integer, TileNetworkTransmitter> RECEIVER_DIMENSION = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getReceiverDimension()); |  | ||||||
|  |  | ||||||
|     public TileNetworkTransmitter() { |  | ||||||
|         super(RSTiles.NETWORK_TRANSMITTER); |  | ||||||
|  |  | ||||||
|         dataManager.addWatchedParameter(DISTANCE); |  | ||||||
|         dataManager.addWatchedParameter(RECEIVER_DIMENSION); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     @Nonnull |  | ||||||
|     public NetworkNodeNetworkTransmitter createNode(World world, BlockPos pos) { |  | ||||||
|         return new NetworkNodeNetworkTransmitter(world, pos); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /* TODO |  | ||||||
|     @Override |  | ||||||
|     public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable Direction facing) { |  | ||||||
|         return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable Direction facing) { |  | ||||||
|         if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { |  | ||||||
|             return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getNetworkCard()); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         return super.getCapability(capability, facing); |  | ||||||
|     }*/ |  | ||||||
| } |  | ||||||
| @@ -6,10 +6,12 @@ import com.raoulvdberge.refinedstorage.util.AccessTypeUtils; | |||||||
| import net.minecraft.network.PacketBuffer; | import net.minecraft.network.PacketBuffer; | ||||||
| import net.minecraft.network.datasync.DataParameter; | import net.minecraft.network.datasync.DataParameter; | ||||||
| import net.minecraft.network.datasync.IDataSerializer; | import net.minecraft.network.datasync.IDataSerializer; | ||||||
|  | import net.minecraft.util.ResourceLocation; | ||||||
| import net.minecraftforge.fluids.FluidStack; | import net.minecraftforge.fluids.FluidStack; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.Optional; | ||||||
|  |  | ||||||
| public final class RSSerializers { | public final class RSSerializers { | ||||||
|     public static final IDataSerializer<List<ClientNode>> CLIENT_NODE_SERIALIZER = new IDataSerializer<List<ClientNode>>() { |     public static final IDataSerializer<List<ClientNode>> CLIENT_NODE_SERIALIZER = new IDataSerializer<List<ClientNode>>() { | ||||||
| @@ -113,4 +115,32 @@ public final class RSSerializers { | |||||||
|             return value; |             return value; | ||||||
|         } |         } | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  |     public static final IDataSerializer<Optional<ResourceLocation>> OPTIONAL_RESOURCE_LOCATION_SERIALIZER = new IDataSerializer<Optional<ResourceLocation>>() { | ||||||
|  |         @Override | ||||||
|  |         public void write(PacketBuffer buf, Optional<ResourceLocation> value) { | ||||||
|  |             buf.writeBoolean(value.isPresent()); | ||||||
|  |  | ||||||
|  |             value.ifPresent(buf::writeResourceLocation); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @Override | ||||||
|  |         public Optional<ResourceLocation> read(PacketBuffer buf) { | ||||||
|  |             if (!buf.readBoolean()) { | ||||||
|  |                 return Optional.empty(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             return Optional.of(buf.readResourceLocation()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @Override | ||||||
|  |         public DataParameter<Optional<ResourceLocation>> createKey(int id) { | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @Override | ||||||
|  |         public Optional<ResourceLocation> copyValue(Optional<ResourceLocation> value) { | ||||||
|  |             return value; | ||||||
|  |         } | ||||||
|  |     }; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,27 +1,10 @@ | |||||||
| { | { | ||||||
|   "forge_marker": 1, |  | ||||||
|   "defaults": { |  | ||||||
|     "model": "refinedstorage:cube_all_cutout", |  | ||||||
|     "textures": { |  | ||||||
|       "particle": "refinedstorage:blocks/network_transmitter/network_transmitter", |  | ||||||
|       "all": "refinedstorage:blocks/network_transmitter/network_transmitter", |  | ||||||
|       "cutout": "refinedstorage:blocks/network_transmitter/cutouts/disconnected" |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "variants": { |   "variants": { | ||||||
|     "inventory": [ |     "connected=true": { | ||||||
|       { |       "model": "refinedstorage:block/network_transmitter_connected" | ||||||
|         "transform": "forge:default-block" |  | ||||||
|       } |  | ||||||
|     ], |  | ||||||
|     "connected": { |  | ||||||
|       "true": { |  | ||||||
|         "textures": { |  | ||||||
|           "cutout": "refinedstorage:blocks/network_transmitter/cutouts/connected" |  | ||||||
|         } |  | ||||||
|     }, |     }, | ||||||
|       "false": { |     "connected=false": { | ||||||
|       } |       "model": "refinedstorage:block/network_transmitter_disconnected" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @@ -47,10 +47,9 @@ | |||||||
|   "gui.refinedstorage.filter": "Filter", |   "gui.refinedstorage.filter": "Filter", | ||||||
|   "gui.refinedstorage.filter.compare_nbt": "NBT", |   "gui.refinedstorage.filter.compare_nbt": "NBT", | ||||||
|   "gui.refinedstorage.filter.mod_filter": "Mod filter", |   "gui.refinedstorage.filter.mod_filter": "Mod filter", | ||||||
|   "gui.refinedstorage:network_transmitter": "Network Transmitter", |   "gui.refinedstorage.network_transmitter": "Network Transmitter", | ||||||
|   "gui.refinedstorage:network_transmitter.distance": "%d block(s)", |   "gui.refinedstorage.network_transmitter.distance": "%d block(s)", | ||||||
|   "gui.refinedstorage:network_transmitter.dimension": "Dimension %d", |   "gui.refinedstorage.network_transmitter.missing_card": "Missing Network Card", | ||||||
|   "gui.refinedstorage:network_transmitter.missing_card": "Missing Network Card", |  | ||||||
|   "gui.refinedstorage:fluid_interface": "Fluid Interface", |   "gui.refinedstorage:fluid_interface": "Fluid Interface", | ||||||
|   "gui.refinedstorage:fluid_interface.in": "In", |   "gui.refinedstorage:fluid_interface.in": "In", | ||||||
|   "gui.refinedstorage:fluid_interface.out": "Out", |   "gui.refinedstorage:fluid_interface.out": "Out", | ||||||
| @@ -202,7 +201,7 @@ | |||||||
|   "block.refinedstorage:wireless_transmitter.tooltip": "Must be placed on %s.", |   "block.refinedstorage:wireless_transmitter.tooltip": "Must be placed on %s.", | ||||||
|   "block.refinedstorage:crafter": "Crafter", |   "block.refinedstorage:crafter": "Crafter", | ||||||
|   "block.refinedstorage.network_receiver": "Network Receiver", |   "block.refinedstorage.network_receiver": "Network Receiver", | ||||||
|   "block.refinedstorage:network_transmitter": "Network Transmitter", |   "block.refinedstorage.network_transmitter": "Network Transmitter", | ||||||
|   "block.refinedstorage:fluid_interface": "Fluid Interface", |   "block.refinedstorage:fluid_interface": "Fluid Interface", | ||||||
|   "block.refinedstorage.64k_fluid_storage_block": "64k Fluid Storage Block", |   "block.refinedstorage.64k_fluid_storage_block": "64k Fluid Storage Block", | ||||||
|   "block.refinedstorage.256k_fluid_storage_block": "256k Fluid Storage Block", |   "block.refinedstorage.256k_fluid_storage_block": "256k Fluid Storage Block", | ||||||
|   | |||||||
| @@ -0,0 +1,8 @@ | |||||||
|  | { | ||||||
|  |   "parent": "refinedstorage:block/cube_all_cutout", | ||||||
|  |   "textures": { | ||||||
|  |     "particle": "refinedstorage:block/network_transmitter/network_transmitter", | ||||||
|  |     "all": "refinedstorage:block/network_transmitter/network_transmitter", | ||||||
|  |     "cutout": "refinedstorage:block/network_transmitter/cutouts/connected" | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -0,0 +1,8 @@ | |||||||
|  | { | ||||||
|  |   "parent": "refinedstorage:block/cube_all_cutout", | ||||||
|  |   "textures": { | ||||||
|  |     "particle": "refinedstorage:block/network_transmitter/network_transmitter", | ||||||
|  |     "all": "refinedstorage:block/network_transmitter/network_transmitter", | ||||||
|  |     "cutout": "refinedstorage:block/network_transmitter/cutouts/disconnected" | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | { | ||||||
|  |   "parent": "refinedstorage:block/network_transmitter_disconnected" | ||||||
|  | } | ||||||
| @@ -0,0 +1,19 @@ | |||||||
|  | { | ||||||
|  |   "type": "minecraft:block", | ||||||
|  |   "pools": [ | ||||||
|  |     { | ||||||
|  |       "rolls": 1, | ||||||
|  |       "entries": [ | ||||||
|  |         { | ||||||
|  |           "type": "minecraft:item", | ||||||
|  |           "name": "refinedstorage:network_transmitter" | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       "conditions": [ | ||||||
|  |         { | ||||||
|  |           "condition": "minecraft:survives_explosion" | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | } | ||||||
| @@ -7,19 +7,19 @@ | |||||||
|   ], |   ], | ||||||
|   "key": { |   "key": { | ||||||
|     "E": { |     "E": { | ||||||
|       "item": "minecraft:ender_pearl" |       "tag": "forge:ender_pearls" | ||||||
|     }, |     }, | ||||||
|     "C": { |     "C": { | ||||||
|       "item": "#construction_core" |       "item": "refinedstorage:construction_core" | ||||||
|     }, |     }, | ||||||
|     "M": { |     "M": { | ||||||
|       "item": "refinedstorage:machine_casing" |       "item": "refinedstorage:machine_casing" | ||||||
|     }, |     }, | ||||||
|     "D": { |     "D": { | ||||||
|       "item": "#destruction_core" |       "item": "refinedstorage:destruction_core" | ||||||
|     }, |     }, | ||||||
|     "A": { |     "A": { | ||||||
|       "item": "#advanced_processor" |       "item": "refinedstorage:advanced_processor" | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "result": { |   "result": { | ||||||
		Reference in New Issue
	
	Block a user
	 raoulvdberge
					raoulvdberge