Added throttling for the disk drive disk state update packets. Fixes #1870

This commit is contained in:
raoulvdberge
2018-07-13 18:58:51 +02:00
parent e946a7378f
commit 10b3b22b23
27 changed files with 115 additions and 82 deletions

View File

@@ -46,6 +46,11 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
private static final String NBT_MODE = "Mode";
private static final String NBT_TYPE = "Type";
private static final int DISK_STATE_UPDATE_THROTTLE = 30;
private int ticksSinceBlockUpdateRequested;
private boolean blockUpdateRequested;
private ItemHandlerBase disks = new ItemHandlerBase(8, new ItemHandlerListenerNetworkNode(this), VALIDATOR_STORAGE_DISK) {
@Override
protected void onContentsChanged(int slot) {
@@ -114,6 +119,28 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
return usage;
}
@Override
public void update() {
super.update();
if (blockUpdateRequested) {
++ticksSinceBlockUpdateRequested;
if (ticksSinceBlockUpdateRequested > DISK_STATE_UPDATE_THROTTLE) {
WorldUtils.updateBlock(world, pos);
this.blockUpdateRequested = false;
this.ticksSinceBlockUpdateRequested = 0;
}
} else {
this.ticksSinceBlockUpdateRequested = 0;
}
}
void requestBlockUpdate() {
this.blockUpdateRequested = true;
}
@Override
public void onConnectedStateChange(INetwork network, boolean state) {
super.onConnectedStateChange(network, state);

View File

@@ -5,10 +5,9 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
@@ -20,23 +19,24 @@ public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
private NetworkNodeDiskDrive diskDrive;
private IStorageDisk<FluidStack> parent;
private int lastState;
private int ticksSinceLastChanged;
public StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<FluidStack> parent) {
this.diskDrive = diskDrive;
this.parent = parent;
this.setSettings(
() -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity());
int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) {
lastState = currentState;
if (this.lastState != currentState) {
this.lastState = currentState;
WorldUtils.updateBlock(diskDrive.getWorld(), diskDrive.getPos());
diskDrive.requestBlockUpdate();
}
},
diskDrive
);
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity());
this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
}
@Override

View File

@@ -5,9 +5,8 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.items.ItemHandlerHelper;
@@ -26,17 +25,17 @@ public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
this.parent = parent;
this.setSettings(
() -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity());
int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) {
lastState = currentState;
if (this.lastState != currentState) {
this.lastState = currentState;
WorldUtils.updateBlock(diskDrive.getWorld(), diskDrive.getPos());
diskDrive.requestBlockUpdate();
}
},
diskDrive
);
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity());
this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
}
@Override

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
@@ -26,7 +26,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
this.parent = parent;
this.setSettings(
() -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity());
int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) {
lastState = currentState;
@@ -36,7 +36,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
},
diskManipulator
);
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity());
this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
}
@Override

View File

@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack;
@@ -26,7 +26,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
this.parent = parent;
this.setSettings(
() -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity());
int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) {
lastState = currentState;
@@ -36,7 +36,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
},
diskManipulator
);
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity());
this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
}
@Override

View File

@@ -13,7 +13,7 @@ import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTraceResult;
import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTracer;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelCableCover;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.TileBase;

View File

@@ -5,8 +5,8 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsConstructor;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsConstructor;
import com.raoulvdberge.refinedstorage.tile.TileConstructor;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsDetector;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDetector;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.TileDetector;
import net.minecraft.block.properties.PropertyBool;

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsExporter;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsExporter;
import com.raoulvdberge.refinedstorage.tile.TileExporter;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;

View File

@@ -5,8 +5,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeExternalS
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsExternalStorage;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsExternalStorage;
import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsImporter;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsImporter;
import com.raoulvdberge.refinedstorage.tile.TileImporter;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;

View File

@@ -8,7 +8,7 @@ import com.raoulvdberge.refinedstorage.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsPortableGrid;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsPortableGrid;
import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionPortableGrid;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;

View File

@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsWirelessTransmitter;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsWirelessTransmitter;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
import net.minecraft.block.Block;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import net.minecraft.util.math.AxisAlignedBB;

View File

