001    package net.minecraft.client.gui;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.util.StatCollector;
006    import net.minecraft.util.StringTranslate;
007    import net.minecraft.world.EnumGameType;
008    
009    @SideOnly(Side.CLIENT)
010    public class GuiShareToLan extends GuiScreen
011    {
012        /**
013         * A reference to the screen object that created this. Used for navigating between screens.
014         */
015        private final GuiScreen parentScreen;
016        private GuiButton buttonAllowCommandsToggle;
017        private GuiButton buttonGameMode;
018    
019        /**
020         * The currently selected game mode. One of 'survival', 'creative', or 'adventure'
021         */
022        private String gameMode = "survival";
023    
024        /** True if 'Allow Cheats' is currently enabled */
025        private boolean allowCommands = false;
026    
027        public GuiShareToLan(GuiScreen par1GuiScreen)
028        {
029            this.parentScreen = par1GuiScreen;
030        }
031    
032        /**
033         * Adds the buttons (and other controls) to the screen in question.
034         */
035        public void initGui()
036        {
037            this.controlList.clear();
038            this.controlList.add(new GuiButton(101, this.width / 2 - 155, this.height - 28, 150, 20, StatCollector.translateToLocal("lanServer.start")));
039            this.controlList.add(new GuiButton(102, this.width / 2 + 5, this.height - 28, 150, 20, StatCollector.translateToLocal("gui.cancel")));
040            this.controlList.add(this.buttonGameMode = new GuiButton(104, this.width / 2 - 155, 100, 150, 20, StatCollector.translateToLocal("selectWorld.gameMode")));
041            this.controlList.add(this.buttonAllowCommandsToggle = new GuiButton(103, this.width / 2 + 5, 100, 150, 20, StatCollector.translateToLocal("selectWorld.allowCommands")));
042            this.func_74088_g();
043        }
044    
045        private void func_74088_g()
046        {
047            StringTranslate var1 = StringTranslate.getInstance();
048            this.buttonGameMode.displayString = var1.translateKey("selectWorld.gameMode") + " " + var1.translateKey("selectWorld.gameMode." + this.gameMode);
049            this.buttonAllowCommandsToggle.displayString = var1.translateKey("selectWorld.allowCommands") + " ";
050    
051            if (this.allowCommands)
052            {
053                this.buttonAllowCommandsToggle.displayString = this.buttonAllowCommandsToggle.displayString + var1.translateKey("options.on");
054            }
055            else
056            {
057                this.buttonAllowCommandsToggle.displayString = this.buttonAllowCommandsToggle.displayString + var1.translateKey("options.off");
058            }
059        }
060    
061        /**
062         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
063         */
064        protected void actionPerformed(GuiButton par1GuiButton)
065        {
066            if (par1GuiButton.id == 102)
067            {
068                this.mc.displayGuiScreen(this.parentScreen);
069            }
070            else if (par1GuiButton.id == 104)
071            {
072                if (this.gameMode.equals("survival"))
073                {
074                    this.gameMode = "creative";
075                }
076                else if (this.gameMode.equals("creative"))
077                {
078                    this.gameMode = "adventure";
079                }
080                else
081                {
082                    this.gameMode = "survival";
083                }
084    
085                this.func_74088_g();
086            }
087            else if (par1GuiButton.id == 103)
088            {
089                this.allowCommands = !this.allowCommands;
090                this.func_74088_g();
091            }
092            else if (par1GuiButton.id == 101)
093            {
094                this.mc.displayGuiScreen((GuiScreen)null);
095                String var2 = this.mc.getIntegratedServer().shareToLAN(EnumGameType.getByName(this.gameMode), this.allowCommands);
096                String var3 = "";
097    
098                if (var2 != null)
099                {
100                    var3 = this.mc.thePlayer.translateString("commands.publish.started", new Object[] {var2});
101                }
102                else
103                {
104                    var3 = this.mc.thePlayer.translateString("commands.publish.failed", new Object[0]);
105                }
106    
107                this.mc.ingameGUI.getChatGUI().printChatMessage(var3);
108            }
109        }
110    
111        /**
112         * Draws the screen and all the components in it.
113         */
114        public void drawScreen(int par1, int par2, float par3)
115        {
116            this.drawDefaultBackground();
117            this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("lanServer.title"), this.width / 2, 50, 16777215);
118            this.drawCenteredString(this.fontRenderer, StatCollector.translateToLocal("lanServer.otherPlayers"), this.width / 2, 82, 16777215);
119            super.drawScreen(par1, par2, par3);
120        }
121    }