Fix some issues with covers. Make the item cover extend the block cover.
This commit is contained in:
@@ -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<BakedQuad> quads, @Nullable ItemStack coverStack, EnumFacing coverSide, EnumFacing side, long rand, IExtendedBlockState state) {
|
||||
if (coverStack == null) {
|
||||
protected static void addCover(List<BakedQuad> 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();
|
||||
|
||||
@@ -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<BakedQuad> load(CacheKey key) {
|
||||
List<BakedQuad> 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<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) {
|
||||
Pair<? extends IBakedModel, Matrix4f> 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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"model": "refinedstorage:cover",
|
||||
"model": "refinedstorage:cable_core",
|
||||
"transform": "forge:default-block"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -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
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user