Hello,
I tried to overrid ethe whole GuiWorldSelection with my GUI elements
I created this class but when I call this MC crashes with null pointer ex, at drawing screen.
package hu.testmod.gui;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import java.io.IOException;
import javax.annotation.Nullable;
import net.minecraft.client.gui.GuiCreateWorld;
import net.minecraft.client.gui.GuiListWorldSelection;
import net.minecraft.client.gui.GuiListWorldSelectionEntry;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiWorldSelection;
import net.minecraft.client.resources.I18n;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class GuiTestWorldSelection extends GuiWorldSelection
{
public GuiTestWorldSelection(GuiScreen screenIn) {
super(screenIn);
}
private static final Logger LOGGER = LogManager.getLogger();
/** The screen to return to when this closes (always Main Menu). */
protected GuiScreen prevScreen;
protected String title = "Select world";
/**
* Tooltip displayed a world whose version is different from this client's
*/
private String worldVersTooltip;
private GuiTestButton deleteButton;
private GuiTestButton selectButton;
private GuiTestButton renameButton;
private GuiTestButton copyButton;
private GuiListWorldSelection selectionList;
/**
* Adds the buttons (and other controls) to the screen in question. Called when the GUI is displayed and when the
* window resizes, the buttonList is cleared beforehand.
*/
public void initGui()
{
this.title = I18n.format("selectWorld.title");
this.selectionList = new GuiListWorldSelection(this, this.mc, this.width, this.height, 32, this.height - 64, 36);
this.postInit();
}
/**
* Handles mouse input.
*/
public void handleMouseInput() throws IOException
{
super.handleMouseInput();
this.selectionList.handleMouseInput();
}
public void postInit()
{
this.selectButton = this.addButton(new GuiTestButton(1, this.width / 2 - 154, this.height - 52, 150, 20, I18n.format("selectWorld.select")));
this.addButton(new GuiTestButton(3, this.width / 2 + 4, this.height - 52, 150, 20, I18n.format("selectWorld.create")));
this.renameButton = this.addButton(new GuiTestButton(4, this.width / 2 - 154, this.height - 28, 72, 20, I18n.format("selectWorld.edit")));
this.deleteButton = this.addButton(new GuiTestButton(2, this.width / 2 - 76, this.height - 28, 72, 20, I18n.format("selectWorld.delete")));
this.copyButton = this.addButton(new GuiTestButton(5, this.width / 2 + 4, this.height - 28, 72, 20, I18n.format("selectWorld.recreate")));
this.addButton(new GuiTestButton(0, this.width / 2 + 82, this.height - 28, 72, 20, I18n.format("gui.cancel")));
this.selectButton.enabled = false;
this.deleteButton.enabled = false;
this.renameButton.enabled = false;
this.copyButton.enabled = false;
}
/**
* Called by the controls from the buttonList when activated. (Mouse pressed for buttons)
*/
protected void actionPerformed(GuiTestButton button) throws IOException
{
if (button.enabled)
{
GuiListWorldSelectionEntry guilistworldselectionentry = this.selectionList.getSelectedWorld();
if (button.id == 2)
{
if (guilistworldselectionentry != null)
{
guilistworldselectionentry.deleteWorld();
}
}
else if (button.id == 1)
{
if (guilistworldselectionentry != null)
{
guilistworldselectionentry.joinWorld();
}
}
else if (button.id == 3)
{
this.mc.displayGuiScreen(new GuiCreateWorld(this));
}
else if (button.id == 4)
{
if (guilistworldselectionentry != null)
{
guilistworldselectionentry.editWorld();
}
}
else if (button.id == 0)
{
this.mc.displayGuiScreen(this.prevScreen);
}
else if (button.id == 5 && guilistworldselectionentry != null)
{
guilistworldselectionentry.recreateWorld();
}
}
}
/**
* Draws the screen and all the components in it.
*/
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
this.worldVersTooltip = null;
this.selectionList.drawScreen(mouseX, mouseY, partialTicks);
this.drawCenteredString(this.fontRenderer, this.title, this.width / 2, 20, 16777215);
super.drawScreen(mouseX, mouseY, partialTicks);
if (this.worldVersTooltip != null)
{
this.drawHoveringText(Lists.newArrayList(Splitter.on("\n").split(this.worldVersTooltip)), mouseX, mouseY);
}
}
/**
* Called when the mouse is clicked. Args : mouseX, mouseY, clickedButton
*/
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException
{
super.mouseClicked(mouseX, mouseY, mouseButton);
this.selectionList.mouseClicked(mouseX, mouseY, mouseButton);
}
/**
* Called when a mouse button is released.
*/
protected void mouseReleased(int mouseX, int mouseY, int state)
{
super.mouseReleased(mouseX, mouseY, state);
this.selectionList.mouseReleased(mouseX, mouseY, state);
}
/**
* Called back by selectionList when we call its drawScreen method, from ours.
*/
public void setVersionTooltip(String p_184861_1_)
{
this.worldVersTooltip = p_184861_1_;
}
public void selectWorld(@Nullable GuiListWorldSelectionEntry entry)
{
boolean flag = entry != null;
this.selectButton.enabled = flag;
this.deleteButton.enabled = flag;
this.renameButton.enabled = flag;
this.copyButton.enabled = flag;
}
}
What could be the problem?