Implement disk near capacity state + update transmitter textures
This commit is contained in:
@@ -85,7 +85,7 @@ public class BakedModelDiskDrive implements IBakedModel {
|
||||
}
|
||||
});
|
||||
|
||||
public BakedModelDiskDrive(IBakedModel base, IBakedModel disk, IBakedModel diskFull, IBakedModel diskDisconnected) {
|
||||
public BakedModelDiskDrive(IBakedModel base, IBakedModel disk, IBakedModel diskNearCapacity, IBakedModel diskFull, IBakedModel diskDisconnected) {
|
||||
this.base = base;
|
||||
|
||||
for (EnumFacing facing : EnumFacing.HORIZONTALS) {
|
||||
@@ -94,10 +94,12 @@ public class BakedModelDiskDrive implements IBakedModel {
|
||||
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<>());
|
||||
|
||||
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);
|
||||
}
|
||||
|
@@ -86,7 +86,7 @@ public class BakedModelDiskManipulator implements IBakedModel {
|
||||
}
|
||||
});
|
||||
|
||||
public BakedModelDiskManipulator(IBakedModel baseConnected, IBakedModel baseDisconnected, IBakedModel disk, IBakedModel diskFull, IBakedModel diskDisconnected) {
|
||||
public BakedModelDiskManipulator(IBakedModel baseConnected, IBakedModel baseDisconnected, IBakedModel disk, IBakedModel diskNearCapacity, IBakedModel diskFull, IBakedModel diskDisconnected) {
|
||||
this.baseDisconnected = baseDisconnected;
|
||||
|
||||
for (EnumFacing facing : EnumFacing.HORIZONTALS) {
|
||||
@@ -96,10 +96,12 @@ public class BakedModelDiskManipulator implements IBakedModel {
|
||||
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<>());
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -140,7 +142,7 @@ public class BakedModelDiskManipulator implements IBakedModel {
|
||||
}
|
||||
|
||||
CacheKey key = new CacheKey(((IExtendedBlockState) state).getClean(), side, diskState);
|
||||
cache.refresh(key);
|
||||
|
||||
return cache.getUnchecked(key);
|
||||
}
|
||||
|
||||
|
@@ -16,6 +16,7 @@ import java.util.Collections;
|
||||
public class ModelDiskDrive implements IModel {
|
||||
private static final ResourceLocation MODEL_BASE = new ResourceLocation("refinedstorage:block/disk_drive");
|
||||
private static final ResourceLocation MODEL_DISK = new ResourceLocation("refinedstorage:block/disk");
|
||||
private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation("refinedstorage:block/disk_near_capacity");
|
||||
private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation("refinedstorage:block/disk_full");
|
||||
private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation("refinedstorage:block/disk_disconnected");
|
||||
|
||||
@@ -33,12 +34,14 @@ public class ModelDiskDrive implements IModel {
|
||||
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
|
||||
IModel baseModel;
|
||||
IModel diskModel;
|
||||
IModel diskModelNearCapacity;
|
||||
IModel diskModelFull;
|
||||
IModel diskModelDisconnected;
|
||||
|
||||
try {
|
||||
baseModel = ModelLoaderRegistry.getModel(MODEL_BASE);
|
||||
diskModel = ModelLoaderRegistry.getModel(MODEL_DISK);
|
||||
diskModelNearCapacity = ModelLoaderRegistry.getModel(MODEL_DISK_NEAR_CAPACITY);
|
||||
diskModelFull = ModelLoaderRegistry.getModel(MODEL_DISK_FULL);
|
||||
diskModelDisconnected = ModelLoaderRegistry.getModel(MODEL_DISK_DISCONNECTED);
|
||||
} catch (Exception e) {
|
||||
@@ -48,6 +51,7 @@ public class ModelDiskDrive implements IModel {
|
||||
return new BakedModelDiskDrive(
|
||||
baseModel.bake(state, format, bakedTextureGetter),
|
||||
diskModel.bake(state, format, bakedTextureGetter),
|
||||
diskModelNearCapacity.bake(state, format, bakedTextureGetter),
|
||||
diskModelFull.bake(state, format, bakedTextureGetter),
|
||||
diskModelDisconnected.bake(state, format, bakedTextureGetter)
|
||||
);
|
||||
|
@@ -18,6 +18,7 @@ public class ModelDiskManipulator implements IModel {
|
||||
private static final ResourceLocation MODEL_BASE_CONNECTED = new ResourceLocation("refinedstorage:block/disk_manipulator_connected");
|
||||
private static final ResourceLocation MODEL_BASE_DISCONNECTED = new ResourceLocation("refinedstorage:block/disk_manipulator_disconnected");
|
||||
private static final ResourceLocation MODEL_DISK = new ResourceLocation("refinedstorage:block/disk");
|
||||
private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation("refinedstorage:block/disk_near_capacity");
|
||||
private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation("refinedstorage:block/disk_full");
|
||||
private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation("refinedstorage:block/disk_disconnected");
|
||||
|
||||
@@ -35,6 +36,7 @@ public class ModelDiskManipulator implements IModel {
|
||||
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
|
||||
IModel baseModelConnected, baseModelDisconnected;
|
||||
IModel diskModel;
|
||||
IModel diskModelNearCapacity;
|
||||
IModel diskModelFull;
|
||||
IModel diskModelDisconnected;
|
||||
|
||||
@@ -42,6 +44,7 @@ public class ModelDiskManipulator implements IModel {
|
||||
baseModelConnected = ModelLoaderRegistry.getModel(MODEL_BASE_CONNECTED);
|
||||
baseModelDisconnected = ModelLoaderRegistry.getModel(MODEL_BASE_DISCONNECTED);
|
||||
diskModel = ModelLoaderRegistry.getModel(MODEL_DISK);
|
||||
diskModelNearCapacity = ModelLoaderRegistry.getModel(MODEL_DISK_NEAR_CAPACITY);
|
||||
diskModelFull = ModelLoaderRegistry.getModel(MODEL_DISK_FULL);
|
||||
diskModelDisconnected = ModelLoaderRegistry.getModel(MODEL_DISK_DISCONNECTED);
|
||||
} catch (Exception e) {
|
||||
@@ -49,11 +52,12 @@ public class ModelDiskManipulator implements IModel {
|
||||
}
|
||||
|
||||
return new BakedModelDiskManipulator(
|
||||
baseModelConnected.bake(state, format, bakedTextureGetter),
|
||||
baseModelDisconnected.bake(state, format, bakedTextureGetter),
|
||||
diskModel.bake(state, format, bakedTextureGetter),
|
||||
diskModelFull.bake(state, format, bakedTextureGetter),
|
||||
diskModelDisconnected.bake(state, format, bakedTextureGetter)
|
||||
baseModelConnected.bake(state, format, bakedTextureGetter),
|
||||
baseModelDisconnected.bake(state, format, bakedTextureGetter),
|
||||
diskModel.bake(state, format, bakedTextureGetter),
|
||||
diskModelNearCapacity.bake(state, format, bakedTextureGetter),
|
||||
diskModelFull.bake(state, format, bakedTextureGetter),
|
||||
diskModelDisconnected.bake(state, format, bakedTextureGetter)
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -41,12 +41,12 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
public static final TileDataParameter<AccessType> ACCESS_TYPE = IAccessType.createParameter();
|
||||
|
||||
public class ItemStorage extends ItemStorageNBT {
|
||||
private boolean wasFull;
|
||||
private int lastState;
|
||||
|
||||
public ItemStorage(ItemStack disk) {
|
||||
super(disk.getTagCompound(), EnumItemStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this);
|
||||
|
||||
wasFull = isFull();
|
||||
lastState = getDiskState(getStored(), getCapacity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,8 +79,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
public void onStorageChanged() {
|
||||
super.onStorageChanged();
|
||||
|
||||
if (wasFull != isFull()) {
|
||||
wasFull = isFull();
|
||||
int currentState = getDiskState(getStored(), getCapacity());
|
||||
|
||||
if (lastState != currentState) {
|
||||
lastState = currentState;
|
||||
|
||||
updateBlock();
|
||||
}
|
||||
@@ -88,12 +90,12 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
}
|
||||
|
||||
public class FluidStorage extends FluidStorageNBT {
|
||||
private boolean wasFull;
|
||||
private int lastState;
|
||||
|
||||
public FluidStorage(ItemStack disk) {
|
||||
super(disk.getTagCompound(), EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskDrive.this);
|
||||
|
||||
wasFull = isFull();
|
||||
lastState = getDiskState(getStored(), getCapacity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -126,8 +128,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
public void onStorageChanged() {
|
||||
super.onStorageChanged();
|
||||
|
||||
if (wasFull != isFull()) {
|
||||
wasFull = isFull();
|
||||
int currentState = getDiskState(getStored(), getCapacity());
|
||||
|
||||
if (lastState != currentState) {
|
||||
lastState = currentState;
|
||||
|
||||
updateBlock();
|
||||
}
|
||||
@@ -142,9 +146,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
private static final String NBT_DISK_STATE = "DiskState_%d";
|
||||
|
||||
public static final int DISK_STATE_NORMAL = 0;
|
||||
public static final int DISK_STATE_FULL = 1;
|
||||
public static final int DISK_STATE_DISCONNECTED = 2;
|
||||
public static final int DISK_STATE_NONE = 3;
|
||||
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 ItemHandlerBasic disks = new ItemHandlerBasic(8, this, IItemValidator.STORAGE_DISK) {
|
||||
@Override
|
||||
@@ -366,11 +371,10 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
if (!connected) {
|
||||
state = DISK_STATE_DISCONNECTED;
|
||||
} else {
|
||||
state = DISK_STATE_NORMAL;
|
||||
|
||||
if ((itemStorages[i] != null && itemStorages[i].isFull()) || (fluidStorages[i] != null && fluidStorages[i].isFull())) {
|
||||
state = DISK_STATE_FULL;
|
||||
}
|
||||
state = getDiskState(
|
||||
itemStorages[i] != null ? itemStorages[i].getStored() : fluidStorages[i].getStored(),
|
||||
itemStorages[i] != null ? itemStorages[i].getCapacity() : fluidStorages[i].getCapacity()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -390,6 +394,16 @@ public class TileDiskDrive extends TileNode implements IItemStorageProvider, IFl
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
|
@@ -111,12 +111,12 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
||||
};
|
||||
|
||||
public class ItemStorage extends ItemStorageNBT {
|
||||
private boolean wasFull;
|
||||
private int lastState;
|
||||
|
||||
public ItemStorage(ItemStack disk) {
|
||||
super(disk.getTagCompound(), EnumItemStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskManipulator.this);
|
||||
|
||||
wasFull = isFull();
|
||||
lastState = TileDiskDrive.getDiskState(getStored(), getCapacity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -146,8 +146,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
||||
public void onStorageChanged() {
|
||||
super.onStorageChanged();
|
||||
|
||||
if (wasFull != isFull()) {
|
||||
wasFull = isFull();
|
||||
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity());
|
||||
|
||||
if (lastState != currentState) {
|
||||
lastState = currentState;
|
||||
|
||||
updateBlock();
|
||||
}
|
||||
@@ -155,12 +157,12 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
||||
}
|
||||
|
||||
public class FluidStorage extends FluidStorageNBT {
|
||||
private boolean wasFull;
|
||||
private int lastState;
|
||||
|
||||
public FluidStorage(ItemStack disk) {
|
||||
super(disk.getTagCompound(), EnumFluidStorageType.getById(disk.getItemDamage()).getCapacity(), TileDiskManipulator.this);
|
||||
|
||||
wasFull = isFull();
|
||||
lastState = TileDiskDrive.getDiskState(getStored(), getCapacity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -190,8 +192,10 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte
|
||||
public void onStorageChanged() {
|
||||
super.onStorageChanged();
|
||||
|
||||
if (wasFull != isFull()) {
|
||||
wasFull = isFull();
|
||||
int currentState = TileDiskDrive.getDiskState(getStored(), getCapacity());
|
||||
|
||||
if (lastState != currentState) {
|
||||
lastState = currentState;
|
||||
|
||||
updateBlock();
|
||||
}
|
||||
|
146
src/main/resources/assets/refinedstorage/models/block/disk_near_capacity.json
Executable file
146
src/main/resources/assets/refinedstorage/models/block/disk_near_capacity.json
Executable file
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
|
||||
"textures": {
|
||||
"0": "refinedstorage:blocks/disk_near_capacity"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "disk",
|
||||
"from": [
|
||||
11.0,
|
||||
14.0,
|
||||
-1.0
|
||||
],
|
||||
"to": [
|
||||
16.0,
|
||||
16.0,
|
||||
0.0
|
||||
],
|
||||
"faces": {
|
||||
"north": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
3.0,
|
||||
0.0,
|
||||
8.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"east": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
2.0,
|
||||
0.0,
|
||||
3.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"south": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
9.0,
|
||||
0.0,
|
||||
14.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"west": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
8.0,
|
||||
0.0,
|
||||
9.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"up": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
3.0,
|
||||
2.0,
|
||||
8.0,
|
||||
3.0
|
||||
]
|
||||
},
|
||||
"down": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
3.0,
|
||||
3.0,
|
||||
8.0,
|
||||
4.0
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "led",
|
||||
"from": [
|
||||
12.0,
|
||||
13.95,
|
||||
-1.05
|
||||
],
|
||||
"to": [
|
||||
13.0,
|
||||
15.0,
|
||||
-0.10000000000000009
|
||||
],
|
||||
"faces": {
|
||||
"north": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
14.0,
|
||||
1.0,
|
||||
15.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"east": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
14.0,
|
||||
1.0,
|
||||
15.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"south": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
14.0,
|
||||
1.0,
|
||||
15.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"west": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
14.0,
|
||||
1.0,
|
||||
15.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"up": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
14.0,
|
||||
1.0,
|
||||
15.0,
|
||||
2.0
|
||||
]
|
||||
},
|
||||
"down": {
|
||||
"texture": "#0",
|
||||
"uv": [
|
||||
14.0,
|
||||
1.0,
|
||||
15.0,
|
||||
2.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
BIN
src/main/resources/assets/refinedstorage/textures/blocks/disk_near_capacity.png
Executable file
BIN
src/main/resources/assets/refinedstorage/textures/blocks/disk_near_capacity.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Reference in New Issue
Block a user