@@ -0,0 +1,21 @@
package com.raoulvdberge.refinedstorage.render.constants;
public final class ConstantsDisk {
public static final int DISK_STATE_NORMAL = 0;
public static final int DISK_STATE_NEAR_CAPACITY = 1;
public static final int DISK_STATE_FULL = 2;
public static final int DISK_STATE_DISCONNECTED = 3;
public static final int DISK_STATE_NONE = 4;
public static final int DISK_NEAR_CAPACITY_TRESHOLD = 75;
public static int getDiskState(int stored, int capacity) {
if (stored == capacity) {
return DISK_STATE_FULL;
} else if ((int) ((float) stored / (float) capacity * 100F) >= DISK_NEAR_CAPACITY_TRESHOLD) {
return DISK_STATE_NEAR_CAPACITY;
} else {
return DISK_STATE_NORMAL;
}
}
}

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import net.minecraft.util.math.AxisAlignedBB;

View File

@@ -1,4 +1,4 @@
package com.raoulvdberge.refinedstorage.render.collision.constants;
package com.raoulvdberge.refinedstorage.render.constants;
import net.minecraft.util.math.AxisAlignedBB;

View File

@@ -7,7 +7,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.raoulvdberge.refinedstorage.block.BlockBase;
import com.raoulvdberge.refinedstorage.block.BlockCable;
import com.raoulvdberge.refinedstorage.render.CubeBuilder;
import com.raoulvdberge.refinedstorage.render.collision.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsCable;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;

View File

@@ -5,7 +5,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.block.BlockDiskDrive;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
@@ -72,7 +72,7 @@ public class BakedModelDiskDrive extends BakedModelDelegate {
List<BakedQuad> quads = models.get(facing).getQuads(key.state, key.side, 0);
for (int i = 0; i < 8; ++i) {
if (key.diskState[i] != TileDiskDrive.DISK_STATE_NONE) {
if (key.diskState[i] != ConstantsDisk.DISK_STATE_NONE) {
quads.addAll(disks.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, 0));
}
}
@@ -89,15 +89,15 @@ public class BakedModelDiskDrive extends BakedModelDelegate {
disks.put(facing, new HashMap<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NORMAL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NEAR_CAPACITY, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_FULL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_DISCONNECTED, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_NORMAL, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_NEAR_CAPACITY, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_FULL, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_DISCONNECTED, new ArrayList<>());
initDiskModels(disk, TileDiskDrive.DISK_STATE_NORMAL, facing);
initDiskModels(diskNearCapacity, TileDiskDrive.DISK_STATE_NEAR_CAPACITY, facing);
initDiskModels(diskFull, TileDiskDrive.DISK_STATE_FULL, facing);
initDiskModels(diskDisconnected, TileDiskDrive.DISK_STATE_DISCONNECTED, facing);
initDiskModels(disk, ConstantsDisk.DISK_STATE_NORMAL, facing);
initDiskModels(diskNearCapacity, ConstantsDisk.DISK_STATE_NEAR_CAPACITY, facing);
initDiskModels(diskFull, ConstantsDisk.DISK_STATE_FULL, facing);
initDiskModels(diskDisconnected, ConstantsDisk.DISK_STATE_DISCONNECTED, facing);
}
}

View File

