@SideOnly(Side.CLIENT)
public class CreateAreaGui extends GuiScreen {
private static final ResourceLocation texture = new ResourceLocation(TeleportationToArenasMod.MODID, "textures/gui/createArea.png");
private static double sax, say, saz, sbx, sby, sbz;
private static float pitchA, yawA, pitchB, yawB;
private static int rax, ray, raz, rbx, rby, rbz;
protected int xSize = 176;
protected int ySize = 155;
protected int guiLeft;
protected int guiTop;
final GuiTextField[] inputField = new GuiTextField[3*2+5*2];
final char[] allow_char = new char[]{'0','1','2','3','4','5','6','7','8','9','.','-'};
int actField = -1;
@Override
public void initGui() {
guiLeft = (width - xSize) / 2;
guiTop = (height - ySize) / 2;
if (inputField[0] == null) {
inputField[0] = new GuiTextField(fontRendererObj, width - 70, 14 * 2, 68, 12);
inputField[0].setMaxStringLength(10);
inputField[0].setText(String.valueOf(rax));
} else
inputField[0].xPosition = width - 70;
if (inputField[1] == null) {
inputField[1] = new GuiTextField(fontRendererObj, width - 70, 14 * 3, 68, 12);
inputField[1].setMaxStringLength(10);
inputField[1].setText(String.valueOf(ray));
} else
inputField[1].xPosition = width - 70;
if (inputField[2] == null) {
inputField[2] = new GuiTextField(fontRendererObj, width - 70, 14 * 4, 68, 12);
inputField[2].setMaxStringLength(10);
inputField[2].setText(String.valueOf(raz));
} else
inputField[2].xPosition = width - 70;
if (inputField[3] == null) {
inputField[3] = new GuiTextField(fontRendererObj, width - 70, 14 * 7, 68, 12);
inputField[3].setMaxStringLength(10);
inputField[3].setText(String.valueOf(rbx));
} else
inputField[3].xPosition = width - 70;
if (inputField[4] == null) {
inputField[4] = new GuiTextField(fontRendererObj, width - 70, 14 * 8, 68, 12);
inputField[4].setMaxStringLength(10);
inputField[4].setText(String.valueOf(rby));
} else
inputField[4].xPosition = width - 70;
if (inputField[5] == null) {
inputField[5] = new GuiTextField(fontRendererObj, width - 70, 14 * 9, 68, 12);
inputField[5].setMaxStringLength(10);
inputField[5].setText(String.valueOf(rbz));
} else
inputField[5].xPosition = width - 70;
if (inputField[6] == null) {
inputField[6] = new GuiTextField(fontRendererObj, 2, 14 * 2, 68, 12);
inputField[6].setMaxStringLength(10);
inputField[6].setText(String.valueOf(sax));
} else
inputField[6].xPosition = 2;
if (inputField[7] == null) {
inputField[7] = new GuiTextField(fontRendererObj, 2, 14 * 3, 68, 12);
inputField[7].setMaxStringLength(10);
inputField[7].setText(String.valueOf(say));
} else
inputField[7].xPosition = 2;
if (inputField[8] == null) {
inputField[8] = new GuiTextField(fontRendererObj, 2, 14 * 4, 68, 12);
inputField[8].setMaxStringLength(10);
inputField[8].setText(String.valueOf(saz));
} else
inputField[8].xPosition = 2;
if (inputField[9] == null) {
inputField[9] = new GuiTextField(fontRendererObj, 2, 14 * 5, 68, 12);
inputField[9].setMaxStringLength(10);
inputField[9].setText(String.valueOf(pitchA));
} else
inputField[9].xPosition = 2;
if (inputField[10] == null) {
inputField[10] = new GuiTextField(fontRendererObj, 2, 14 * 6, 68, 12);
inputField[10].setMaxStringLength(10);
inputField[10].setText(String.valueOf(yawA));
} else
inputField[10].xPosition = 2;
if (inputField[11] == null) {
inputField[11] = new GuiTextField(fontRendererObj, 2, 14 * 9, 68, 12);
inputField[11].setMaxStringLength(10);
inputField[11].setText(String.valueOf(sbx));
} else
inputField[11].xPosition = 2;
if (inputField[12] == null) {
inputField[12] = new GuiTextField(fontRendererObj, 2, 14 * 10, 68, 12);
inputField[12].setMaxStringLength(10);
inputField[12].setText(String.valueOf(sby));
} else
inputField[12].xPosition = 2;
if (inputField[13] == null) {
inputField[13] = new GuiTextField(fontRendererObj, 2, 14 * 11, 68, 12);
inputField[13].setMaxStringLength(10);
inputField[13].setText(String.valueOf(sbz));
} else
inputField[13].xPosition = 2;
if (inputField[14] == null) {
inputField[14] = new GuiTextField(fontRendererObj, 2, 14 * 12, 68, 12);
inputField[14].setMaxStringLength(10);
inputField[14].setText(String.valueOf(pitchB));
} else
inputField[14].xPosition = 2;
if (inputField[15] == null) {
inputField[15] = new GuiTextField(fontRendererObj, 2, 14 * 13, 68, 12);
inputField[15].setMaxStringLength(10);
inputField[15].setText(String.valueOf(yawB));
} else
inputField[15].xPosition = 2;
buttonList.clear();
buttonList.add(new GuiButton(0, guiLeft + xSize - 26, guiTop + 6 + 22 * 0, 20, 20, "x"));
buttonList.add(new GuiButton(1, guiLeft + xSize - 46, guiTop + ySize - 26, 40, 20, "create"));
buttonList.add(new GuiButton(2, guiLeft + xSize - 94, guiTop + ySize - 26, 40, 20, "reset"));
buttonList.add(new GuiButton(3, guiLeft + 6, guiTop + 22 * 1, 100, 20, "set point spawn A"));
buttonList.add(new GuiButton(4, guiLeft + 6, guiTop + 22 * 2, 100, 20, "set point spawn B"));
buttonList.add(new GuiButton(5, guiLeft + 6, guiTop + 10 + 22 * 3, 100, 20, "set point region A"));
buttonList.add(new GuiButton(6, guiLeft + 6, guiTop + 10 + 22 * 4, 100, 20, "set point region B"));
Keyboard.enableRepeatEvents(true);
}
@Override
public void onGuiClosed() {
Keyboard.enableRepeatEvents(false);
}
@Override
public void updateScreen() {
if (actField != -1) inputField[actField].updateCursorCounter();
}
@Override
public void actionPerformed(GuiButton btn) {
if (btn.enabled) {
switch(btn.id) {
case 0:
mc.displayGuiScreen(null);
mc.setIngameFocus();
break;
case 1:
CreateAreaMessage message = new CreateAreaMessage();
message.dim = mc.thePlayer.dimension;
message.sax = sax;
message.say = say;
message.saz = saz;
message.pitchA = pitchA;
message.yawA = yawA;
message.sbx = sbx;
message.sby = sby;
message.sbz = sbz;
message.pitchB = pitchB;
message.yawB = yawB;
message.rax = rax;
message.ray = ray;
message.raz = raz;
message.rbx = rbx;
message.rby = rby;
message.rbz = rbz;
TeleportationToArenasMod.network.sendToServer(message);
sax = say = saz = sbx = sby = sbz = 0D;
pitchA = yawA = pitchB = yawB = 0F;
rax = ray = raz = rbx = rby = rbz = 0;
mc.displayGuiScreen(null);
mc.setIngameFocus();
break;
case 2:
inputField[0].setText(String.valueOf(rax));
inputField[1].setText(String.valueOf(ray));
inputField[2].setText(String.valueOf(raz));
inputField[3].setText(String.valueOf(rbx));
inputField[4].setText(String.valueOf(rby));
inputField[5].setText(String.valueOf(rbz));
inputField[6].setText(String.valueOf(sax));
inputField[7].setText(String.valueOf(say));
inputField[8].setText(String.valueOf(saz));
inputField[9].setText(String.valueOf(pitchA));
inputField[10].setText(String.valueOf(yawA));
inputField[11].setText(String.valueOf(sbx));
inputField[12].setText(String.valueOf(sby));
inputField[13].setText(String.valueOf(sbz));
inputField[14].setText(String.valueOf(pitchB));
inputField[15].setText(String.valueOf(yawB));
break;
case 3:
sax = mc.thePlayer.posX;
say = mc.thePlayer.posY;
saz = mc.thePlayer.posZ;
pitchA = mc.thePlayer.rotationPitch;
yawA = mc.thePlayer.rotationYaw;
inputField[6].setText(String.valueOf(sax));
inputField[7].setText(String.valueOf(say));
inputField[8].setText(String.valueOf(saz));
inputField[9].setText(String.valueOf(pitchA));
inputField[10].setText(String.valueOf(yawA));
break;
case 4:
sbx = mc.thePlayer.posX;
sby = mc.thePlayer.posY;
sbz = mc.thePlayer.posZ;
pitchB = mc.thePlayer.rotationPitch;
yawB = mc.thePlayer.rotationYaw;
inputField[11].setText(String.valueOf(sbx));
inputField[12].setText(String.valueOf(sby));
inputField[13].setText(String.valueOf(sbz));
inputField[14].setText(String.valueOf(pitchB));
inputField[15].setText(String.valueOf(yawB));
break;
case 5:
rax = (int)mc.thePlayer.posX;
ray = (int)mc.thePlayer.posY;
raz = (int)mc.thePlayer.posZ;
inputField[0].setText(String.valueOf(rax));
inputField[1].setText(String.valueOf(ray));
inputField[2].setText(String.valueOf(raz));
break;
case 6:
rbx = (int)mc.thePlayer.posX;
rby = (int)mc.thePlayer.posY;
rbz = (int)mc.thePlayer.posZ;
inputField[3].setText(String.valueOf(rbx));
inputField[4].setText(String.valueOf(rby));
inputField[5].setText(String.valueOf(rbz));
break;
}
}
}
@Override
public void keyTyped(char character, int key) {
switch(key) {
case Keyboard.KEY_ESCAPE:
mc.displayGuiScreen(null);
mc.setIngameFocus();
break;
case Keyboard.KEY_TAB:
case Keyboard.KEY_RETURN:
case Keyboard.KEY_NUMPADENTER:
++actField;
if (actField >= inputField.length) actField = 0;
for (int i = 0; i < inputField.length; ++i)
inputField[i].setFocused(i == actField ? true : false);
break;
case Keyboard.KEY_UP:break;
case Keyboard.KEY_DOWN:break;
default:
if (actField != -1) {
if (inputField[actField].getText().equals("0")) inputField[actField].setText("");
inputField[actField].textboxKeyTyped(character, key);
if (inputField[actField].getText().length() > 0) {
char[] chs = inputField[actField].getText().toCharArray();
String text = "";
for (char ch : chs)
for (char c : allow_char)
if (c == ch) text += ch;
inputField[actField].setText(text);
}
if (inputField[actField].getText().length() <= 0) inputField[actField].setText("0");
}
break;
}
}
@Override
public void mouseClicked(int mouseX, int mouseY, int state) {
int k = -1;
for (int i = 0; i < inputField.length; ++i) {
inputField[i].mouseClicked(mouseX, mouseY, state);
boolean flag = mouseX >= inputField[i].xPosition && mouseX < inputField[i].xPosition + inputField[i].width && mouseY >= inputField[i].yPosition && mouseY < inputField[i].yPosition + inputField[i].height;
if (flag) k = i;
}
actField = k;
super.mouseClicked(mouseX, mouseY, state);
}
@Override
public boolean doesGuiPauseGame() {
return false;
}
@Override
public void drawScreen(int mouseX, int mouseY, float parTick) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glColor4f(0.25F, 0.25F, 0.25F, 0.625F);
drawTexturedModalRect(0, 0, 0, 0, 102, height);
drawTexturedModalRect(width - 84, 0, 0, 0, 84, height);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_TEXTURE_2D);
for (GuiTextField fild : inputField) fild.drawTextBox();
mc.fontRenderer.drawStringWithShadow("Region Point A", width - 77, 3 + 14 * 1, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("x", width - 70 - 10, 1 + 14 * 2, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("y", width - 70 - 10, 1 + 14 * 3, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("z", width - 70 - 10, 1 + 14 * 4, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("Region Point B", width - 77, 3 + 14 * 6, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("x", width - 70 - 10, 1 + 14 * 7, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("y", width - 70 - 10, 1 + 14 * 8, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("z", width - 70 - 10, 1 + 14 * 9, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("Spawn Point A", 3, 3 + 14 * 1, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("x", 75, 1 + 14 * 2, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("y", 75, 1 + 14 * 3, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("z", 75, 1 + 14 * 4, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("pitch", 75, 1 + 14 * 5, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("yaw", 75, 1 + 14 * 6, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("Spawn Point B", 3, 3 + 14 * 8, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("x", 75, 1 + 14 * 9, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("y", 75, 1 + 14 * 10, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("z", 75, 1 + 14 * 11, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("pitch", 75, 1 + 14 * 12, 0xFFFFFF);
mc.fontRenderer.drawStringWithShadow("yaw", 75, 1 + 14 * 13, 0xFFFFFF);
super.drawScreen(mouseX, mouseY, parTick);
}
}