diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java index ea211a165..50d502608 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskDrive.java @@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.render.model; import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelDiskDrive; +import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.vertex.VertexFormat; @@ -18,10 +19,10 @@ import java.util.function.Function; public class ModelDiskDrive implements IModel { private static final ResourceLocation MODEL_BASE = new ResourceLocation(RS.ID + ":block/disk_drive"); - private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disk"); - private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disk_near_capacity"); - private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disk_full"); - private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disk_disconnected"); + private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disks/disk"); + private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity"); + private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disks/disk_full"); + private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disks/disk_disconnected"); @Override public Collection getDependencies() { @@ -56,9 +57,9 @@ 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), + new BakedModelFullbright(diskModel.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disks/leds").setCacheDisabled(), + new BakedModelFullbright(diskModelNearCapacity.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disks/leds").setCacheDisabled(), + new BakedModelFullbright(diskModelFull.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disks/leds").setCacheDisabled(), diskModelDisconnected.bake(state, format, bakedTextureGetter) ); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java index 8b1aef7a0..d696acbae 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/ModelDiskManipulator.java @@ -22,10 +22,10 @@ public class ModelDiskManipulator implements IModel { private static final ResourceLocation MODEL_BASE_CONNECTED = new ResourceLocation(RS.ID + ":block/disk_manipulator_connected"); private static final ResourceLocation MODEL_BASE_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disk_manipulator_disconnected"); - private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disk"); - private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disk_near_capacity"); - private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disk_full"); - private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disk_disconnected"); + private static final ResourceLocation MODEL_DISK = new ResourceLocation(RS.ID + ":block/disks/disk"); + private static final ResourceLocation MODEL_DISK_NEAR_CAPACITY = new ResourceLocation(RS.ID + ":block/disks/disk_near_capacity"); + private static final ResourceLocation MODEL_DISK_FULL = new ResourceLocation(RS.ID + ":block/disks/disk_full"); + private static final ResourceLocation MODEL_DISK_DISCONNECTED = new ResourceLocation(RS.ID + ":block/disks/disk_disconnected"); @Override public Collection getDependencies() { @@ -69,9 +69,9 @@ public class ModelDiskManipulator implements IModel { return new BakedModelDiskManipulator( new BakedModelFullbright(baseModelConnected.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disk_manipulator/cutouts/connected"), baseModelDisconnected.bake(state, format, bakedTextureGetter), - diskModel.bake(state, format, bakedTextureGetter), - diskModelNearCapacity.bake(state, format, bakedTextureGetter), - diskModelFull.bake(state, format, bakedTextureGetter), + new BakedModelFullbright(diskModel.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disks/leds").setCacheDisabled(), + new BakedModelFullbright(diskModelNearCapacity.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disks/leds").setCacheDisabled(), + new BakedModelFullbright(diskModelFull.bake(state, format, bakedTextureGetter), RS.ID + ":blocks/disks/leds").setCacheDisabled(), diskModelDisconnected.bake(state, format, bakedTextureGetter) ); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelFullbright.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelFullbright.java index b552caf0d..edcd6ed30 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelFullbright.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelFullbright.java @@ -62,22 +62,13 @@ public class BakedModelFullbright extends BakedModelDelegate { private static final LoadingCache> CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { @Override - public List load(CacheKey key) throws Exception { - List quads = new ArrayList<>(key.base.getQuads(key.state, key.side, 0)); - - for (int i = 0; i < quads.size(); ++i) { - BakedQuad quad = quads.get(i); - - if (key.textures.contains(quad.getSprite().getIconName())) { - quads.set(i, transformQuad(quad, 0.007F)); - } - } - - return quads; + public List load(CacheKey key) { + return transformQuads(key.base.getQuads(key.state, key.side, 0), key.textures); } }); private Set textures; + private boolean cacheDisabled = false; public BakedModelFullbright(IBakedModel base, String... textures) { super(base); @@ -85,15 +76,39 @@ public class BakedModelFullbright extends BakedModelDelegate { this.textures = new HashSet<>(Arrays.asList(textures)); } + public BakedModelFullbright setCacheDisabled() { + this.cacheDisabled = true; + + return this; + } + @Override public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) { if (state == null) { return base.getQuads(state, side, rand); } + if (cacheDisabled) { + return transformQuads(base.getQuads(state, side, 0), textures); + } + return CACHE.getUnchecked(new CacheKey(base, textures, state instanceof IExtendedBlockState ? ((IExtendedBlockState) state).getClean() : state, side)); } + private static List transformQuads(List oldQuads, Set textures) { + List quads = new ArrayList<>(oldQuads); + + for (int i = 0; i < quads.size(); ++i) { + BakedQuad quad = quads.get(i); + + if (textures.contains(quad.getSprite().getIconName())) { + quads.set(i, transformQuad(quad, 0.007F)); + } + } + + return quads; + } + private static BakedQuad transformQuad(BakedQuad quad, float light) { VertexFormat newFormat = RenderUtils.getFormatWithLightMap(quad.getFormat()); diff --git a/src/main/resources/assets/refinedstorage/models/block/disk.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk.json old mode 100755 new mode 100644 similarity index 66% rename from src/main/resources/assets/refinedstorage/models/block/disk.json rename to src/main/resources/assets/refinedstorage/models/block/disks/disk.json index 08d5a1e01..652dd1c61 --- a/src/main/resources/assets/refinedstorage/models/block/disk.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk.json @@ -1,7 +1,8 @@ { "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "textures": { - "0": "refinedstorage:blocks/disk" + "base": "refinedstorage:blocks/disks/disk", + "led": "refinedstorage:blocks/disks/leds" }, "elements": [ { @@ -18,7 +19,7 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 0.0, @@ -27,7 +28,7 @@ ] }, "east": { - "texture": "#0", + "texture": "#base", "uv": [ 2.0, 0.0, @@ -36,7 +37,7 @@ ] }, "south": { - "texture": "#0", + "texture": "#base", "uv": [ 9.0, 0.0, @@ -45,7 +46,7 @@ ] }, "west": { - "texture": "#0", + "texture": "#base", "uv": [ 8.0, 0.0, @@ -54,7 +55,7 @@ ] }, "up": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 2.0, @@ -63,7 +64,7 @@ ] }, "down": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 3.0, @@ -87,57 +88,57 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 2.0, + 0.0, + 2.0, + 0.0 ] }, "east": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 2.0, + 0.0, + 2.0, + 0.0 ] }, "south": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 2.0, + 0.0, + 2.0, + 0.0 ] }, "west": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 2.0, + 0.0, + 2.0, + 0.0 ] }, "up": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 2.0, + 0.0, + 2.0, + 0.0 ] }, "down": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 2.0, + 0.0, + 2.0, + 0.0 ] } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_disconnected.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk_disconnected.json old mode 100755 new mode 100644 similarity index 66% rename from src/main/resources/assets/refinedstorage/models/block/disk_disconnected.json rename to src/main/resources/assets/refinedstorage/models/block/disks/disk_disconnected.json index 36197d7d6..f670fed99 --- a/src/main/resources/assets/refinedstorage/models/block/disk_disconnected.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk_disconnected.json @@ -1,7 +1,8 @@ { "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "textures": { - "0": "refinedstorage:blocks/disk_disconnected" + "base": "refinedstorage:blocks/disks/disk", + "led": "refinedstorage:blocks/disks/leds" }, "elements": [ { @@ -18,7 +19,7 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 0.0, @@ -27,7 +28,7 @@ ] }, "east": { - "texture": "#0", + "texture": "#base", "uv": [ 2.0, 0.0, @@ -36,7 +37,7 @@ ] }, "south": { - "texture": "#0", + "texture": "#base", "uv": [ 9.0, 0.0, @@ -45,7 +46,7 @@ ] }, "west": { - "texture": "#0", + "texture": "#base", "uv": [ 8.0, 0.0, @@ -54,7 +55,7 @@ ] }, "up": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 2.0, @@ -63,7 +64,7 @@ ] }, "down": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 3.0, @@ -87,57 +88,57 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 3.0, + 0.0, + 3.0, + 0.0 ] }, "east": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 3.0, + 0.0, + 3.0, + 0.0 ] }, "south": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 3.0, + 0.0, + 3.0, + 0.0 ] }, "west": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 3.0, + 0.0, + 3.0, + 0.0 ] }, "up": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 3.0, + 0.0, + 3.0, + 0.0 ] }, "down": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 3.0, + 0.0, + 3.0, + 0.0 ] } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_full.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json old mode 100755 new mode 100644 similarity index 70% rename from src/main/resources/assets/refinedstorage/models/block/disk_full.json rename to src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json index 26068c216..44f456b25 --- a/src/main/resources/assets/refinedstorage/models/block/disk_full.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk_full.json @@ -1,7 +1,8 @@ { "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "textures": { - "0": "refinedstorage:blocks/disk_full" + "base": "refinedstorage:blocks/disks/disk", + "led": "refinedstorage:blocks/disks/leds" }, "elements": [ { @@ -18,7 +19,7 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 0.0, @@ -27,7 +28,7 @@ ] }, "east": { - "texture": "#0", + "texture": "#base", "uv": [ 2.0, 0.0, @@ -36,7 +37,7 @@ ] }, "south": { - "texture": "#0", + "texture": "#base", "uv": [ 9.0, 0.0, @@ -45,7 +46,7 @@ ] }, "west": { - "texture": "#0", + "texture": "#base", "uv": [ 8.0, 0.0, @@ -54,7 +55,7 @@ ] }, "up": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 2.0, @@ -63,7 +64,7 @@ ] }, "down": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 3.0, @@ -87,57 +88,57 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, 1.0, - 15.0, - 2.0 + 0.0, + 1.0, + 0.0 ] }, "east": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, 1.0, - 15.0, - 2.0 + 0.0, + 1.0, + 0.0 ] }, "south": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, 1.0, - 15.0, - 2.0 + 0.0, + 1.0, + 0.0 ] }, "west": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, 1.0, - 15.0, - 2.0 + 0.0, + 1.0, + 0.0 ] }, "up": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, 1.0, - 15.0, - 2.0 + 0.0, + 1.0, + 0.0 ] }, "down": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, 1.0, - 15.0, - 2.0 + 0.0, + 1.0, + 0.0 ] } } diff --git a/src/main/resources/assets/refinedstorage/models/block/disk_near_capacity.json b/src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json old mode 100755 new mode 100644 similarity index 66% rename from src/main/resources/assets/refinedstorage/models/block/disk_near_capacity.json rename to src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json index 5670751f2..1002b12b4 --- a/src/main/resources/assets/refinedstorage/models/block/disk_near_capacity.json +++ b/src/main/resources/assets/refinedstorage/models/block/disks/disk_near_capacity.json @@ -1,7 +1,8 @@ { "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "textures": { - "0": "refinedstorage:blocks/disk_near_capacity" + "base": "refinedstorage:blocks/disks/disk", + "led": "refinedstorage:blocks/disks/leds" }, "elements": [ { @@ -18,7 +19,7 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 0.0, @@ -27,7 +28,7 @@ ] }, "east": { - "texture": "#0", + "texture": "#base", "uv": [ 2.0, 0.0, @@ -36,7 +37,7 @@ ] }, "south": { - "texture": "#0", + "texture": "#base", "uv": [ 9.0, 0.0, @@ -45,7 +46,7 @@ ] }, "west": { - "texture": "#0", + "texture": "#base", "uv": [ 8.0, 0.0, @@ -54,7 +55,7 @@ ] }, "up": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 2.0, @@ -63,7 +64,7 @@ ] }, "down": { - "texture": "#0", + "texture": "#base", "uv": [ 3.0, 3.0, @@ -87,57 +88,57 @@ ], "faces": { "north": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 0.0, + 0.0, + 0.0, + 0.0 ] }, "east": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 0.0, + 0.0, + 0.0, + 0.0 ] }, "south": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 0.0, + 0.0, + 0.0, + 0.0 ] }, "west": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 0.0, + 0.0, + 0.0, + 0.0 ] }, "up": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 0.0, + 0.0, + 0.0, + 0.0 ] }, "down": { - "texture": "#0", + "texture": "#led", "uv": [ - 14.0, - 1.0, - 15.0, - 2.0 + 0.0, + 0.0, + 0.0, + 0.0 ] } } diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/disk.png b/src/main/resources/assets/refinedstorage/textures/blocks/disk.png deleted file mode 100755 index 163593866..000000000 Binary files a/src/main/resources/assets/refinedstorage/textures/blocks/disk.png and /dev/null differ diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/disk_disconnected.png b/src/main/resources/assets/refinedstorage/textures/blocks/disk_disconnected.png deleted file mode 100755 index b74c1ecd1..000000000 Binary files a/src/main/resources/assets/refinedstorage/textures/blocks/disk_disconnected.png and /dev/null differ diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/disk_full.png b/src/main/resources/assets/refinedstorage/textures/blocks/disk_full.png deleted file mode 100755 index 05ab10b24..000000000 Binary files a/src/main/resources/assets/refinedstorage/textures/blocks/disk_full.png and /dev/null differ diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/disk_near_capacity.png b/src/main/resources/assets/refinedstorage/textures/blocks/disk_near_capacity.png deleted file mode 100755 index 706e89e27..000000000 Binary files a/src/main/resources/assets/refinedstorage/textures/blocks/disk_near_capacity.png and /dev/null differ diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/disks/disk.png b/src/main/resources/assets/refinedstorage/textures/blocks/disks/disk.png new file mode 100644 index 000000000..c7bee5810 Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/blocks/disks/disk.png differ diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/disks/leds.png b/src/main/resources/assets/refinedstorage/textures/blocks/disks/leds.png new file mode 100644 index 000000000..502afcf13 Binary files /dev/null and b/src/main/resources/assets/refinedstorage/textures/blocks/disks/leds.png differ