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