diff --git a/TODO.txt b/TODO.txt index c8502bd..a764fd9 100644 --- a/TODO.txt +++ b/TODO.txt @@ -44,7 +44,6 @@ materials.ores No Tin materials.ores No Zinc ------------------------------------------------------------------------------------------------------- tech.base No Alloy furnace - -> redstone activation -> make redstone activation configurable -> make output hopper configurable -> comparator signal configuration diff --git a/src/java/mmm/tech/base/TBAlloyFurnaceBlock.java b/src/java/mmm/tech/base/TBAlloyFurnaceBlock.java index 6d9a940..66b0dbc 100644 --- a/src/java/mmm/tech/base/TBAlloyFurnaceBlock.java +++ b/src/java/mmm/tech/base/TBAlloyFurnaceBlock.java @@ -118,17 +118,17 @@ public class TBAlloyFurnaceBlock final TileEntity tileentity = world.getTileEntity( pos ); TBAlloyFurnaceBlock.keepInventory = true; + IBlockState nState; + Block nBlock; if ( burning ) { - world.setBlockState( pos , TechBase.ALLOY_FURNACE_BLOCK_ACTIVE.getDefaultState( ).withProperty( - TBAlloyFurnaceBlock.FACING , iblockstate.getValue( TBAlloyFurnaceBlock.FACING ) ) , 3 ); - world.setBlockState( pos , TechBase.ALLOY_FURNACE_BLOCK_ACTIVE.getDefaultState( ).withProperty( - TBAlloyFurnaceBlock.FACING , iblockstate.getValue( TBAlloyFurnaceBlock.FACING ) ) , 3 ); + nBlock = TechBase.ALLOY_FURNACE_BLOCK_ACTIVE; } else { - world.setBlockState( pos , TechBase.ALLOY_FURNACE_BLOCK_INACTIVE.getDefaultState( ).withProperty( - TBAlloyFurnaceBlock.FACING , iblockstate.getValue( TBAlloyFurnaceBlock.FACING ) ) , 3 ); - world.setBlockState( pos , TechBase.ALLOY_FURNACE_BLOCK_INACTIVE.getDefaultState( ).withProperty( - TBAlloyFurnaceBlock.FACING , iblockstate.getValue( TBAlloyFurnaceBlock.FACING ) ) , 3 ); + nBlock = TechBase.ALLOY_FURNACE_BLOCK_INACTIVE; } + nState = nBlock.getDefaultState( ) // + .withProperty( TBAlloyFurnaceBlock.FACING , iblockstate.getValue( TBAlloyFurnaceBlock.FACING ) ) // + .withProperty( TBAlloyFurnaceBlock.POWERED , iblockstate.getValue( TBAlloyFurnaceBlock.POWERED ) ); + world.setBlockState( pos , nState , 3 ); TBAlloyFurnaceBlock.keepInventory = false; if ( tileentity != null ) { @@ -419,10 +419,13 @@ public class TBAlloyFurnaceBlock { final boolean powered = worldIn.isBlockPowered( pos ); if ( powered != state.getValue( TBAlloyFurnaceBlock.POWERED ).booleanValue( ) ) { - worldIn.setBlockState( pos , - state.withProperty( TBAlloyFurnaceBlock.POWERED , Boolean.valueOf( powered ) ) , 4 ); - System.err.println( pos + " POWERED? " + ( powered ? "yes" : "no" ) ); + worldIn.setBlockState( pos , state.withProperty( TBAlloyFurnaceBlock.POWERED , powered ) , 4 ); } } + + public static boolean isPowered( int meta ) + { + return ( meta & 8 ) == 8; + } } diff --git a/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java b/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java index 88c8764..a82ee5e 100644 --- a/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java +++ b/src/java/mmm/tech/base/TBAlloyFurnaceTileEntity.java @@ -14,6 +14,8 @@ import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; 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.Constants.NBT; import net.minecraftforge.items.CapabilityItemHandler; @@ -56,6 +58,13 @@ public class TBAlloyFurnaceTileEntity } + @Override + public boolean shouldRefresh( World world , BlockPos pos , IBlockState oldState , IBlockState newSate ) + { + return ! ( newSate.getBlock( ) instanceof TBAlloyFurnaceBlock ); + } + + @Override public void readFromNBT( final NBTTagCompound compound ) { @@ -135,7 +144,7 @@ public class TBAlloyFurnaceTileEntity if ( this.burnCurrent == 0 ) { if ( this.alloying != null ) { - if ( !this.startBurning( this.alloyCurrent ) ) { + if ( ! ( this.isEnabled( ) && this.startBurning( this.alloyCurrent ) ) ) { this.cancelAlloying( ); this.burnCurrent = this.burnTotal = 0; } @@ -146,7 +155,7 @@ public class TBAlloyFurnaceTileEntity } - if ( !this.isAlloying( ) && this.canAlloy( ) + if ( this.isEnabled( ) && !this.isAlloying( ) && this.canAlloy( ) && ( this.isBurning( ) || this.startBurning( this.recipe.burnTime ) ) ) { this.startAlloying( ); dirty = true; @@ -164,6 +173,12 @@ public class TBAlloyFurnaceTileEntity } + public boolean isEnabled( ) + { + return !TBAlloyFurnaceBlock.isPowered( this.getBlockMetadata( ) ); + } + + @Override public boolean hasCapability( final Capability< ? > capability , final EnumFacing facing ) {