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;
|
import java.util.List;
|
||||||
|
|
||||||
public class BakedModelCableCover implements IBakedModel {
|
public class BakedModelCableCover implements IBakedModel {
|
||||||
|
private static TextureAtlasSprite GREY_SPRITE;
|
||||||
|
|
||||||
private IBakedModel base;
|
private IBakedModel base;
|
||||||
private TextureAtlasSprite greySprite;
|
|
||||||
|
|
||||||
public BakedModelCableCover(IBakedModel base) {
|
public BakedModelCableCover(IBakedModel base) {
|
||||||
this.base = base;
|
this.base = base;
|
||||||
@@ -36,19 +37,25 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
if (state != null) {
|
if (state != null) {
|
||||||
IExtendedBlockState s = (IExtendedBlockState) state;
|
IExtendedBlockState s = (IExtendedBlockState) state;
|
||||||
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_NORTH), EnumFacing.NORTH, side, rand, s);
|
boolean hasUp = CoverManager.getBlockState(s.getValue(BlockCable.COVER_UP)) != null;
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_SOUTH), EnumFacing.SOUTH, side, rand, s);
|
boolean hasDown = CoverManager.getBlockState(s.getValue(BlockCable.COVER_DOWN)) != null;
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_EAST), EnumFacing.EAST, side, rand, s);
|
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_WEST), EnumFacing.WEST, side, rand, s);
|
boolean hasEast = CoverManager.getBlockState(s.getValue(BlockCable.COVER_EAST)) != null;
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_DOWN), EnumFacing.DOWN, side, rand, s);
|
boolean hasWest = CoverManager.getBlockState(s.getValue(BlockCable.COVER_WEST)) != null;
|
||||||
addCover(quads, s.getValue(BlockCable.COVER_UP), EnumFacing.UP, side, rand, s);
|
|
||||||
|
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;
|
return quads;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addCover(List<BakedQuad> quads, @Nullable ItemStack coverStack, EnumFacing coverSide, EnumFacing side, long rand, IExtendedBlockState state) {
|
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) {
|
if (coverStack == null || coverStack.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,18 +69,14 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
|
|
||||||
TextureAtlasSprite sprite = getSprite(coverModel, coverState, side, rand);
|
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;
|
ModelRotation modelRotation = ModelRotation.X0_Y0;
|
||||||
|
|
||||||
int xStart = 0;
|
int xStart = 0;
|
||||||
int xEnd = 16;
|
int xEnd = 16;
|
||||||
int xTexStart = 0;
|
int xTexStart = 0;
|
||||||
int xTexEnd = 16;
|
int xTexEnd = 16;
|
||||||
|
int xTexBackStart = 0;
|
||||||
|
int xTexBackEnd = 16;
|
||||||
|
|
||||||
int yStart = 0;
|
int yStart = 0;
|
||||||
int yEnd = 16;
|
int yEnd = 16;
|
||||||
@@ -84,23 +87,27 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
if (hasWest) {
|
if (hasWest) {
|
||||||
xStart = 2;
|
xStart = 2;
|
||||||
xTexEnd = 14;
|
xTexEnd = 14;
|
||||||
|
xTexBackStart = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasEast) {
|
if (hasEast) {
|
||||||
xEnd = 14;
|
xEnd = 14;
|
||||||
xTexStart = 2;
|
xTexStart = 2;
|
||||||
|
xTexBackEnd = 14;
|
||||||
}
|
}
|
||||||
} else if (coverSide == EnumFacing.SOUTH) {
|
} else if (coverSide == EnumFacing.SOUTH) {
|
||||||
modelRotation = ModelRotation.X0_Y180;
|
modelRotation = ModelRotation.X0_Y180;
|
||||||
|
|
||||||
if (hasWest) {
|
if (hasWest) {
|
||||||
xStart = 2;
|
xEnd = 14;
|
||||||
xTexStart = 2;
|
xTexStart = 2;
|
||||||
|
xTexBackEnd = 14;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasEast) {
|
if (hasEast) {
|
||||||
xEnd = 14;
|
xStart = 2;
|
||||||
xTexEnd = 14;
|
xTexEnd = 14;
|
||||||
|
xTexBackStart = 2;
|
||||||
}
|
}
|
||||||
} else if (coverSide == EnumFacing.EAST) {
|
} else if (coverSide == EnumFacing.EAST) {
|
||||||
modelRotation = ModelRotation.X0_Y90;
|
modelRotation = ModelRotation.X0_Y90;
|
||||||
@@ -129,7 +136,7 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
.to(xEnd, yEnd, 2)
|
.to(xEnd, yEnd, 2)
|
||||||
|
|
||||||
.face(EnumFacing.NORTH, xTexStart, xTexEnd, yTexStart, yTexEnd, sprite)
|
.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.UP, 0, 16, 0, 2, sprite)
|
||||||
.face(EnumFacing.DOWN, 0, 16, 14, 16, sprite)
|
.face(EnumFacing.DOWN, 0, 16, 14, 16, sprite)
|
||||||
@@ -141,20 +148,20 @@ public class BakedModelCableCover implements IBakedModel {
|
|||||||
.bake()
|
.bake()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (this.greySprite == null) {
|
if (GREY_SPRITE == null) {
|
||||||
this.greySprite = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey");
|
GREY_SPRITE = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(RS.ID + ":blocks/generic_grey");
|
||||||
}
|
}
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder()
|
quads.addAll(new CubeBuilder()
|
||||||
.from(7, 7, 2)
|
.from(7, 7, 2)
|
||||||
.to(9, 9, 6)
|
.to(9, 9, 6)
|
||||||
|
|
||||||
.face(EnumFacing.NORTH, 0, 0, 4, 4, greySprite)
|
.face(EnumFacing.NORTH, 0, 0, 4, 4, GREY_SPRITE)
|
||||||
.face(EnumFacing.EAST, 0, 0, 2, 4, greySprite)
|
.face(EnumFacing.EAST, 0, 0, 2, 4, GREY_SPRITE)
|
||||||
.face(EnumFacing.SOUTH, 0, 0, 4, 4, greySprite)
|
.face(EnumFacing.SOUTH, 0, 0, 4, 4, GREY_SPRITE)
|
||||||
.face(EnumFacing.WEST, 0, 0, 2, 4, greySprite)
|
.face(EnumFacing.WEST, 0, 0, 2, 4, GREY_SPRITE)
|
||||||
.face(EnumFacing.UP, 0, 0, 4, 2, greySprite)
|
.face(EnumFacing.UP, 0, 0, 4, 2, GREY_SPRITE)
|
||||||
.face(EnumFacing.DOWN, 0, 0, 4, 2, greySprite)
|
.face(EnumFacing.DOWN, 0, 0, 4, 2, GREY_SPRITE)
|
||||||
|
|
||||||
.rotate(modelRotation)
|
.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;
|
TextureAtlasSprite sprite = null;
|
||||||
|
|
||||||
BlockRenderLayer originalLayer = MinecraftForgeClient.getRenderLayer();
|
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.CacheBuilder;
|
||||||
import com.google.common.cache.CacheLoader;
|
import com.google.common.cache.CacheLoader;
|
||||||
import com.google.common.cache.LoadingCache;
|
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.item.ItemCover;
|
||||||
import com.raoulvdberge.refinedstorage.render.CubeBuilder;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
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.BakedQuad;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
@@ -27,7 +23,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class BakedModelCover implements IBakedModel {
|
public class BakedModelCover extends BakedModelCableCover {
|
||||||
private class CacheKey {
|
private class CacheKey {
|
||||||
private IBakedModel base;
|
private IBakedModel base;
|
||||||
private IBlockState state;
|
private IBlockState state;
|
||||||
@@ -71,32 +67,7 @@ public class BakedModelCover implements IBakedModel {
|
|||||||
public List<BakedQuad> load(CacheKey key) {
|
public List<BakedQuad> load(CacheKey key) {
|
||||||
List<BakedQuad> quads = new ArrayList<>(key.base.getQuads(key.state, key.side, 0));
|
List<BakedQuad> quads = new ArrayList<>(key.base.getQuads(key.state, key.side, 0));
|
||||||
|
|
||||||
TextureAtlasSprite sprite = Minecraft.getMinecraft().getTextureMapBlocks().getMissingSprite();
|
addCover(quads, key.stack, EnumFacing.NORTH, key.side, 0, false, false, false, false);
|
||||||
|
|
||||||
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()
|
|
||||||
);
|
|
||||||
|
|
||||||
return quads;
|
return quads;
|
||||||
}
|
}
|
||||||
@@ -107,6 +78,8 @@ public class BakedModelCover implements IBakedModel {
|
|||||||
private IBakedModel base;
|
private IBakedModel base;
|
||||||
|
|
||||||
public BakedModelCover(IBakedModel base, @Nullable ItemStack stack) {
|
public BakedModelCover(IBakedModel base, @Nullable ItemStack stack) {
|
||||||
|
super(base);
|
||||||
|
|
||||||
this.base = base;
|
this.base = base;
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
}
|
}
|
||||||
@@ -122,12 +95,6 @@ public class BakedModelCover implements IBakedModel {
|
|||||||
return CACHE.getUnchecked(key);
|
return CACHE.getUnchecked(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public ItemCameraTransforms getItemCameraTransforms() {
|
|
||||||
return base.getItemCameraTransforms();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemOverrideList getOverrides() {
|
public ItemOverrideList getOverrides() {
|
||||||
if (stack != null) {
|
if (stack != null) {
|
||||||
@@ -142,11 +109,6 @@ public class BakedModelCover implements IBakedModel {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAmbientOcclusion(IBlockState state) {
|
|
||||||
return base.isAmbientOcclusion(state);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) {
|
public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemCameraTransforms.TransformType cameraTransformType) {
|
||||||
Pair<? extends IBakedModel, Matrix4f> matrix = base.handlePerspective(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());
|
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": {
|
"variants": {
|
||||||
"inventory": [
|
"inventory": [
|
||||||
{
|
{
|
||||||
"model": "refinedstorage:cover",
|
"model": "refinedstorage:cable_core",
|
||||||
"transform": "forge:default-block"
|
"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