diff --git a/src/main/java/refinedstorage/block/BlockSolderer.java b/src/main/java/refinedstorage/block/BlockSolderer.java index 3fdaee0a4..ce5f1916b 100755 --- a/src/main/java/refinedstorage/block/BlockSolderer.java +++ b/src/main/java/refinedstorage/block/BlockSolderer.java @@ -1,5 +1,8 @@ package refinedstorage.block; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -7,12 +10,16 @@ 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.IBlockAccess; import net.minecraft.world.World; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageGui; +import refinedstorage.tile.TileDetector; import refinedstorage.tile.TileSolderer; public class BlockSolderer extends BlockMachine { + public static final PropertyBool WORKING = PropertyBool.create("working"); + public BlockSolderer() { super("solderer"); } @@ -30,4 +37,19 @@ public class BlockSolderer extends BlockMachine { return true; } + + @Override + protected BlockStateContainer createBlockState() { + return new BlockStateContainer(this, new IProperty[]{ + DIRECTION, + CONNECTED, + WORKING + }); + } + + @Override + public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { + return super.getActualState(state, world, pos) + .withProperty(WORKING, ((TileSolderer) world.getTileEntity(pos)).isWorking()); + } } diff --git a/src/main/java/refinedstorage/tile/TileSolderer.java b/src/main/java/refinedstorage/tile/TileSolderer.java index cd11045a9..e58cc0144 100755 --- a/src/main/java/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/TileSolderer.java @@ -122,7 +122,6 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven public void receiveContainerData(ByteBuf buf) { super.receiveContainerData(buf); - working = buf.readBoolean(); progress = buf.readInt(); duration = buf.readInt(); } @@ -131,11 +130,30 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven public void sendContainerData(ByteBuf buf) { super.sendContainerData(buf); - buf.writeBoolean(working); buf.writeInt(progress); buf.writeInt(recipe != null ? recipe.getDuration() : 0); } + @Override + public void receiveData(ByteBuf buf) { + super.receiveData(buf); + + boolean lastWorking = working; + + working = buf.readBoolean(); + + if (working != lastWorking) { + worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 2 | 4); + } + } + + @Override + public void sendData(ByteBuf buf) { + super.sendData(buf); + + buf.writeBoolean(working); + } + @Override public Class getContainer() { return ContainerSolderer.class; @@ -145,18 +163,10 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven return working; } - public int getProgress() { - return progress; - } - public int getProgressScaled(int i) { return (int) ((float) progress / (float) duration * (float) i); } - public int getDuration() { - return duration; - } - @Override public IInventory getDroppedInventory() { return inventory; diff --git a/src/main/resources/assets/refinedstorage/blockstates/crafter.json b/src/main/resources/assets/refinedstorage/blockstates/crafter.json index 244b27d5e..1e6f04f88 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/crafter.json +++ b/src/main/resources/assets/refinedstorage/blockstates/crafter.json @@ -1,18 +1,15 @@ { "forge_marker": 1, "defaults": { - "model": "orientable", + "model": "cube_all", "textures": { - "side": "refinedstorage:blocks/side", - "top": "refinedstorage:blocks/side", - "front": "refinedstorage:blocks/crafter" + "all": "refinedstorage:blocks/crafter" } }, "variants": { "inventory": [ { - "transform": "forge:default-block", - "y": 0 + "transform": "forge:default-block" } ], "connected": { @@ -23,22 +20,16 @@ }, "direction": { "north": { - "y": 0 }, "east": { - "y": 90 }, "south": { - "y": 180 }, "west": { - "y": 270 }, "up": { - "x": 270 }, "down": { - "x": 90 } } } diff --git a/src/main/resources/assets/refinedstorage/blockstates/solderer.json b/src/main/resources/assets/refinedstorage/blockstates/solderer.json index f5575de5e..ef1df4fd1 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/solderer.json +++ b/src/main/resources/assets/refinedstorage/blockstates/solderer.json @@ -4,29 +4,30 @@ "model": "orientable", "textures": { "side": "refinedstorage:blocks/side", - "top": "refinedstorage:blocks/side" + "top": "refinedstorage:blocks/side", + "front": "refinedstorage:blocks/solderer" } }, "variants": { "inventory": [ { "y": 0, - "textures": { - "front": "refinedstorage:blocks/solderer_disconnected" - }, "transform": "forge:default-block" } ], "connected": { + "true": { + }, + "false": { + } + }, + "working": { "true": { "textures": { - "front": "refinedstorage:blocks/solderer_connected" + "front": "refinedstorage:blocks/solderer_working" } }, "false": { - "textures": { - "front": "refinedstorage:blocks/solderer_disconnected" - } } }, "direction": { diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/solderer_disconnected.png b/src/main/resources/assets/refinedstorage/textures/blocks/solderer.png similarity index 100% rename from src/main/resources/assets/refinedstorage/textures/blocks/solderer_disconnected.png rename to src/main/resources/assets/refinedstorage/textures/blocks/solderer.png diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/solderer_connected.png b/src/main/resources/assets/refinedstorage/textures/blocks/solderer_working.png similarity index 100% rename from src/main/resources/assets/refinedstorage/textures/blocks/solderer_connected.png rename to src/main/resources/assets/refinedstorage/textures/blocks/solderer_working.png