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