    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    }