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;
}
@Override
public int damageDropped(IBlockState state)
{
return getMetaFromState(state);
}
@Override
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.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import storagecraft.StorageCraft;
import storagecraft.StorageCraftGUI;
@@ -35,13 +36,19 @@ public class BlockController extends BlockBase implements ITileEntityProvider
@Override
public IBlockState getStateFromMeta(int meta)
{
return getDefaultState().withProperty(ENERGY, meta);
return getDefaultState();
}
@Override
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
@@ -78,6 +85,6 @@ public class BlockController extends BlockBase implements ITileEntityProvider
@Override
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
public IBlockState getStateFromMeta(int meta)
{
switch (meta)
{
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;
return getDefaultState().withProperty(TYPE, meta == 0 ? EnumGridType.NORMAL : EnumGridType.CRAFTING);
}
@Override
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;
}

View File

@@ -5,6 +5,9 @@ import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockState;
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
{
@@ -13,8 +16,6 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi
public BlockMachine(String name)
{
super(name);
setDefaultState(blockState.getBaseState().withProperty(CONNECTED, false));
}
@Override
@@ -29,12 +30,18 @@ public abstract class BlockMachine extends BlockBase implements ITileEntityProvi
@Override
public IBlockState getStateFromMeta(int meta)
{
return getDefaultState().withProperty(CONNECTED, meta == 1);
return getDefaultState();
}
@Override
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.util.BlockPos;
import net.minecraft.util.EnumFacing;
import storagecraft.StorageCraftBlocks;
import storagecraft.block.BlockController;
import storagecraft.storage.IStorage;
import storagecraft.storage.IStorageProvider;
import storagecraft.storage.StorageItem;
@@ -45,8 +43,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
if (!worldObj.isRemote)
{
int lastEnergy = energy.getEnergyStored();
if (ticks % 40 == 0)
{
if (!isActive())
@@ -114,14 +110,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
}
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);
}
}
}