use getActualState()!

This commit is contained in:
Raoul Van den Berge
2015-12-26 03:42:55 +01:00
parent 1ee135376d
commit 31315f8602
5 changed files with 28 additions and 37 deletions

View File

@@ -33,6 +33,12 @@ public abstract class BlockBase extends Block
return "block." + StorageCraft.ID + ":" + name; return "block." + StorageCraft.ID + ":" + name;
} }
@Override
public int damageDropped(IBlockState state)
{
return getMetaFromState(state);
}
@Override @Override
public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis) public boolean rotateBlock(World world, BlockPos pos, EnumFacing axis)
{ {

View File

@@ -9,6 +9,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import storagecraft.StorageCraft; import storagecraft.StorageCraft;
import storagecraft.StorageCraftGUI; import storagecraft.StorageCraftGUI;
@@ -35,13 +36,19 @@ public class BlockController extends BlockBase implements ITileEntityProvider
@Override @Override
public IBlockState getStateFromMeta(int meta) public IBlockState getStateFromMeta(int meta)
{ {
return getDefaultState().withProperty(ENERGY, meta); return getDefaultState();
} }
@Override @Override
public int getMetaFromState(IBlockState state) public int getMetaFromState(IBlockState state)
{ {
return ((Integer) state.getValue(ENERGY)); return 0;
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{
return state.withProperty(ENERGY, ((TileController) world.getTileEntity(pos)).getEnergyScaled(15));
} }
@Override @Override
@@ -78,6 +85,6 @@ public class BlockController extends BlockBase implements ITileEntityProvider
@Override @Override
public int getComparatorInputOverride(World world, BlockPos pos) public int getComparatorInputOverride(World world, BlockPos pos)
{ {
return (Integer) world.getBlockState(pos).getValue(ENERGY); return ((TileController) world.getTileEntity(pos)).getEnergyScaled(15);
} }
} }

View File

@@ -55,29 +55,12 @@ public class BlockGrid extends BlockMachine
@Override @Override
public IBlockState getStateFromMeta(int meta) public IBlockState getStateFromMeta(int meta)
{ {
switch (meta) return getDefaultState().withProperty(TYPE, meta == 0 ? EnumGridType.NORMAL : EnumGridType.CRAFTING);
{
case 0:
return getDefaultState().withProperty(CONNECTED, false).withProperty(TYPE, EnumGridType.NORMAL);
case 1:
return getDefaultState().withProperty(CONNECTED, false).withProperty(TYPE, EnumGridType.CRAFTING);
case 2:
return getDefaultState().withProperty(CONNECTED, true).withProperty(TYPE, EnumGridType.NORMAL);
case 3:
return getDefaultState().withProperty(CONNECTED, true).withProperty(TYPE, EnumGridType.CRAFTING);
}
return null;
} }
@Override @Override
public int getMetaFromState(IBlockState state) public int getMetaFromState(IBlockState state)
{ {
if ((Boolean) state.getValue(CONNECTED))
{
return state.getValue(TYPE) == EnumGridType.NORMAL ? 2 : 3;
}
return state.getValue(TYPE) == EnumGridType.NORMAL ? 0 : 1; return state.getValue(TYPE) == EnumGridType.NORMAL ? 0 : 1;
} }

View File

@@ -5,6 +5,9 @@ import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockState; import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.world.IBlockAccess;
import storagecraft.tile.TileMachine;
public abstract class BlockMachine extends BlockBase implements ITileEntityProvider public abstract class BlockMachine extends BlockBase implements ITileEntityProvider
{ {
@@ -13,8 +16,6 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi
public BlockMachine(String name) public BlockMachine(String name)
{ {
super(name); super(name);
setDefaultState(blockState.getBaseState().withProperty(CONNECTED, false));
} }
@Override @Override
@@ -29,12 +30,18 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi
@Override @Override
public IBlockState getStateFromMeta(int meta) public IBlockState getStateFromMeta(int meta)
{ {
return getDefaultState().withProperty(CONNECTED, meta == 1); return getDefaultState();
} }
@Override @Override
public int getMetaFromState(IBlockState state) public int getMetaFromState(IBlockState state)
{ {
return ((Boolean) state.getValue(CONNECTED)) ? 1 : 0; return 0;
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{
return state.withProperty(CONNECTED, ((TileMachine) world.getTileEntity(pos)).isConnected());
} }
} }

View File

@@ -10,8 +10,6 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos; import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import storagecraft.StorageCraftBlocks;
import storagecraft.block.BlockController;
import storagecraft.storage.IStorage; import storagecraft.storage.IStorage;
import storagecraft.storage.IStorageProvider; import storagecraft.storage.IStorageProvider;
import storagecraft.storage.StorageItem; import storagecraft.storage.StorageItem;
@@ -45,8 +43,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
if (!worldObj.isRemote) if (!worldObj.isRemote)
{ {
int lastEnergy = energy.getEnergyStored();
if (ticks % 40 == 0) if (ticks % 40 == 0)
{ {
if (!isActive()) if (!isActive())
@@ -114,14 +110,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
} }
energy.extractEnergy(energyUsage, false); energy.extractEnergy(energyUsage, false);
if (lastEnergy != energy.getEnergyStored())
{
worldObj.setBlockState(pos, worldObj.getBlockState(pos).withProperty(BlockController.ENERGY, getEnergyScaled(15)));
// @TODO: Is this needed?
worldObj.markBlockForUpdate(pos);
worldObj.notifyNeighborsOfStateChange(pos, StorageCraftBlocks.CONTROLLER);
}
} }
} }