@@ -5,7 +5,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.block.BlockDiskManipulator;
import com.raoulvdberge.refinedstorage.tile.TileDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
@@ -73,7 +73,7 @@ public class BakedModelDiskManipulator extends BakedModelDelegate {
List<BakedQuad> quads = (key.state.getValue(BlockDiskManipulator.CONNECTED) ? modelsConnected : modelsDisconnected).get(facing).getQuads(key.state, key.side, 0);
for (int i = 0; i < 6; ++i) {
if (key.diskState[i] != TileDiskDrive.DISK_STATE_NONE) {
if (key.diskState[i] != ConstantsDisk.DISK_STATE_NONE) {
quads.addAll(disks.get(facing).get(key.diskState[i]).get(i).getQuads(key.state, key.side, 0));
}
}
@@ -91,15 +91,15 @@ public class BakedModelDiskManipulator extends BakedModelDelegate {
disks.put(facing, new HashMap<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NORMAL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NEAR_CAPACITY, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_FULL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_DISCONNECTED, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_NORMAL, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_NEAR_CAPACITY, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_FULL, new ArrayList<>());
disks.get(facing).put(ConstantsDisk.DISK_STATE_DISCONNECTED, new ArrayList<>());
initDiskModels(disk, TileDiskDrive.DISK_STATE_NORMAL, facing);
initDiskModels(diskNearCapacity, TileDiskDrive.DISK_STATE_NEAR_CAPACITY, facing);
initDiskModels(diskFull, TileDiskDrive.DISK_STATE_FULL, facing);
initDiskModels(diskDisconnected, TileDiskDrive.DISK_STATE_DISCONNECTED, facing);
initDiskModels(disk, ConstantsDisk.DISK_STATE_NORMAL, facing);
initDiskModels(diskNearCapacity, ConstantsDisk.DISK_STATE_NEAR_CAPACITY, facing);
initDiskModels(diskFull, ConstantsDisk.DISK_STATE_FULL, facing);
initDiskModels(diskDisconnected, ConstantsDisk.DISK_STATE_DISCONNECTED, facing);
}
}

View File

@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.tile;
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.NBTTagCompound;
@@ -67,12 +68,6 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
private static final String NBT_DISK_STATE = "DiskState_%d";
public static final int DISK_STATE_NORMAL = 0;
public static final int DISK_STATE_NEAR_CAPACITY = 1;
public static final int DISK_STATE_FULL = 2;
public static final int DISK_STATE_DISCONNECTED = 3;
public static final int DISK_STATE_NONE = 4;
private Integer[] diskState = new Integer[8];
public TileDiskDrive() {
@@ -109,13 +104,13 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
public static void writeDiskState(NBTTagCompound tag, int disks, boolean connected, IStorageDisk[] itemStorages, IStorageDisk[] fluidStorages) {
for (int i = 0; i < disks; ++i) {
int state = DISK_STATE_NONE;
int state = ConstantsDisk.DISK_STATE_NONE;
if (itemStorages[i] != null || fluidStorages[i] != null) {
if (!connected) {
state = DISK_STATE_DISCONNECTED;
state = ConstantsDisk.DISK_STATE_DISCONNECTED;
} else {
state = getDiskState(
state = ConstantsDisk.getDiskState(
itemStorages[i] != null ? itemStorages[i].getStored() : fluidStorages[i].getStored(),
itemStorages[i] != null ? itemStorages[i].getCapacity() : fluidStorages[i].getCapacity()
);
@@ -134,17 +129,7 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
public static void initDiskState(Integer[] diskState) {
for (int i = 0; i < diskState.length; ++i) {
diskState[i] = DISK_STATE_NONE;
}
}
public static int getDiskState(int stored, int capacity) {
if (stored == capacity) {
return DISK_STATE_FULL;
} else if ((int) ((float) stored / (float) capacity * 100F) >= 85) {
return DISK_STATE_NEAR_CAPACITY;
} else {
return DISK_STATE_NORMAL;
diskState[i] = ConstantsDisk.DISK_STATE_NONE;
}
}

View File

@@ -33,6 +33,7 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile;
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.render.constants.ConstantsDisk;
import com.raoulvdberge.refinedstorage.tile.TileBase;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
@@ -188,7 +189,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
if (type == null) {
IBlockState state = world.getBlockState(pos);
if (state.getBlock() == RSBlocks.PORTABLE_GRID) {
this.type = (PortableGridType) state.getValue(BlockPortableGrid.TYPE);
this.type = (PortableGridType) state.getValue(BlockPortableGrid.TYPE);
}
}
@@ -227,7 +228,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
private EnergyStorage recreateEnergyStorage(int energyStored) {
return new EnergyStorage(RS.INSTANCE.config.portableGridCapacity, RS.INSTANCE.config.portableGridCapacity, 0, energyStored);
}
public ItemStack getAsItem() {
ItemStack stack = new ItemStack(RSBlocks.PORTABLE_GRID, 1, getPortableType() == PortableGridType.NORMAL ? ItemBlockPortableGrid.TYPE_NORMAL : ItemBlockPortableGrid.TYPE_CREATIVE);
@@ -661,7 +662,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
if (renderInfo.getStored() == renderInfo.getCapacity()) {
return PortableGridDiskState.FULL;
} else if ((int) ((float) renderInfo.getStored() / (float) renderInfo.getCapacity() * 100F) >= 85) {
} else if ((int) ((float) renderInfo.getStored() / (float) renderInfo.getCapacity() * 100F) >= ConstantsDisk.DISK_NEAR_CAPACITY_TRESHOLD) {
return PortableGridDiskState.NEAR_CAPACITY;
} else {
return PortableGridDiskState.NORMAL;