diff --git a/src/main/java/refinedstorage/RefinedStorage.java b/src/main/java/refinedstorage/RefinedStorage.java index 283812bb9..2999e0a8d 100755 --- a/src/main/java/refinedstorage/RefinedStorage.java +++ b/src/main/java/refinedstorage/RefinedStorage.java @@ -69,6 +69,9 @@ public final class RefinedStorage { public int gridUsage; public int craftingGridUsage; public int patternGridUsage; + public int networkTransmitterUsage; + public float networkTransmitterPerBlockUsage; + public int networkReceiverUsage; public int controllerCapacity; public boolean controllerUsesEnergy; @@ -109,6 +112,9 @@ public final class RefinedStorage { gridUsage = config.getInt("grid", "energy", 2, 0, Integer.MAX_VALUE, "The energy used by Grids"); craftingGridUsage = config.getInt("craftingGrid", "energy", 4, 0, Integer.MAX_VALUE, "The energy used by Crafting Grids"); patternGridUsage = config.getInt("patternGrid", "energy", 3, 0, Integer.MAX_VALUE, "The energy used by Pattern Grids"); + networkTransmitterUsage = config.getInt("networkTransmitter", "energy", 20, 0, Integer.MAX_VALUE, "The base energy used by Network Transmitters"); + networkTransmitterPerBlockUsage = config.getFloat("networkTransmitterPerBlock", "energy", 2, 0, Float.MAX_VALUE, "The additional energy per block that the Network Transmitter uses, gets rounded up"); + networkReceiverUsage = config.getInt("networkReceiver", "energy", 4, 0, Integer.MAX_VALUE, "The energy used by Network Receivers"); controllerCapacity = config.getInt("capacity", "controller", 32000, 0, Integer.MAX_VALUE, "The energy capacity of the Controller"); controllerUsesEnergy = config.getBoolean("usesEnergy", "controller", true, "Whether the Controller uses energy"); diff --git a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java index 39296169b..0dc34b5da 100755 --- a/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java +++ b/src/main/java/refinedstorage/gui/GuiNetworkTransmitter.java @@ -41,7 +41,7 @@ public class GuiNetworkTransmitter extends GuiBase { distance = t("gui.refinedstorage:network_transmitter.distance", networkTransmitter.getDistance()); } - drawString(50, 24, distance); + drawString(51, 24, distance); drawString(7, 42, t("container.inventory")); } } \ No newline at end of file diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 8fcfb9667..01f5c5230 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -482,6 +482,40 @@ public class CommonProxy { 'P', new ItemStack(Items.PAPER), 'H', new ItemStack(Blocks.HOPPER) ); + + // Network Card + GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageItems.NETWORK_CARD), + "EEE", + "PAP", + "EEE", + 'E', new ItemStack(RefinedStorageItems.QUARTZ_ENRICHED_IRON), + 'P', new ItemStack(Items.PAPER), + 'A', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + ); + + // Network Transmitter + GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageBlocks.NETWORK_TRANSMITTER), + "EEE", + "CMD", + "AAA", + 'E', new ItemStack(Items.ENDER_PEARL), + 'C', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'M', new ItemStack(RefinedStorageBlocks.MACHINE_CASING), + 'D', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'A', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + ); + + // Network Receiver + GameRegistry.addShapedRecipe(new ItemStack(RefinedStorageBlocks.NETWORK_RECEIVER), + "AAA", + "CMD", + "EEE", + 'E', new ItemStack(Items.ENDER_PEARL), + 'C', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_CONSTRUCTION), + 'M', new ItemStack(RefinedStorageBlocks.MACHINE_CASING), + 'D', new ItemStack(RefinedStorageItems.CORE, 1, ItemCore.TYPE_DESTRUCTION), + 'A', new ItemStack(RefinedStorageItems.PROCESSOR, 1, ItemProcessor.TYPE_ADVANCED) + ); } public void init(FMLInitializationEvent e) { diff --git a/src/main/java/refinedstorage/tile/TileNetworkReceiver.java b/src/main/java/refinedstorage/tile/TileNetworkReceiver.java index 4bb2c2390..0a4ab0e87 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkReceiver.java +++ b/src/main/java/refinedstorage/tile/TileNetworkReceiver.java @@ -1,6 +1,7 @@ package refinedstorage.tile; import net.minecraft.inventory.Container; +import refinedstorage.RefinedStorage; public class TileNetworkReceiver extends TileNode { @Override @@ -9,7 +10,7 @@ public class TileNetworkReceiver extends TileNode { @Override public int getEnergyUsage() { - return 0; + return RefinedStorage.INSTANCE.networkReceiverUsage; } @Override diff --git a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java index 8b7e3cc61..92b48a8ae 100755 --- a/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java +++ b/src/main/java/refinedstorage/tile/TileNetworkTransmitter.java @@ -5,6 +5,7 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.BlockPos; +import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageItems; import refinedstorage.container.ContainerNetworkTransmitter; import refinedstorage.inventory.ItemHandlerBasic; @@ -24,16 +25,37 @@ public class TileNetworkTransmitter extends TileNode { } else { receiver = ItemNetworkCard.getReceiver(card); } + + if (network != null) { + network.rebuildNodes(); + } } }; private ItemHandlerBasic upgrade = new ItemHandlerBasic(1, this); private BlockPos receiver; + private boolean couldUpdate; + @Override public void updateNode() { } + public void update() { + super.update(); + + if (network != null && couldUpdate != canUpdate()) { + couldUpdate = canUpdate(); + + network.rebuildNodes(); + } + } + + @Override + public boolean canConduct() { + return canUpdate(); + } + @Override public NBTTagCompound write(NBTTagCompound tag) { super.write(tag); @@ -76,7 +98,7 @@ public class TileNetworkTransmitter extends TileNode { @Override public int getEnergyUsage() { - return 0; + return RefinedStorage.INSTANCE.networkTransmitterUsage + (int) Math.ceil(RefinedStorage.INSTANCE.networkTransmitterPerBlockUsage * getDistance()); } @Override diff --git a/src/main/java/refinedstorage/tile/controller/TileController.java b/src/main/java/refinedstorage/tile/controller/TileController.java index a605165be..3ad95afb3 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -46,9 +46,7 @@ import refinedstorage.container.ContainerGrid; import refinedstorage.item.ItemPattern; import refinedstorage.network.MessageGridDelta; import refinedstorage.network.MessageGridUpdate; -import refinedstorage.tile.ISynchronizedContainer; -import refinedstorage.tile.TileBase; -import refinedstorage.tile.TileCrafter; +import refinedstorage.tile.*; import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.RedstoneMode; import refinedstorage.tile.externalstorage.ExternalStorage; @@ -427,6 +425,14 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR newNodesPos.add(node.getPosition()); if (node.canConduct()) { + if (tile instanceof TileNetworkTransmitter) { + BlockPos receiver = ((TileNetworkTransmitter) tile).getReceiver(); + + if (receiver != null && worldObj.getTileEntity(receiver) instanceof TileNetworkReceiver && checked.add(receiver)) { + toCheck.add(receiver); + } + } + for (EnumFacing facing : EnumFacing.VALUES) { BlockPos pos = currentPos.offset(facing);