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_MODE = "Mode";
private static final String NBT_TYPE = "Type"; 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) { private ItemHandlerBase disks = new ItemHandlerBase(8, new ItemHandlerListenerNetworkNode(this), VALIDATOR_STORAGE_DISK) {
@Override @Override
protected void onContentsChanged(int slot) { protected void onContentsChanged(int slot) {
@@ -114,6 +119,28 @@ public class NetworkNodeDiskDrive extends NetworkNode implements IGuiStorage, IS
return usage; 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 @Override
public void onConnectedStateChange(INetwork network, boolean state) { public void onConnectedStateChange(INetwork network, boolean state) {
super.onConnectedStateChange(network, 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.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action; 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.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@@ -20,23 +19,24 @@ public class StorageDiskFluidDriveWrapper implements IStorageDisk<FluidStack> {
private NetworkNodeDiskDrive diskDrive; private NetworkNodeDiskDrive diskDrive;
private IStorageDisk<FluidStack> parent; private IStorageDisk<FluidStack> parent;
private int lastState; private int lastState;
private int ticksSinceLastChanged;
public StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<FluidStack> parent) { public StorageDiskFluidDriveWrapper(NetworkNodeDiskDrive diskDrive, IStorageDisk<FluidStack> parent) {
this.diskDrive = diskDrive; this.diskDrive = diskDrive;
this.parent = parent; this.parent = parent;
this.setSettings( this.setSettings(
() -> { () -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity()); int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) { if (this.lastState != currentState) {
lastState = currentState; this.lastState = currentState;
WorldUtils.updateBlock(diskDrive.getWorld(), diskDrive.getPos()); diskDrive.requestBlockUpdate();
} }
}, },
diskDrive diskDrive
); );
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity()); this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
} }
@Override @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.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action; 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.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
@@ -26,17 +25,17 @@ public class StorageDiskItemDriveWrapper implements IStorageDisk<ItemStack> {
this.parent = parent; this.parent = parent;
this.setSettings( this.setSettings(
() -> { () -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity()); int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) { if (this.lastState != currentState) {
lastState = currentState; this.lastState = currentState;
WorldUtils.updateBlock(diskDrive.getWorld(), diskDrive.getPos()); diskDrive.requestBlockUpdate();
} }
}, },
diskDrive diskDrive
); );
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity()); this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
} }
@Override @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.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action; 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.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
import com.raoulvdberge.refinedstorage.util.WorldUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils;
@@ -26,7 +26,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
this.parent = parent; this.parent = parent;
this.setSettings( this.setSettings(
() -> { () -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity()); int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) { if (lastState != currentState) {
lastState = currentState; lastState = currentState;
@@ -36,7 +36,7 @@ public class StorageDiskFluidManipulatorWrapper implements IStorageDisk<FluidSta
}, },
diskManipulator diskManipulator
); );
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity()); this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
} }
@Override @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.IStorageDiskContainerContext;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskListener;
import com.raoulvdberge.refinedstorage.api.util.Action; 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.tile.config.IFilterable;
import com.raoulvdberge.refinedstorage.util.WorldUtils; import com.raoulvdberge.refinedstorage.util.WorldUtils;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -26,7 +26,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
this.parent = parent; this.parent = parent;
this.setSettings( this.setSettings(
() -> { () -> {
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity()); int currentState = ConstantsDisk.getDiskState(getStored(), getCapacity());
if (lastState != currentState) { if (lastState != currentState) {
lastState = currentState; lastState = currentState;
@@ -36,7 +36,7 @@ public class StorageDiskItemManipulatorWrapper implements IStorageDisk<ItemStack
}, },
diskManipulator diskManipulator
); );
this.lastState = TileDiskDrive.getDiskState(getStored(), getCapacity()); this.lastState = ConstantsDisk.getDiskState(getStored(), getCapacity());
} }
@Override @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.AdvancedRayTraceResult;
import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTracer; import com.raoulvdberge.refinedstorage.render.collision.AdvancedRayTracer;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; 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.BakedModelCableCover;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright; import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.TileBase; 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.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; 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.collision.constants.ConstantsConstructor; import com.raoulvdberge.refinedstorage.render.constants.ConstantsConstructor;
import com.raoulvdberge.refinedstorage.tile.TileConstructor; import com.raoulvdberge.refinedstorage.tile.TileConstructor;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; 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.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.TileDetector; import com.raoulvdberge.refinedstorage.tile.TileDetector;
import net.minecraft.block.properties.PropertyBool; 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.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; 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 com.raoulvdberge.refinedstorage.tile.TileExporter;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; 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.collision.constants.ConstantsExternalStorage; import com.raoulvdberge.refinedstorage.render.constants.ConstantsExternalStorage;
import com.raoulvdberge.refinedstorage.tile.TileExternalStorage; import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; 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.block.info.BlockDirection;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.IModelRegistration;
import com.raoulvdberge.refinedstorage.render.collision.CollisionGroup; 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 com.raoulvdberge.refinedstorage.tile.TileImporter;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation; 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.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid; import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; 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.meshdefinition.ItemMeshDefinitionPortableGrid;
import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright; import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid; 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.RSGui;
import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder;
import com.raoulvdberge.refinedstorage.render.IModelRegistration; 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.render.model.baked.BakedModelFullbright;
import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter; import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter;
import net.minecraft.block.Block; 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.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils; 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.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils; 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; 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.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils; 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.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils; 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.render.collision.CollisionGroup;
import com.raoulvdberge.refinedstorage.util.CollisionUtils; 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; 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; 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.BlockBase;
import com.raoulvdberge.refinedstorage.block.BlockCable; import com.raoulvdberge.refinedstorage.block.BlockCable;
import com.raoulvdberge.refinedstorage.render.CubeBuilder; 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 com.raoulvdberge.refinedstorage.util.RenderUtils;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft; 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.google.common.cache.LoadingCache;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.block.BlockDiskDrive; 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.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel; 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); List<BakedQuad> quads = models.get(facing).getQuads(key.state, key.side, 0);
for (int i = 0; i < 8; ++i) { 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)); 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.put(facing, new HashMap<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NORMAL, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_NORMAL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NEAR_CAPACITY, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_NEAR_CAPACITY, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_FULL, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_FULL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_DISCONNECTED, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_DISCONNECTED, new ArrayList<>());
initDiskModels(disk, TileDiskDrive.DISK_STATE_NORMAL, facing); initDiskModels(disk, ConstantsDisk.DISK_STATE_NORMAL, facing);
initDiskModels(diskNearCapacity, TileDiskDrive.DISK_STATE_NEAR_CAPACITY, facing); initDiskModels(diskNearCapacity, ConstantsDisk.DISK_STATE_NEAR_CAPACITY, facing);
initDiskModels(diskFull, TileDiskDrive.DISK_STATE_FULL, facing); initDiskModels(diskFull, ConstantsDisk.DISK_STATE_FULL, facing);
initDiskModels(diskDisconnected, TileDiskDrive.DISK_STATE_DISCONNECTED, 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.google.common.cache.LoadingCache;
import com.raoulvdberge.refinedstorage.RSBlocks; import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.block.BlockDiskManipulator; 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.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel; 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); 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) { 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)); 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.put(facing, new HashMap<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NORMAL, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_NORMAL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_NEAR_CAPACITY, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_NEAR_CAPACITY, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_FULL, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_FULL, new ArrayList<>());
disks.get(facing).put(TileDiskDrive.DISK_STATE_DISCONNECTED, new ArrayList<>()); disks.get(facing).put(ConstantsDisk.DISK_STATE_DISCONNECTED, new ArrayList<>());
initDiskModels(disk, TileDiskDrive.DISK_STATE_NORMAL, facing); initDiskModels(disk, ConstantsDisk.DISK_STATE_NORMAL, facing);
initDiskModels(diskNearCapacity, TileDiskDrive.DISK_STATE_NEAR_CAPACITY, facing); initDiskModels(diskNearCapacity, ConstantsDisk.DISK_STATE_NEAR_CAPACITY, facing);
initDiskModels(diskFull, TileDiskDrive.DISK_STATE_FULL, facing); initDiskModels(diskFull, ConstantsDisk.DISK_STATE_FULL, facing);
initDiskModels(diskDisconnected, TileDiskDrive.DISK_STATE_DISCONNECTED, 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.AccessType;
import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk; import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDisk;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.diskdrive.NetworkNodeDiskDrive; 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.config.*;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@@ -67,12 +68,6 @@ public class TileDiskDrive extends TileNode<NetworkNodeDiskDrive> {
private static final String NBT_DISK_STATE = "DiskState_%d"; 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]; private Integer[] diskState = new Integer[8];
public TileDiskDrive() { 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) { public static void writeDiskState(NBTTagCompound tag, int disks, boolean connected, IStorageDisk[] itemStorages, IStorageDisk[] fluidStorages) {
for (int i = 0; i < disks; ++i) { 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 (itemStorages[i] != null || fluidStorages[i] != null) {
if (!connected) { if (!connected) {
state = DISK_STATE_DISCONNECTED; state = ConstantsDisk.DISK_STATE_DISCONNECTED;
} else { } else {
state = getDiskState( state = ConstantsDisk.getDiskState(
itemStorages[i] != null ? itemStorages[i].getStored() : fluidStorages[i].getStored(), itemStorages[i] != null ? itemStorages[i].getStored() : fluidStorages[i].getStored(),
itemStorages[i] != null ? itemStorages[i].getCapacity() : fluidStorages[i].getCapacity() 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) { public static void initDiskState(Integer[] diskState) {
for (int i = 0; i < diskState.length; ++i) { for (int i = 0; i < diskState.length; ++i) {
diskState[i] = DISK_STATE_NONE; diskState[i] = ConstantsDisk.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;
} }
} }

View File

@@ -33,6 +33,7 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFilter;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerTile;
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid; import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockPortableGrid; 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.TileBase;
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable; import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode; import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
@@ -661,7 +662,7 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
if (renderInfo.getStored() == renderInfo.getCapacity()) { if (renderInfo.getStored() == renderInfo.getCapacity()) {
return PortableGridDiskState.FULL; 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; return PortableGridDiskState.NEAR_CAPACITY;
} else { } else {
return PortableGridDiskState.NORMAL; return PortableGridDiskState.NORMAL;