rotate to always show controller at bottom right

This commit is contained in:
George Paton 2025-08-28 15:47:22 +10:00
parent c978fa8955
commit a636440d13
3 changed files with 27 additions and 7 deletions

View File

@ -56,7 +56,7 @@ public class MachinePWRController extends BlockContainer implements ITooltipProv
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata) {
return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon);
return metadata == 0 && side != 0 && side != 1 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon);
}
@Override

View File

@ -18,12 +18,14 @@ import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraftforge.common.util.ForgeDirection;
public class GUIScreenSlicePrinter extends GuiScreen {
private final int x1, y1, z1;
private final int x2, y2, z2;
private final int sizeX, sizeY, sizeZ;
private final ForgeDirection dir;
private HashSet<Block> whitelist;
@ -34,7 +36,7 @@ public class GUIScreenSlicePrinter extends GuiScreen {
private String dirname;
private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss");
public GUIScreenSlicePrinter(int x1, int y1, int z1, int x2, int y2, int z2) {
public GUIScreenSlicePrinter(int x1, int y1, int z1, int x2, int y2, int z2, ForgeDirection dir) {
this.x1 = Math.min(x1, x2);
this.y1 = Math.min(y1, y2);
this.z1 = Math.min(z1, z2);
@ -42,6 +44,8 @@ public class GUIScreenSlicePrinter extends GuiScreen {
this.y2 = Math.max(y1, y2);
this.z2 = Math.max(z1, z2);
this.dir = dir;
this.sizeX = this.x2 - this.x1 + 1;
this.sizeY = this.y2 - this.y1 + 1;
this.sizeZ = this.z2 - this.z1 + 1;
@ -49,8 +53,8 @@ public class GUIScreenSlicePrinter extends GuiScreen {
dirname = dateFormat.format(new Date()).toString();
}
public GUIScreenSlicePrinter(int x1, int y1, int z1, int x2, int y2, int z2, HashSet<Block> whitelist) {
this(x1, y1, z1, x2, y2, z2);
public GUIScreenSlicePrinter(int x1, int y1, int z1, int x2, int y2, int z2, ForgeDirection dir, HashSet<Block> whitelist) {
this(x1, y1, z1, x2, y2, z2, dir);
this.whitelist = whitelist;
}
@ -121,7 +125,20 @@ public class GUIScreenSlicePrinter extends GuiScreen {
GL11.glRotated(-30, 1, 0, 0);
GL11.glRotated(-45, 0, 1, 0);
GL11.glTranslated(sizeX / -2D, -sizeY / 2D, sizeZ / -2D);
if(dir == ForgeDirection.WEST) {
GL11.glRotated(180, 0, 1, 0);
} else if(dir == ForgeDirection.NORTH) {
GL11.glRotated(-90, 0, 1, 0);
} else if(dir == ForgeDirection.SOUTH) {
GL11.glRotated(90, 0, 1, 0);
}
if(dir == ForgeDirection.WEST || dir == ForgeDirection.EAST) {
GL11.glTranslated(sizeX / -2D, -sizeY / 2D, sizeZ / -2D);
} else {
GL11.glTranslated(sizeZ / -2D, -sizeY / 2D, sizeX / -2D);
}
}
}

View File

@ -29,6 +29,7 @@ public class ItemPWRPrinter extends Item implements IGUIProvider {
private static int x1, y1, z1;
private static int x2, y2, z2;
private static Block[] blockSync;
private static ForgeDirection dir;
private HashSet<BlockPos> fill = new HashSet<>();
private static HashSet<Block> whitelist = new HashSet<Block>() {{
@ -44,6 +45,7 @@ public class ItemPWRPrinter extends Item implements IGUIProvider {
buf.writeInt(x2);
buf.writeInt(y2);
buf.writeInt(z2);
buf.writeInt(dir.ordinal());
for(Block block : blockSync) {
buf.writeInt(Block.getIdFromBlock(block));
@ -59,6 +61,7 @@ public class ItemPWRPrinter extends Item implements IGUIProvider {
x2 = buf.readInt();
y2 = buf.readInt();
z2 = buf.readInt();
dir = ForgeDirection.values()[buf.readInt()];
for(int x = x1; x <= x2; x++) {
for(int y = y1; y <= y2; y++) {
@ -121,7 +124,7 @@ public class ItemPWRPrinter extends Item implements IGUIProvider {
}
public void findBounds(World world, TileEntityPWRController pwr) {
ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(pwr.xCoord, pwr.yCoord, pwr.zCoord)).getOpposite();
dir = ForgeDirection.getOrientation(world.getBlockMetadata(pwr.xCoord, pwr.yCoord, pwr.zCoord)).getOpposite();
fill.clear();
fill.add(new BlockPos(pwr.xCoord, pwr.yCoord, pwr.zCoord));
@ -161,7 +164,7 @@ public class ItemPWRPrinter extends Item implements IGUIProvider {
@Override
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIScreenSlicePrinter(x1, y1, z1, x2, y2, z2, whitelist);
return new GUIScreenSlicePrinter(x1, y1, z1, x2, y2, z2, dir, whitelist);
}
@SuppressWarnings({ "unchecked", "rawtypes" })