Added throttling for the disk drive disk state update packets. Fixes #1870
This commit is contained in:
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
@@ -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;
|
@@ -1,4 +1,4 @@
|
||||
package com.raoulvdberge.refinedstorage.render.collision.constants;
|
||||
package com.raoulvdberge.refinedstorage.render.constants;
|
||||
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
@@ -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;
|
@@ -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;
|
@@ -1,4 +1,4 @@
|
||||
package com.raoulvdberge.refinedstorage.render.collision.constants;
|
||||
package com.raoulvdberge.refinedstorage.render.constants;
|
||||
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.raoulvdberge.refinedstorage.render.collision.constants;
|
||||
package com.raoulvdberge.refinedstorage.render.constants;
|
||||
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user