From a0c15025b765bed9fd038e12097f3d76a540b962 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Wed, 2 Jul 2014 00:05:46 -0500 Subject: [PATCH] Fixed a possible NPE in the cable rendering logic. --- client/render/BusRenderHelper.java | 13 +++-- client/render/BusRenderer.java | 4 +- client/render/CableRenderHelper.java | 51 ++++++++++--------- client/render/blocks/RenderBlockCrafting.java | 5 +- parts/CableBusContainer.java | 47 +++++++++-------- 5 files changed, 65 insertions(+), 55 deletions(-) diff --git a/client/render/BusRenderHelper.java b/client/render/BusRenderHelper.java index 5b4ffc32..61cde8fa 100644 --- a/client/render/BusRenderHelper.java +++ b/client/render/BusRenderHelper.java @@ -34,9 +34,9 @@ public class BusRenderHelper implements IPartRenderHelper AEBaseBlock blk = (AEBaseBlock) AEApi.instance().blocks().blockMultiPart.block(); BaseBlockRender bbr = new BaseBlockRender(); - public ForgeDirection ax; - public ForgeDirection ay; - public ForgeDirection az; + private ForgeDirection ax = ForgeDirection.EAST; + private ForgeDirection ay = ForgeDirection.UP; + private ForgeDirection az = ForgeDirection.SOUTH; int color = 0xffffff; @@ -457,4 +457,11 @@ public class BusRenderHelper implements IPartRenderHelper return az; } + public void setOrientation(ForgeDirection dx, ForgeDirection dy, ForgeDirection dz) + { + ax = dx == null ? ForgeDirection.EAST : dx; + ay = dy == null ? ForgeDirection.UP : dy; + az = dz == null ? ForgeDirection.SOUTH : dz; + } + } diff --git a/client/render/BusRenderer.java b/client/render/BusRenderer.java index a32432bc..33d7e5fd 100644 --- a/client/render/BusRenderer.java +++ b/client/render/BusRenderer.java @@ -112,9 +112,7 @@ public class BusRenderer implements IItemRenderer BusRenderHelper.instance.setInvColor( 0xffffff ); renderer.blockAccess = ClientHelper.proxy.getWorld(); - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + BusRenderHelper.instance.setOrientation( ForgeDirection.EAST, ForgeDirection.UP, ForgeDirection.SOUTH ); renderer.uvRotateBottom = renderer.uvRotateEast = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0; renderer.useInventoryTint = false; diff --git a/client/render/CableRenderHelper.java b/client/render/CableRenderHelper.java index 6211f4a7..bf7b7e6d 100644 --- a/client/render/CableRenderHelper.java +++ b/client/render/CableRenderHelper.java @@ -63,8 +63,8 @@ public class CableRenderHelper if ( part != null ) { cableBusContainer.setSide( s ); - BusCollisionHelper bch = new BusCollisionHelper( boxes, BusRenderHelper.instance.ax, BusRenderHelper.instance.ay, - BusRenderHelper.instance.az, null, true ); + BusRenderHelper brh = BusRenderHelper.instance; + BusCollisionHelper bch = new BusCollisionHelper( boxes, brh.getWorldX(), brh.getWorldY(), brh.getWorldZ(), null, true ); part.getBoxes( bch ); } } @@ -132,46 +132,49 @@ public class CableRenderHelper IPart part = cableBusContainer.getPart( s ); if ( part != null ) { + ForgeDirection ax, ay, az; + switch (s) { case DOWN: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.NORTH; - BusRenderHelper.instance.az = ForgeDirection.DOWN; + ax = ForgeDirection.EAST; + ay = ForgeDirection.NORTH; + az = ForgeDirection.DOWN; break; case UP: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.SOUTH; - BusRenderHelper.instance.az = ForgeDirection.UP; + ax = ForgeDirection.EAST; + ay = ForgeDirection.SOUTH; + az = ForgeDirection.UP; break; case EAST: - BusRenderHelper.instance.ax = ForgeDirection.SOUTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.EAST; + ax = ForgeDirection.SOUTH; + ay = ForgeDirection.UP; + az = ForgeDirection.EAST; break; case WEST: - BusRenderHelper.instance.ax = ForgeDirection.NORTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.WEST; + ax = ForgeDirection.NORTH; + ay = ForgeDirection.UP; + az = ForgeDirection.WEST; break; case NORTH: - BusRenderHelper.instance.ax = ForgeDirection.WEST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.NORTH; + ax = ForgeDirection.WEST; + ay = ForgeDirection.UP; + az = ForgeDirection.NORTH; break; case SOUTH: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; case UNKNOWN: default: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; - } + + BusRenderHelper.instance.setOrientation( ax, ay, az ); part.renderDynamic( x, y, z, BusRenderHelper.instance, BusRenderer.instance.renderer ); } } diff --git a/client/render/blocks/RenderBlockCrafting.java b/client/render/blocks/RenderBlockCrafting.java index ab4c2b0d..f35633ee 100644 --- a/client/render/blocks/RenderBlockCrafting.java +++ b/client/render/blocks/RenderBlockCrafting.java @@ -61,9 +61,8 @@ public class RenderBlockCrafting extends BaseBlockRender BusRenderHelper i = BusRenderHelper.instance; renderer.blockAccess = w; i.setPass( 0 ); - i.ax = ForgeDirection.EAST; - i.ay = ForgeDirection.UP; - i.az = ForgeDirection.SOUTH; + + i.setOrientation( ForgeDirection.EAST, ForgeDirection.UP, ForgeDirection.SOUTH ); try { diff --git a/parts/CableBusContainer.java b/parts/CableBusContainer.java index dcff47c8..06dd8a65 100644 --- a/parts/CableBusContainer.java +++ b/parts/CableBusContainer.java @@ -528,46 +528,49 @@ public class CableBusContainer implements AEMultiTile, ICableBusContainer public void setSide(ForgeDirection s) { + ForgeDirection ax, ay, az; + switch (s) { case DOWN: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.NORTH; - BusRenderHelper.instance.az = ForgeDirection.DOWN; + ax = ForgeDirection.EAST; + ay = ForgeDirection.NORTH; + az = ForgeDirection.DOWN; break; case UP: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.SOUTH; - BusRenderHelper.instance.az = ForgeDirection.UP; + ax = ForgeDirection.EAST; + ay = ForgeDirection.SOUTH; + az = ForgeDirection.UP; break; case EAST: - BusRenderHelper.instance.ax = ForgeDirection.SOUTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.EAST; + ax = ForgeDirection.SOUTH; + ay = ForgeDirection.UP; + az = ForgeDirection.EAST; break; case WEST: - BusRenderHelper.instance.ax = ForgeDirection.NORTH; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.WEST; + ax = ForgeDirection.NORTH; + ay = ForgeDirection.UP; + az = ForgeDirection.WEST; break; case NORTH: - BusRenderHelper.instance.ax = ForgeDirection.WEST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.NORTH; + ax = ForgeDirection.WEST; + ay = ForgeDirection.UP; + az = ForgeDirection.NORTH; break; case SOUTH: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; case UNKNOWN: default: - BusRenderHelper.instance.ax = ForgeDirection.EAST; - BusRenderHelper.instance.ay = ForgeDirection.UP; - BusRenderHelper.instance.az = ForgeDirection.SOUTH; + ax = ForgeDirection.EAST; + ay = ForgeDirection.UP; + az = ForgeDirection.SOUTH; break; - } + + BusRenderHelper.instance.setOrientation( ax, ay, az ); } @SideOnly(Side.CLIENT)