Improved TextureAtlasSprite discovery so each side of the cover renders the proper side of the block
This commit is contained in:
@@ -23,6 +23,7 @@ import net.minecraftforge.client.model.data.IModelData;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@@ -92,19 +93,17 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
hasWest = manager.hasCover(Direction.WEST);
|
hasWest = manager.hasCover(Direction.WEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureAtlasSprite sprite = RenderUtils.getSprite(Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(coverState), coverState, side, rand);
|
|
||||||
|
|
||||||
switch (cover.getType()) {
|
switch (cover.getType()) {
|
||||||
case NORMAL:
|
case NORMAL:
|
||||||
addNormalCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, handle);
|
addNormalCover(quads, coverState, coverSide, hasUp, hasDown, hasEast, hasWest, handle, rand);
|
||||||
break;
|
break;
|
||||||
case HOLLOW:
|
case HOLLOW:
|
||||||
addHollowCover(quads, sprite, coverSide, hasUp, hasDown, hasEast, hasWest, getHollowCoverSize(state, coverSide));
|
addHollowCover(quads, coverState, coverSide, hasUp, hasDown, hasEast, hasWest, getHollowCoverSize(state, coverSide), rand);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addNormalCover(List<BakedQuad> quads, TextureAtlasSprite sprite, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle) {
|
private static void addNormalCover(List<BakedQuad> quads, BlockState state, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, boolean handle, Random random) {
|
||||||
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
|
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
|
||||||
|
|
||||||
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
|
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
|
||||||
@@ -138,7 +137,8 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
quads.addAll(new CubeBuilder().from(from.getX(), from.getY(), from.getZ()).to(to.getX(), to.getY(), to.getZ()).addFaces(face -> new CubeBuilder.Face(face, sprite)).bake());
|
HashMap<Direction, TextureAtlasSprite> spriteCache = new HashMap<>();
|
||||||
|
quads.addAll(new CubeBuilder().from(from.getX(), from.getY(), from.getZ()).to(to.getX(), to.getY(), to.getZ()).addFaces(face -> new CubeBuilder.Face(face, spriteCache.computeIfAbsent(face, direction -> RenderUtils.getSprite(Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state), state, direction, random)))).bake());
|
||||||
|
|
||||||
if (handle) {
|
if (handle) {
|
||||||
if (BORDER_SPRITE == null) {
|
if (BORDER_SPRITE == null) {
|
||||||
@@ -154,7 +154,7 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addHollowCover(List<BakedQuad> quads, TextureAtlasSprite sprite, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, int size) {
|
private static void addHollowCover(List<BakedQuad> quads, BlockState state, Direction coverSide, boolean hasUp, boolean hasDown, boolean hasEast, boolean hasWest, int size, Random random) {
|
||||||
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
|
AxisAlignedBB bounds = ConstantsCable.getCoverBounds(coverSide);
|
||||||
|
|
||||||
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
|
Vector3f from = new Vector3f((float) bounds.minX * 16, (float) bounds.minY * 16, (float) bounds.minZ * 16);
|
||||||
@@ -197,11 +197,11 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
from.setZ(16 - size);
|
from.setZ(16 - size);
|
||||||
to.setZ(16);
|
to.setZ(16);
|
||||||
}
|
}
|
||||||
|
HashMap<Direction, TextureAtlasSprite> spriteCache = new HashMap<>();
|
||||||
quads.addAll(new CubeBuilder()
|
quads.addAll(new CubeBuilder()
|
||||||
.from(from.getX(), from.getY(), from.getZ())
|
.from(from.getX(), from.getY(), from.getZ())
|
||||||
.to(to.getX(), to.getY(), to.getZ())
|
.to(to.getX(), to.getY(), to.getZ())
|
||||||
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
.addFaces(face -> new CubeBuilder.Face(face, spriteCache.computeIfAbsent(face, direction -> RenderUtils.getSprite(Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state), state, direction, random))))
|
||||||
.bake()
|
.bake()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
quads.addAll(new CubeBuilder()
|
quads.addAll(new CubeBuilder()
|
||||||
.from(from.getX(), from.getY(), from.getZ())
|
.from(from.getX(), from.getY(), from.getZ())
|
||||||
.to(to.getX(), to.getY(), to.getZ())
|
.to(to.getX(), to.getY(), to.getZ())
|
||||||
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
.addFaces(face -> new CubeBuilder.Face(face, spriteCache.computeIfAbsent(face, direction -> RenderUtils.getSprite(Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state), state, direction, random))))
|
||||||
.bake()
|
.bake()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -296,7 +296,7 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
quads.addAll(new CubeBuilder()
|
quads.addAll(new CubeBuilder()
|
||||||
.from(from.getX(), from.getY(), from.getZ())
|
.from(from.getX(), from.getY(), from.getZ())
|
||||||
.to(to.getX(), to.getY(), to.getZ())
|
.to(to.getX(), to.getY(), to.getZ())
|
||||||
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
.addFaces(face -> new CubeBuilder.Face(face, spriteCache.computeIfAbsent(face, direction -> RenderUtils.getSprite(Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state), state, direction, random))))
|
||||||
.bake()
|
.bake()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -356,7 +356,7 @@ public class BakedModelCableCover extends DelegateBakedModel{
|
|||||||
quads.addAll(new CubeBuilder()
|
quads.addAll(new CubeBuilder()
|
||||||
.from(from.getX(), from.getY(), from.getZ())
|
.from(from.getX(), from.getY(), from.getZ())
|
||||||
.to(to.getX(), to.getY(), to.getZ())
|
.to(to.getX(), to.getY(), to.getZ())
|
||||||
.addFaces(face -> new CubeBuilder.Face(face, sprite))
|
.addFaces(face -> new CubeBuilder.Face(face, spriteCache.computeIfAbsent(face, direction -> RenderUtils.getSprite(Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state), state, direction, random))))
|
||||||
.bake()
|
.bake()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user