001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005 import java.io.ByteArrayOutputStream;
006 import java.io.DataOutputStream;
007 import org.lwjgl.input.Keyboard;
008
009 @SideOnly(Side.CLIENT)
010 public class GuiCommandBlock extends GuiScreen
011 {
012 /** Text field containing the command block's command. */
013 private GuiTextField commandTextField;
014
015 /** Command block being edited. */
016 private final TileEntityCommandBlock commandBlock;
017
018 public GuiCommandBlock(TileEntityCommandBlock par1)
019 {
020 this.commandBlock = par1;
021 }
022
023 /**
024 * Called from the main game loop to update the screen.
025 */
026 public void updateScreen()
027 {
028 this.commandTextField.updateCursorCounter();
029 }
030
031 /**
032 * Adds the buttons (and other controls) to the screen in question.
033 */
034 public void initGui()
035 {
036 StringTranslate var1 = StringTranslate.getInstance();
037 Keyboard.enableRepeatEvents(true);
038 this.controlList.clear();
039 this.controlList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + 12, var1.translateKey("gui.done")));
040 this.controlList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 120 + 12, var1.translateKey("gui.cancel")));
041 this.commandTextField = new GuiTextField(this.fontRenderer, this.width / 2 - 150, 60, 300, 20);
042 this.commandTextField.setMaxStringLength(32767);
043 this.commandTextField.setFocused(true);
044 this.commandTextField.setText(this.commandBlock.getCommand());
045 }
046
047 /**
048 * Called when the screen is unloaded. Used to disable keyboard repeat events
049 */
050 public void onGuiClosed()
051 {
052 Keyboard.enableRepeatEvents(false);
053 }
054
055 /**
056 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
057 */
058 protected void actionPerformed(GuiButton par1GuiButton)
059 {
060 if (par1GuiButton.enabled)
061 {
062 if (par1GuiButton.id == 1)
063 {
064 this.mc.displayGuiScreen((GuiScreen)null);
065 }
066 else if (par1GuiButton.id == 0)
067 {
068 String var2 = "MC|AdvCdm";
069 ByteArrayOutputStream var3 = new ByteArrayOutputStream();
070 DataOutputStream var4 = new DataOutputStream(var3);
071
072 try
073 {
074 var4.writeInt(this.commandBlock.xCoord);
075 var4.writeInt(this.commandBlock.yCoord);
076 var4.writeInt(this.commandBlock.zCoord);
077 Packet.writeString(this.commandTextField.getText(), var4);
078 this.mc.getSendQueue().addToSendQueue(new Packet250CustomPayload(var2, var3.toByteArray()));
079 }
080 catch (Exception var6)
081 {
082 var6.printStackTrace();
083 }
084
085 this.mc.displayGuiScreen((GuiScreen)null);
086 }
087 }
088 }
089
090 /**
091 * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
092 */
093 protected void keyTyped(char par1, int par2)
094 {
095 this.commandTextField.textboxKeyTyped(par1, par2);
096 ((GuiButton)this.controlList.get(0)).enabled = this.commandTextField.getText().trim().length() > 0;
097
098 if (par1 == 13)
099 {
100 this.actionPerformed((GuiButton)this.controlList.get(0));
101 }
102 }
103
104 /**
105 * Called when the mouse is clicked.
106 */
107 protected void mouseClicked(int par1, int par2, int par3)
108 {
109 super.mouseClicked(par1, par2, par3);
110 this.commandTextField.mouseClicked(par1, par2, par3);
111 }
112
113 /**
114 * Draws the screen and all the components in it.
115 */
116 public void drawScreen(int par1, int par2, float par3)
117 {
118 StringTranslate var4 = StringTranslate.getInstance();
119 this.drawDefaultBackground();
120 this.drawCenteredString(this.fontRenderer, var4.translateKey("advMode.setCommand"), this.width / 2, this.height / 4 - 60 + 20, 16777215);
121 this.drawString(this.fontRenderer, var4.translateKey("advMode.command"), this.width / 2 - 150, 47, 10526880);
122 this.drawString(this.fontRenderer, var4.translateKey("advMode.nearestPlayer"), this.width / 2 - 150, 97, 10526880);
123 this.drawString(this.fontRenderer, var4.translateKey("advMode.randomPlayer"), this.width / 2 - 150, 108, 10526880);
124 this.drawString(this.fontRenderer, var4.translateKey("advMode.allPlayers"), this.width / 2 - 150, 119, 10526880);
125 this.commandTextField.drawTextBox();
126 super.drawScreen(par1, par2, par3);
127 }
128 }