Implement disk near capacity state + update transmitter textures

This commit is contained in:
Raoul Van den Berge
2016-11-03 21:59:55 +01:00
parent c16b16b8bf
commit a803a81933
10 changed files with 208 additions and 32 deletions

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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)
);

View File

@@ -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) {
@@ -52,6 +55,7 @@ public class ModelDiskManipulator implements IModel {
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)
);

View File

@@ -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;

View File

@@ -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();
}

View 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
]
}
}
}
]
}

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