Posted February 12, 20169 yr Gui.java package OnerGamer.ALab; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; public class GuiTest extends GuiContainer{ TileEntityTest tile; public GuiTextField TextNameBox; GuiButton button; public GuiTest (TileEntityTest tileEntity){ super(new ContainerTest(tileEntity)); tile = tileEntity; } @Override public void updateScreen(){ this.TextNameBox.updateCursorCounter(); } @Override protected void drawGuiContainerForegroundLayer(int param1, int param2) { fontRendererObj.drawString("Tower", width /2 - 140, height /2 - 114, 0x000000); fontRendererObj.drawString("Owner : " + tile.username, width /2 - 200, height /2 - 92, 0x000000); fontRendererObj.drawString("OFF", width /2 - 80, height /2 + 27, 0x000000); TextNameBox.drawTextBox(); } @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3){ mc.renderEngine.bindTexture(new ResourceLocation("onermod:" + "textures/gui/alab/trap.png")); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int x = (width - xSize) / 2; int y = (height - ySize) / 2; this.drawTexturedModalRect(x, y, 0, 0, xSize, ySize); } @Override public void initGui(){ super.initGui(); buttonList.clear(); TextNameBox = new GuiTextField(this.fontRendererObj, width /2 -195, height /2 -60, 140, 20); buttonList.add(button = new GuiButton(0, width /2 -70, height /2 +5, 40, 20, "Add")); buttonList.add(button = new GuiButton(1, width /2 -20, height /2 +5, 40, 20, "Remove")); buttonList.add(button = new GuiButton(2, width /2 +30, height /2 +5, 40, 20, "Check")); buttonList.add(button = new GuiButton(2, width /2 -70, height /2 +58, 40, 20, "ON")); buttonList.add(button = new GuiButton(2, width /2 -20, height /2 +58, 40, 20, "OFF")); TextNameBox.setFocused(true); } @Override protected void actionPerformed(GuiButton button){ switch(button.id){ case 0: if(tile.playerHistory.contains(TextNameBox.getText())){ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation("This tower have this player")); }else{ tile.addPlayer(TextNameBox.getText(), tile.getWorldObj()); } } switch(button.id){ case 1: if(tile.playerHistory.contains(TextNameBox.getText())){ tile.removePlayer(TextNameBox.getText()); }else{ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation("This tower don't have this player")); } } switch(button.id){ case 2: Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation("---This Tower---")); for (String s : tile.playerHistory){ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation(s)); } } super.actionPerformed(button); } @Override protected void keyTyped(char p_73869_1_, int p_73869_2_){ TextNameBox.textboxKeyTyped(p_73869_1_, p_73869_2_); super.keyTyped(p_73869_1_, p_73869_2_); } public void updateFromTileEntityData() {} } Tile.java package OnerGamer.ALab; import java.util.ArrayList; import java.util.List; import cpw.mods.fml.client.FMLClientHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; public class TileEntityTest extends TileEntity{ public String username; public List<String> playerHistory = new ArrayList<String>(); @Override public void writeToNBT(NBTTagCompound nbt){ super.writeToNBT(nbt); nbt.setString("username", username); NBTTagList tagList = new NBTTagList(); for(int i = 0; i < playerHistory.size(); i++){ String s = playerHistory.get(i); NBTTagCompound tag = new NBTTagCompound(); tag.setString("Player" + i, s); tagList.appendTag(tag); } nbt.setTag("PlayerList", tagList); } @Override public void readFromNBT(NBTTagCompound nbt){ super.readFromNBT(nbt); this.username = nbt.getString("username"); NBTTagList tagList = nbt.getTagList("PlayerList", Constants.NBT.TAG_COMPOUND); for(int i = 0; i < tagList.tagCount(); i++){ NBTTagCompound tag = tagList.getCompoundTagAt(i); String s = tag.getString("Player" + i); playerHistory.add(i, s); } } public void addPlayer(String playerName, World world) { playerHistory.add(playerName); world.getTileEntity(xCoord, yCoord, zCoord); } public void removePlayer(String playerName){ playerHistory.remove(playerName); } public void processActivate(EntityLivingBase par5EntityPlayer, World world){ username = par5EntityPlayer.getCommandSenderName(); playerHistory.add("aaa"); world.getTileEntity(xCoord, yCoord, zCoord); } @Override public Packet getDescriptionPacket() { NBTTagCompound tagCompound = new NBTTagCompound(); writeToNBT(tagCompound); return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, tagCompound); } @Override public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt){ readFromNBT(pkt.func_148857_g()); GuiScreen gui = FMLClientHandler.instance().getClient().currentScreen; if (gui != null && gui instanceof GuiTest) { ((GuiTest) gui).updateFromTileEntityData(); } this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } }
February 12, 20169 yr Author hahaha OK sir. GuiTest.java // in actionPerformed TileEntityTest tile; if(tile.playerHistory.contains(TextNameBox.getText())){ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentTranslation("This tower have this player")); }else{ tile.addPlayer(TextNameBox.getText(), tile.getWorldObj()); } TileEntityTest.java public void addPlayer(String playerName, World world) { playerHistory.add(playerName); world.getTileEntity(xCoord, yCoord, zCoord); }
February 12, 20169 yr Author I want add String to list in tileentity by TextBox in gui. and give NBTTagCompound save it. but it can't save. What should I do?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.