diff --git a/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java b/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java index 8ebf386a9..3cb8e1f35 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java +++ b/src/main/java/com/hbm/render/tileentity/RenderCraneConsole.java @@ -116,26 +116,26 @@ public class RenderCraneConsole extends TileEntitySpecialRenderer { switch((craneRotationOffset + teFacing) % 360) { case 0: girderSpan = console.spanF + console.spanB + 1; - GL11.glTranslated(posX + console.spanB, 0, 0); + GL11.glTranslated(posX - console.spanB, 0, 0); break; case 90: girderSpan = console.spanL + console.spanR + 1; - GL11.glTranslated(0, 0, -posZ - console.spanR); + GL11.glTranslated(0, 0, -posZ + console.spanR); break; case 180: girderSpan = console.spanF + console.spanB + 1; - GL11.glTranslated(posX - console.spanF, 0, 0); + GL11.glTranslated(posX + console.spanF, 0, 0); break; case 270: girderSpan = console.spanL + console.spanR + 1; - GL11.glTranslated(0, 0, -posZ + console.spanL); + GL11.glTranslated(0, 0, -posZ - console.spanL); break; } GL11.glRotatef(craneRotationOffset, 0F, 1F, 0F); for(int i = 0; i < girderSpan; i++) { ResourceManager.rbmk_crane.renderPart("Girder"); - GL11.glTranslated(1, 0, 0); + GL11.glTranslated(-1, 0, 0); } GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index dca789607..74ce6ec07 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -275,10 +275,16 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp this.centerY = y + RBMKDials.getColumnHeight(worldObj) + 1; this.centerZ = z; - this.spanF = 16; - this.spanB = 7; - this.spanL = 7; - this.spanR = 7; + int girderY = centerY + 6; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + this.spanF = this.findRoomExtent(x, girderY, z, dir, 0); + dir = dir.getRotation(ForgeDirection.UP); + this.spanR = this.findRoomExtent(x, girderY, z, dir, 0); + dir = dir.getRotation(ForgeDirection.UP); + this.spanB = this.findRoomExtent(x, girderY, z, dir, 0); + dir = dir.getRotation(ForgeDirection.UP); + this.spanL = this.findRoomExtent(x, girderY, z, dir, 0); this.height = 7; @@ -287,6 +293,16 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp this.markDirty(); } + private int findRoomExtent(int x, int y, int z, ForgeDirection dir, int def) { + for (int i = 1; i < 32; i++) { + if (!worldObj.isAirBlock(x + dir.offsetX * i, y, z + dir.offsetZ * i)) { + return i - 1; + } + } + + return def; + } + public void cycleCraneRotation() { this.craneRotationOffset = (this.craneRotationOffset + 90) % 360; }