diff --git a/src/main/java/storagecraft/block/BlockWirelessTransmitter.java b/src/main/java/storagecraft/block/BlockWirelessTransmitter.java index df2625bf8..1eb26a242 100644 --- a/src/main/java/storagecraft/block/BlockWirelessTransmitter.java +++ b/src/main/java/storagecraft/block/BlockWirelessTransmitter.java @@ -1,14 +1,22 @@ package storagecraft.block; import net.minecraft.block.ITileEntityProvider; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import storagecraft.StorageCraft; import storagecraft.tile.TileWirelessTransmitter; public class BlockWirelessTransmitter extends BlockBase implements ITileEntityProvider { + private IIcon icon; + private IIcon workingIcon; + private IIcon sideIcon; + private IIcon workingSideIcon; + public BlockWirelessTransmitter() { super("wirelessTransmitter"); @@ -30,4 +38,37 @@ public class BlockWirelessTransmitter extends BlockBase implements ITileEntityPr { return new TileWirelessTransmitter(); } + + @Override + public void registerBlockIcons(IIconRegister register) + { + icon = register.registerIcon("storagecraft:wirelessTransmitter"); + workingIcon = register.registerIcon("storagecraft:wirelessTransmitterWorking"); + sideIcon = register.registerIcon("storagecraft:wirelessTransmitterSide"); + workingSideIcon = register.registerIcon("storagecraft:wirelessTransmitterSideWorking"); + } + + @Override + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) + { + TileWirelessTransmitter tile = (TileWirelessTransmitter) world.getTileEntity(x, y, z); + + if (side == tile.getDirection().ordinal()) + { + return tile.isWorking() ? workingIcon : icon; + } + + return tile.isWorking() ? workingSideIcon : sideIcon; + } + + @Override + public IIcon getIcon(int side, int damage) + { + if (side == 3) + { + return icon; + } + + return sideIcon; + } } diff --git a/src/main/java/storagecraft/container/ContainerWirelessTransmitter.java b/src/main/java/storagecraft/container/ContainerWirelessTransmitter.java index 3b33b7ca3..d19113605 100644 --- a/src/main/java/storagecraft/container/ContainerWirelessTransmitter.java +++ b/src/main/java/storagecraft/container/ContainerWirelessTransmitter.java @@ -2,6 +2,8 @@ package storagecraft.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; import storagecraft.StorageCraftItems; import storagecraft.container.slot.SlotItemFilter; import storagecraft.container.slot.SlotOutput; @@ -13,10 +15,46 @@ public class ContainerWirelessTransmitter extends ContainerBase { super(player); - addPlayerInventory(8, 55); - addSlotToContainer(new SlotItemFilter(wirelessTransmitter, 0, 8, 20, Items.ender_pearl)); addSlotToContainer(new SlotItemFilter(wirelessTransmitter, 1, 101, 20, StorageCraftItems.WIRELESS_GRID)); addSlotToContainer(new SlotOutput(wirelessTransmitter, 2, 152, 20)); + + addPlayerInventory(8, 55); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) + { + ItemStack stack = null; + + Slot slot = getSlot(index); + + if (slot != null && slot.getHasStack()) + { + stack = slot.getStack().copy(); + + if (index < 3) + { + if (!mergeItemStack(stack, 3, inventorySlots.size(), true)) + { + return null; + } + } + else if (!mergeItemStack(stack, 0, 3, false)) + { + return null; + } + + if (stack.stackSize == 0) + { + slot.putStack(null); + } + else + { + slot.onSlotChanged(); + } + } + + return stack; } } diff --git a/src/main/java/storagecraft/tile/TileSolderer.java b/src/main/java/storagecraft/tile/TileSolderer.java index 816cf6d5e..25771bd2a 100644 --- a/src/main/java/storagecraft/tile/TileSolderer.java +++ b/src/main/java/storagecraft/tile/TileSolderer.java @@ -21,7 +21,7 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven private InventorySimple inventory = new InventorySimple("solderer", 4); private ISoldererRecipe recipe; private boolean working = false; - private int progress; + private int progress = 0; @SideOnly(Side.CLIENT) private int duration; diff --git a/src/main/java/storagecraft/tile/TileWirelessTransmitter.java b/src/main/java/storagecraft/tile/TileWirelessTransmitter.java index 1e7b2b606..c2f15f8eb 100644 --- a/src/main/java/storagecraft/tile/TileWirelessTransmitter.java +++ b/src/main/java/storagecraft/tile/TileWirelessTransmitter.java @@ -18,7 +18,7 @@ public class TileWirelessTransmitter extends TileMachine implements IInventory private InventorySimple inventory = new InventorySimple("wirelessTransmitter", 3); - private boolean working; + private boolean working = false; private int progress = 0; @Override @@ -212,8 +212,15 @@ public class TileWirelessTransmitter extends TileMachine implements IInventory { super.fromBytes(buf); + boolean lastWorking = working; + working = buf.readBoolean(); progress = buf.readInt(); + + if (lastWorking != working) + { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } } @Override diff --git a/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitter.png b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitter.png new file mode 100644 index 000000000..c2ed3bfd8 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitter.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterSide.png b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterSide.png new file mode 100644 index 000000000..54842d1b6 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterSide.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterSideWorking.png b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterSideWorking.png new file mode 100644 index 000000000..c75f63813 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterSideWorking.png differ diff --git a/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterWorking.png b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterWorking.png new file mode 100644 index 000000000..ea3fefb05 Binary files /dev/null and b/src/main/resources/assets/storagecraft/textures/blocks/wirelessTransmitterWorking.png differ