Fixes for rendering

This commit is contained in:
Raoul Van den Berge
2016-07-08 19:32:44 +02:00
parent 34afdb8915
commit e1cc067c3d
9 changed files with 133 additions and 68 deletions

View File

@@ -1,5 +1,7 @@
package refinedstorage.block;
import net.minecraft.block.properties.PropertyInteger;
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 +9,15 @@ 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.TileDiskDrive;
public class BlockDiskDrive extends BlockNode {
public static final PropertyInteger STORED = PropertyInteger.create("stored", 0, 7);
public BlockDiskDrive() {
super("disk_drive");
}
@@ -22,6 +27,19 @@ public class BlockDiskDrive extends BlockNode {
return new TileDiskDrive();
}
@Override
public BlockStateContainer createBlockState() {
return createBlockStateBuilder()
.add(STORED)
.build();
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
return super.getActualState(state, world, pos)
.withProperty(STORED, ((TileDiskDrive) world.getTileEntity(pos)).getStoredForDisplay());
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
if (!world.isRemote) {

View File

@@ -1,7 +1,5 @@
package refinedstorage.block;
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;
@@ -16,8 +14,6 @@ import refinedstorage.RefinedStorageGui;
import refinedstorage.tile.TileSolderer;
public class BlockSolderer extends BlockNode {
public static final PropertyBool WORKING = PropertyBool.create("working");
public BlockSolderer() {
super("solderer");
}
@@ -37,15 +33,12 @@ public class BlockSolderer extends BlockNode {
}
@Override
protected BlockStateContainer createBlockState() {
return createBlockStateBuilder()
.add(WORKING)
.build();
public boolean isBlockSolid(IBlockAccess worldIn, BlockPos pos, EnumFacing side) {
return false;
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) {
return super.getActualState(state, world, pos)
.withProperty(WORKING, ((TileSolderer) world.getTileEntity(pos)).isWorking());
public EnumPlacementType getPlacementType() {
return null;
}
}

View File

@@ -49,6 +49,7 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
private static final String NBT_PRIORITY = "Priority";
private static final String NBT_COMPARE = "Compare";
private static final String NBT_MODE = "Mode";
private static final String NBT_STORED = "Stored";
private BasicItemHandler disks = new BasicItemHandler(8, this, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK)) {
@Override
@@ -84,6 +85,20 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
private int priority = 0;
private int compare = 0;
private int mode = ModeConstants.WHITELIST;
private int stored = 0;
@Override
public void update() {
if (!worldObj.isRemote) {
if (stored != getStoredForDisplayServer()) {
stored = getStoredForDisplayServer();
RefinedStorageUtils.updateBlock(worldObj, pos);
}
}
super.update();
}
@Override
public int getEnergyUsage() {
@@ -166,6 +181,22 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
return tag;
}
@Override
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag);
tag.setInteger(NBT_STORED, stored);
return tag;
}
@Override
public void readUpdate(NBTTagCompound tag) {
stored = tag.getInteger(NBT_STORED);
super.readUpdate(tag);
}
@Override
public void writeContainerData(ByteBuf buf) {
super.writeContainerData(buf);
@@ -213,6 +244,30 @@ public class TileDiskDrive extends TileNode implements IStorageProvider, IStorag
markDirty();
}
public int getStoredForDisplayServer() {
float stored = 0;
float storedMax = 0;
for (int i = 0; i < disks.getSlots(); ++i) {
ItemStack disk = disks.getStackInSlot(i);
if (disk != null) {
stored += NBTStorage.getStoredFromNBT(disk.getTagCompound());
storedMax += EnumStorageType.getById(disk.getItemDamage()).getCapacity();
}
}
if (storedMax == 0) {
return 0;
}
return (int) Math.floor((stored / storedMax) * 7f);
}
public int getStoredForDisplay() {
return stored;
}
@Override
public String getGuiTitle() {
return "block.refinedstorage:disk_drive.name";

View File

@@ -155,10 +155,10 @@ public abstract class TileNode extends TileBase implements INetworkNode, ISynchr
}
public void readUpdate(NBTTagCompound tag) {
super.readUpdate(tag);
if (canSendConnectivityUpdate()) {
connected = tag.getBoolean(NBT_CONNECTED);
}
super.readUpdate(tag);
}
}

View File

@@ -138,22 +138,6 @@ public class TileSolderer extends TileNode {
return tag;
}
@Override
public NBTTagCompound writeUpdate(NBTTagCompound tag) {
super.writeUpdate(tag);
tag.setBoolean(NBT_WORKING, working);
return tag;
}
@Override
public void readUpdate(NBTTagCompound tag) {
working = tag.getBoolean(NBT_WORKING);
super.readUpdate(tag);
}
@Override
public void readContainerData(ByteBuf buf) {
super.readContainerData(buf);