From 7009eb883e8057006ae266e2dd680d74f452786b Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Thu, 5 Jul 2018 22:28:15 +0200 Subject: [PATCH] Fix some issues with covers. Make the item cover extend the block cover. --- .../model/baked/BakedModelCableCover.java | 61 ++++---- .../render/model/baked/BakedModelCover.java | 66 +------- .../refinedstorage/blockstates/cover.json | 2 +- .../refinedstorage/models/block/cover.json | 143 ------------------ 4 files changed, 39 insertions(+), 233 deletions(-) delete mode 100644 src/main/resources/assets/refinedstorage/models/block/cover.json diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java index e4c79347c..d7b994976 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCableCover.java @@ -22,8 +22,9 @@ import java.util.ArrayList; import java.util.List; public class BakedModelCableCover implements IBakedModel { + private static TextureAtlasSprite GREY_SPRITE; + private IBakedModel base; - private TextureAtlasSprite greySprite; public BakedModelCableCover(IBakedModel base) { this.base = base; @@ -36,19 +37,25 @@ public class BakedModelCableCover implements IBakedModel { if (state != null) { IExtendedBlockState s = (IExtendedBlockState) state; - addCover(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, s); - addCover(quads, s.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, s); - addCover(quads, s.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, s); - addCover(quads, s.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, s); - addCover(quads, s.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, s); - addCover(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, s); + boolean hasUp = CoverManager.getBlockState(s.getValue(BlockCable.COVER_UP)) != null; + boolean hasDown = CoverManager.getBlockState(s.getValue(BlockCable.COVER_DOWN)) != null; + + boolean hasEast = CoverManager.getBlockState(s.getValue(BlockCable.COVER_EAST)) != null; + boolean hasWest = CoverManager.getBlockState(s.getValue(BlockCable.COVER_WEST)) != null; + + addCover(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, hasUp, hasDown, hasEast, hasWest); + addCover(quads, s.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, hasUp, hasDown, hasEast, hasWest); + addCover(quads, s.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, hasUp, hasDown, hasEast, hasWest); + addCover(quads, s.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, hasUp, hasDown, hasEast, hasWest); + addCover(quads, s.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, hasUp, hasDown, hasEast, hasWest); + addCover(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, hasUp, hasDown, hasEast, hasWest); } return quads; } - private void addCover(List quads, @Nullable ItemStack coverStack, EnumFacing coverSide, EnumFacing side, long rand, IExtendedBlockState state) { - if (coverStack == null) { + protected static void addCover(List quads, @Nullable ItemStack coverStack, EnumFacing coverSide, EnumFacing side, long rand, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest) { + if (coverStack == null || coverStack.isEmpty()) { return; } @@ -62,18 +69,14 @@ public class BakedModelCableCover implements IBakedModel { TextureAtlasSprite sprite = getSprite(coverModel, coverState, side, rand); - boolean hasUp = CoverManager.getBlockState(state.getValue(BlockCable.COVER_UP)) != null; - boolean hasDown = CoverManager.getBlockState(state.getValue(BlockCable.COVER_DOWN)) != null; - - boolean hasEast = CoverManager.getBlockState(state.getValue(BlockCable.COVER_EAST)) != null; - boolean hasWest = CoverManager.getBlockState(state.getValue(BlockCable.COVER_WEST)) != null; - ModelRotation modelRotation = ModelRotation.X0_Y0; int xStart = 0; int xEnd = 16; int xTexStart = 0; int xTexEnd = 16; + int xTexBackStart = 0; + int xTexBackEnd = 16; int yStart = 0; int yEnd = 16; @@ -84,23 +87,27 @@ public class BakedModelCableCover implements IBakedModel { if (hasWest) { xStart = 2; xTexEnd = 14; + xTexBackStart = 2; } if (hasEast) { xEnd = 14; xTexStart = 2; + xTexBackEnd = 14; } } else if (coverSide == EnumFacing.SOUTH) { modelRotation = ModelRotation.X0_Y180; if (hasWest) { - xStart = 2; + xEnd = 14; xTexStart = 2; + xTexBackEnd = 14; } if (hasEast) { - xEnd = 14; + xStart = 2; xTexEnd = 14; + xTexBackStart = 2; } } else if (coverSide == EnumFacing.EAST) { modelRotation = ModelRotation.X0_Y90; @@ -129,7 +136,7 @@ public class BakedModelCableCover implements IBakedModel { .to(xEnd, yEnd, 2) .face(EnumFacing.NORTH, xTexStart, xTexEnd, yTexStart, yTexEnd, sprite) - .face(EnumFacing.SOUTH, xTexStart, xTexEnd, yTexStart, yTexEnd, sprite) + .face(EnumFacing.SOUTH, xTexBackStart, xTexBackEnd, yTexStart, yTexEnd, sprite) .face(EnumFacing.UP, 0, 16, 0, 2, sprite) .face(EnumFacing.DOWN, 0, 16, 14, 16, sprite) @@ -141,20 +148,20 @@ public class BakedModelCableCover implements IBakedModel { .bake() ); - if (this.greySprite == null) { - this.greySprite = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey"); + if (GREY_SPRITE == null) { + GREY_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey"); } quads.addAll(new CubeBuilder() .from(7, 7, 2) .to(9, 9, 6) - .face(EnumFacing.NORTH, 0, 0, 4, 4, greySprite) - .face(EnumFacing.EAST, 0, 0, 2, 4, greySprite) - .face(EnumFacing.SOUTH, 0, 0, 4, 4, greySprite) - .face(EnumFacing.WEST, 0, 0, 2, 4, greySprite) - .face(EnumFacing.UP, 0, 0, 4, 2, greySprite) - .face(EnumFacing.DOWN, 0, 0, 4, 2, greySprite) + .face(EnumFacing.NORTH, 0, 0, 4, 4, GREY_SPRITE) + .face(EnumFacing.EAST, 0, 0, 2, 4, GREY_SPRITE) + .face(EnumFacing.SOUTH, 0, 0, 4, 4, GREY_SPRITE) + .face(EnumFacing.WEST, 0, 0, 2, 4, GREY_SPRITE) + .face(EnumFacing.UP, 0, 0, 4, 2, GREY_SPRITE) + .face(EnumFacing.DOWN, 0, 0, 4, 2, GREY_SPRITE) .rotate(modelRotation) @@ -164,7 +171,7 @@ public class BakedModelCableCover implements IBakedModel { ); } - public static TextureAtlasSprite getSprite(IBakedModel coverModel, IBlockState coverState, EnumFacing facing, long rand) { + private static TextureAtlasSprite getSprite(IBakedModel coverModel, IBlockState coverState, EnumFacing facing, long rand) { TextureAtlasSprite sprite = null; BlockRenderLayer originalLayer = MinecraftForgeClient.getRenderLayer(); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java index 8f57e83cd..379935318 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/render/model/baked/BakedModelCover.java @@ -3,16 +3,12 @@ package com.raoulvdberge.refinedstorage.render.model.baked; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.raoulvdberge.refinedstorage.item.ItemCover; -import com.raoulvdberge.refinedstorage.render.CubeBuilder; import net.minecraft.block.state.IBlockState; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemOverrideList; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; @@ -27,7 +23,7 @@ import java.util.Collections; import java.util.List; import java.util.Objects; -public class BakedModelCover implements IBakedModel { +public class BakedModelCover extends BakedModelCableCover { private class CacheKey { private IBakedModel base; private IBlockState state; @@ -71,32 +67,7 @@ public class BakedModelCover implements IBakedModel { public List load(CacheKey key) { List quads = new ArrayList<>(key.base.getQuads(key.state, key.side, 0)); - TextureAtlasSprite sprite = Minecraft.getMinecraft().getTextureMapBlocks().getMissingSprite(); - - if (!key.stack.isEmpty()) { - IBlockState coverState = CoverManager.getBlockState(key.stack); - - if (coverState != null) { - IBakedModel coverModel = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState(coverState); - - sprite = BakedModelCableCover.getSprite(coverModel, coverState, key.side, 0); - } - } - - quads.addAll(new CubeBuilder() - .from(0, 0, 0) - .to(16, 16, 2) - - .face(EnumFacing.NORTH, 0, 16, 0, 16, sprite) - .face(EnumFacing.SOUTH, 0, 16, 0, 16, sprite) - - .face(EnumFacing.UP, 0, 16, 0, 2, sprite) - .face(EnumFacing.DOWN, 0, 16, 14, 16, sprite) - .face(EnumFacing.EAST, 14, 16, 0, 16, sprite) - .face(EnumFacing.WEST, 0, 2, 0, 16, sprite) - - .bake() - ); + addCover(quads, key.stack, EnumFacing.NORTH, key.side, 0, false, false, false, false); return quads; } @@ -107,6 +78,8 @@ public class BakedModelCover implements IBakedModel { private IBakedModel base; public BakedModelCover(IBakedModel base, @Nullable ItemStack stack) { + super(base); + this.base = base; this.stack = stack; } @@ -122,12 +95,6 @@ public class BakedModelCover implements IBakedModel { return CACHE.getUnchecked(key); } - @Override - @SuppressWarnings("deprecation") - public ItemCameraTransforms getItemCameraTransforms() { - return base.getItemCameraTransforms(); - } - @Override public ItemOverrideList getOverrides() { if (stack != null) { @@ -142,11 +109,6 @@ public class BakedModelCover implements IBakedModel { }; } - @Override - public boolean isAmbientOcclusion(IBlockState state) { - return base.isAmbientOcclusion(state); - } - @Override public Pair handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) { Pair matrix = base.handlePerspective(cameraTransformType); @@ -154,24 +116,4 @@ public class BakedModelCover implements IBakedModel { return Pair.of(bakedModel.getKey(), matrix.getRight()); } - - @Override - public boolean isAmbientOcclusion() { - return base.isAmbientOcclusion(); - } - - @Override - public boolean isGui3d() { - return base.isGui3d(); - } - - @Override - public boolean isBuiltInRenderer() { - return base.isBuiltInRenderer(); - } - - @Override - public TextureAtlasSprite getParticleTexture() { - return base.getParticleTexture(); - } } diff --git a/src/main/resources/assets/refinedstorage/blockstates/cover.json b/src/main/resources/assets/refinedstorage/blockstates/cover.json index 3608d114f..e1e7863d2 100644 --- a/src/main/resources/assets/refinedstorage/blockstates/cover.json +++ b/src/main/resources/assets/refinedstorage/blockstates/cover.json @@ -11,7 +11,7 @@ "variants": { "inventory": [ { - "model": "refinedstorage:cover", + "model": "refinedstorage:cable_core", "transform": "forge:default-block" } ] diff --git a/src/main/resources/assets/refinedstorage/models/block/cover.json b/src/main/resources/assets/refinedstorage/models/block/cover.json deleted file mode 100644 index b2f72e6de..000000000 --- a/src/main/resources/assets/refinedstorage/models/block/cover.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "elements": [ - { - "name": "Line1", - "from": [ - 7.0, - 7.0, - 2.0 - ], - "to": [ - 9.0, - 9.0, - 6.0 - ], - "faces": { - "north": { - "texture": "#line", - "uv": [ - 0.0, - 0.0, - 4.0, - 4.0 - ] - }, - "east": { - "texture": "#line", - "uv": [ - 0.0, - 0.0, - 2.0, - 4.0 - ] - }, - "south": { - "texture": "#line", - "uv": [ - 0.0, - 0.0, - 4.0, - 4.0 - ] - }, - "west": { - "texture": "#line", - "uv": [ - 0.0, - 0.0, - 2.0, - 4.0 - ] - }, - "up": { - "texture": "#line", - "uv": [ - 0.0, - 0.0, - 4.0, - 2.0 - ] - }, - "down": { - "texture": "#line", - "uv": [ - 0.0, - 0.0, - 4.0, - 2.0 - ] - } - } - }, - { - "name": "Core", - "from": [ - 6.0, - 6.0, - 6.0 - ], - "to": [ - 10.0, - 10.0, - 10.0 - ], - "faces": { - "north": { - "texture": "#cable", - "uv": [ - 6.0, - 6.0, - 10.0, - 10.0 - ] - }, - "east": { - "texture": "#cable", - "uv": [ - 6.0, - 6.0, - 10.0, - 10.0 - ] - }, - "south": { - "texture": "#cable", - "uv": [ - 6.0, - 6.0, - 10.0, - 10.0 - ] - }, - "west": { - "texture": "#cable", - "uv": [ - 6.0, - 6.0, - 10.0, - 10.0 - ] - }, - "up": { - "texture": "#cable", - "uv": [ - 6.0, - 6.0, - 10.0, - 10.0 - ] - }, - "down": { - "texture": "#cable", - "uv": [ - 6.0, - 6.0, - 10.0, - 10.0 - ] - } - } - } - ] -}