From d6337717086995b98c3ee2fc7246c6e9dab60c9d Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Fri, 11 Nov 2016 14:31:28 +0100 Subject: [PATCH] Add writer block --- .../raoulvdberge/refinedstorage/RSBlocks.java | 1 + .../refinedstorage/block/BlockWriter.java | 40 +++++++++ .../refinedstorage/proxy/ProxyCommon.java | 2 + .../refinedstorage/tile/TileWriter.java | 86 +++++++++++++++++++ .../assets/refinedstorage/lang/en_US.lang | 2 + 5 files changed, 131 insertions(+) create mode 100755 src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java create mode 100755 src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java index cb610c09b..16329a59e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSBlocks.java @@ -28,4 +28,5 @@ public final class RSBlocks { public static final BlockFluidStorage FLUID_STORAGE = new BlockFluidStorage(); public static final BlockDiskManipulator DISK_MANIPULATOR = new BlockDiskManipulator(); public static final BlockReader READER = new BlockReader(); + public static final BlockWriter WRITER = new BlockWriter(); } \ No newline at end of file diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java new file mode 100755 index 000000000..6a3d1d0f4 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockWriter.java @@ -0,0 +1,40 @@ +package com.raoulvdberge.refinedstorage.block; + +import com.raoulvdberge.refinedstorage.RS; +import com.raoulvdberge.refinedstorage.RSGui; +import com.raoulvdberge.refinedstorage.tile.TileWriter; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class BlockWriter extends BlockNode { + public BlockWriter() { + super("writer"); + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { + if (!world.isRemote) { + player.openGui(RS.INSTANCE, RSGui.READER_WRITER, world, pos.getX(), pos.getY(), pos.getZ()); + + ((TileWriter) world.getTileEntity(pos)).onOpened(player); + } + + return true; + } + + @Override + public TileEntity createTileEntity(World world, IBlockState state) { + return new TileWriter(); + } + + @Override + public EnumPlacementType getPlacementType() { + return EnumPlacementType.ANY; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java index 67dedfece..f3b9f2150 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/proxy/ProxyCommon.java @@ -132,6 +132,7 @@ public class ProxyCommon { registerTile(TileFluidStorage.class, "fluid_storage"); registerTile(TileDiskManipulator.class, "disk_manipulator"); registerTile(TileReader.class, "reader"); + registerTile(TileWriter.class, "writer"); registerBlock(RSBlocks.CONTROLLER); registerBlock(RSBlocks.GRID); @@ -158,6 +159,7 @@ public class ProxyCommon { registerBlock(RSBlocks.NETWORK_RECEIVER); registerBlock(RSBlocks.DISK_MANIPULATOR); registerBlock(RSBlocks.READER); + registerBlock(RSBlocks.WRITER); registerItem(RSItems.QUARTZ_ENRICHED_IRON); registerItem(RSItems.STORAGE_DISK); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java new file mode 100755 index 000000000..75097ed96 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileWriter.java @@ -0,0 +1,86 @@ +package com.raoulvdberge.refinedstorage.tile; + +import com.raoulvdberge.refinedstorage.RSBlocks; +import com.raoulvdberge.refinedstorage.api.network.readerwriter.IWriter; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.util.math.BlockPos; + +public class TileWriter extends TileNode implements IWriter, IReaderWriter { + private int redstoneStrength; + private int lastRedstoneStrength; + + @Override + public int getEnergyUsage() { + return 0; // @TODO + } + + @Override + public void update() { + super.update(); + + if (!worldObj.isRemote && redstoneStrength != lastRedstoneStrength) { + lastRedstoneStrength = redstoneStrength; + + worldObj.notifyNeighborsOfStateChange(pos, RSBlocks.WRITER); + } + } + + @Override + public void updateNode() { + } + + @Override + public int getRedstoneStrength() { + return connected ? redstoneStrength : 0; + } + + @Override + public void setRedstoneStrength(int strength) { + redstoneStrength = strength; + } + + @Override + public boolean hasStackUpgrade() { + return false; // @TODO + } + + @Override + public String getTitle() { + return "gui.refinedstorage:writer"; + } + + @Override + public void onAdd(String name) { + if (network != null && !name.isEmpty()) { + network.addReaderWriterChannel(name); + + network.sendReaderWriterChannelUpdate(); + } + } + + @Override + public void onRemove(String name) { + if (network != null && !name.isEmpty()) { + network.removeReaderWriterChannel(name); + + network.sendReaderWriterChannelUpdate(); + } + } + + @Override + public BlockPos getNetworkPosition() { + return network != null ? network.getPosition() : null; + } + + @Override + public boolean hasConnectivityState() { + return true; + } + + public void onOpened(EntityPlayer entity) { + if (isConnected()) { + network.sendReaderWriterChannelUpdate((EntityPlayerMP) entity); + } + } +} diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 7748ddca3..a3edfc60e 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -53,6 +53,7 @@ gui.refinedstorage:crafting_preview.circular=Circular dependency! gui.refinedstorage:crafting_preview.loop=Loop in processing... gui.refinedstorage:crafting_preview.force_start=Press CTRL + SHIFT to start anyway gui.refinedstorage:reader=Reader +gui.refinedstorage:writer=Writer misc.refinedstorage:energy_stored=%d / %d RS misc.refinedstorage:energy_usage=Usage: %d RS/t @@ -181,6 +182,7 @@ block.refinedstorage:fluid_storage.2.name=256k Fluid Storage Block block.refinedstorage:fluid_storage.3.name=512k Fluid Storage Block block.refinedstorage:fluid_storage.4.name=Creative Fluid Storage Block block.refinedstorage:reader.name=Reader +block.refinedstorage:writer.name=Writer item.refinedstorage:storage_disk.0.name=1k Storage Disk item.refinedstorage:storage_disk.1.name=4k Storage Disk