mirror of
https://github.com/GTNewHorizons/EnderIO.git
synced 2026-10-26 14:24:40 +00:00
#1657 Remove caching of IIcons in soul binder renderer.
This commit is contained in:
1 parent
1e4eedb5b2
commit
3a71e193ac
1 file changed
+12
-20
@@ -20,8 +20,6 @@ import crazypants.util.ForgeDirectionOffsets;
|
||||
|
||||
public class SoulBinderRenderer implements ISimpleBlockRenderingHandler {
|
||||
|
||||
private IIcon soulariumIcon;
|
||||
private IIcon darkSteelIcon;
|
||||
private float skullScale = 0.5f;
|
||||
private BoundingBox scaledBB = BoundingBox.UNIT_CUBE.scale(skullScale, skullScale, skullScale);
|
||||
private IIcon[] icons = new IIcon[6];
|
||||
@@ -39,9 +37,7 @@ public class SoulBinderRenderer implements ISimpleBlockRenderingHandler {
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||
|
||||
if(soulariumIcon == null) {
|
||||
soulariumIcon = EnderIO.blockSoulFuser.getIcon(ForgeDirection.EAST.ordinal(), 0);
|
||||
}
|
||||
IIcon soulariumIcon = EnderIO.blockSoulFuser.getIcon(ForgeDirection.EAST.ordinal(), 0);
|
||||
|
||||
//Horrible hack to get the MC lighting engine to set the correct values for me
|
||||
if(renderer != null && world != null) {
|
||||
@@ -54,23 +50,24 @@ public class SoulBinderRenderer implements ISimpleBlockRenderingHandler {
|
||||
Tessellator.instance.addTranslation(x, y, z);
|
||||
|
||||
bb = BoundingBox.UNIT_CUBE.scale(0.85, 0.85, 0.85);
|
||||
setIcons(soulariumIcon, ForgeDirection.NORTH);
|
||||
setIcons(soulariumIcon, soulariumIcon, ForgeDirection.NORTH);
|
||||
CubeRenderer.render(bb, icons, true);
|
||||
|
||||
float slabWidth = 0.15f;
|
||||
bb = BoundingBox.UNIT_CUBE.scale(1, slabWidth, 1);
|
||||
bb = bb.translate(0, 0.5f - (slabWidth / 2), 0);
|
||||
setIcons(EnderIO.blockSoulFuser.getIcon(ForgeDirection.UP.ordinal(), 0), ForgeDirection.UP);
|
||||
setIcons(soulariumIcon, EnderIO.blockSoulFuser.getIcon(ForgeDirection.UP.ordinal(), 0), ForgeDirection.UP);
|
||||
CubeRenderer.render(bb, icons, true);
|
||||
|
||||
bb = BoundingBox.UNIT_CUBE.scale(1, slabWidth, 1);
|
||||
bb = bb.translate(0, -0.5f + (slabWidth / 2), 0);
|
||||
setIcons(soulariumIcon, ForgeDirection.NORTH);
|
||||
setIcons(soulariumIcon, soulariumIcon, ForgeDirection.NORTH);
|
||||
|
||||
CubeRenderer.render(bb, icons, true);
|
||||
|
||||
IIcon endermanIcon;
|
||||
int facing = ForgeDirection.SOUTH.ordinal();;
|
||||
int facing = ForgeDirection.SOUTH.ordinal();
|
||||
|
||||
if(world == null || !(world.getTileEntity(x, y, z) instanceof TileSoulBinder)) {
|
||||
endermanIcon = EnderIO.blockSoulFuser.endermanSkullIcon;
|
||||
} else {
|
||||
@@ -79,32 +76,27 @@ public class SoulBinderRenderer implements ISimpleBlockRenderingHandler {
|
||||
endermanIcon = sb.isActive() ? EnderIO.blockSoulFuser.endermanSkullIconOn : EnderIO.blockSoulFuser.endermanSkullIcon;
|
||||
}
|
||||
|
||||
renderSkull(forFacing(ForgeDirection.SOUTH, facing), endermanIcon);
|
||||
renderSkull(forFacing(ForgeDirection.WEST, facing), EnderIO.blockSoulFuser.skeletonSkullIcon);
|
||||
renderSkull(forFacing(ForgeDirection.NORTH, facing), EnderIO.blockSoulFuser.zombieSkullIcon);
|
||||
renderSkull(forFacing(ForgeDirection.EAST, facing), EnderIO.blockSoulFuser.creeperSkullIcon);
|
||||
renderSkull(forFacing(ForgeDirection.SOUTH, facing), soulariumIcon, endermanIcon);
|
||||
renderSkull(forFacing(ForgeDirection.WEST, facing), soulariumIcon, EnderIO.blockSoulFuser.skeletonSkullIcon);
|
||||
renderSkull(forFacing(ForgeDirection.NORTH, facing), soulariumIcon, EnderIO.blockSoulFuser.zombieSkullIcon);
|
||||
renderSkull(forFacing(ForgeDirection.EAST, facing), soulariumIcon, EnderIO.blockSoulFuser.creeperSkullIcon);
|
||||
|
||||
Tessellator.instance.addTranslation(-x, -y, -z);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private ForgeDirection forFacing(ForgeDirection side, int facing) {
|
||||
return ForgeDirection.values()[ClientProxy.sideAndFacingToSpriteOffset[side.ordinal()][facing]];
|
||||
}
|
||||
|
||||
private void renderSkull(ForgeDirection face, IIcon faceIcon) {
|
||||
private void renderSkull(ForgeDirection face, IIcon soulariumIcon, IIcon faceIcon) {
|
||||
BoundingBox bb;
|
||||
bb = scaledBB.translate(ForgeDirectionOffsets.offsetScaled(face, 0.5 - skullScale / 2));
|
||||
setIcons(faceIcon, face);
|
||||
setIcons(soulariumIcon, faceIcon, face);
|
||||
CubeRenderer.render(bb, icons, true);
|
||||
}
|
||||
|
||||
private void setIcons(IIcon faceIcon, ForgeDirection faceSide) {
|
||||
setIcons(soulariumIcon, faceIcon, faceSide);
|
||||
}
|
||||
|
||||
private void setIcons(IIcon defaultIcon, IIcon faceIcon, ForgeDirection faceSide) {
|
||||
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||
icons[dir.ordinal()] = dir == faceSide ? faceIcon : defaultIcon;
|
||||
|
||||
Reference in new issue
Block a user