Fix memmory leaks

This commit is contained in:
cswhite2000 2017-07-16 22:04:25 -07:00
parent 416c555e0d
commit a3ddeaac9a
23 changed files with 107 additions and 242 deletions

View File

@ -11,7 +11,7 @@ import java.util.List;
public class Interface { public class Interface {
private Player player; protected Player player;
private List<Button> buttons = new ArrayList<>(); private List<Button> buttons = new ArrayList<>();
private List<Object> data = new ArrayList<>(); private List<Object> data = new ArrayList<>();
@ -19,6 +19,7 @@ public class Interface {
setData(data); setData(data);
setPlayer(viewer); setPlayer(viewer);
setButtons(buttons); setButtons(buttons);
InterfaceManager.cleanUp(this);
} }
public void setData(Object... data) { public void setData(Object... data) {
@ -72,4 +73,10 @@ public class Interface {
return null; return null;
} }
public void cleanUp() {
player = null;
buttons = null;
data = null;
}
} }

View File

@ -1,5 +1,6 @@
package tc.oc.commons.bukkit.gui; package tc.oc.commons.bukkit.gui;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.InventoryView;
@ -65,4 +66,22 @@ public class InterfaceManager {
return null; return null;
} }
public static void cleanUp(Interface inventory) {
for (Interface inv: inventories) {
if (inv != inventory && inv.getPlayer() == inventory.getPlayer()) {
inv.cleanUp();
inventories.remove(inv);
}
}
}
public static void cleanUp(Player player) {
for (Interface inventory: inventories) {
if (inventory.getPlayer() == player) {
inventory.cleanUp();
inventories.remove(inventory);
}
}
}
} }

View File

@ -1,68 +0,0 @@
package tc.oc.commons.bukkit.gui.buttons.lastPage;
import tc.oc.commons.bukkit.gui.Interface;
import tc.oc.commons.bukkit.gui.InterfaceManager;
import tc.oc.commons.bukkit.gui.buttons.Button;
import tc.oc.commons.bukkit.gui.interfaces.ChestInterface;
import tc.oc.commons.bukkit.gui.interfaces.SinglePageInterface;
import tc.oc.commons.bukkit.util.Constants;
import tc.oc.commons.bukkit.util.ItemCreator;
import org.bukkit.Material;
import org.bukkit.entity.Player;
public class LastPageButton extends Button {
private SinglePageInterface page;
public LastPageButton(int slot) {
super(null, slot);
}
public LastPageButton(SinglePageInterface gui, int slot) {
super(null, slot);
this.page = gui;
this.setIcon(new ItemCreator(Material.BARRIER)
.setName(Constants.PREFIX + "Previous"));
}
public SinglePageInterface getPage() {
return this.page;
}
public Interface getLastPage(ChestInterface gui) {
if (this.page == null) {
return gui.getParent();
}
try {
int page = this.page.page;
Interface previousInterface = getPage().getParent() != null ? getPage().getParent() : gui;
try {
Interface gui1 = /*page != 0 ? new SinglePageInterface(this.page.rawButtons, this.page.getSize(), this.page.rawTitle, this.page.getParent(), this.page.page - 1) :*/ previousInterface;
if (gui1 instanceof SinglePageInterface) {
// ((SinglePageInterface)gui1).updateButtons();
}
return gui1;
} catch (Exception e) {
return previousInterface;
}
} catch (Exception e) {
return gui;
}
}
@Override
public void function(Player player) {
Interface currentInterface = InterfaceManager.getInterface(player.getOpenInventory());
//Interface lastPage = getLastPage((ChestInterface)currentInterface);
//player.openInventory(lastPage.getInventory());
if (currentInterface instanceof SinglePageInterface) {
((SinglePageInterface)currentInterface).openLastPage(player);
} else {
Interface parent = ((ChestInterface) currentInterface).getParent();
player.openInventory(parent.getInventory());
//parent.updateButtons();
}
}
}

View File

@ -10,9 +10,6 @@ import tc.oc.commons.bukkit.util.ItemCreator;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
/**
* Created by ShinyDialga45 on 4/10/2015.
*/
public class NextPageButton extends Button { public class NextPageButton extends Button {
private SinglePageInterface page; private SinglePageInterface page;
@ -33,7 +30,7 @@ public class NextPageButton extends Button {
nextPage.update(); nextPage.update();
return nextPage != null ? nextPage : chestInterface; return nextPage != null ? nextPage : chestInterface;
} }
SinglePageInterface nextPage = new SinglePageInterface(this.page.getPlayer(), this.page.rawButtons, this.page.getSize(), this.page.rawTitle, this.page, this.page.page + 1); SinglePageInterface nextPage = new SinglePageInterface(this.page.getPlayer(), this.page.rawButtons, this.page.getSize(), this.page.rawTitle, this.page.page + 1);
nextPage.update(); nextPage.update();
return nextPage != null ? nextPage : chestInterface; return nextPage != null ? nextPage : chestInterface;
} catch (Exception e) { } catch (Exception e) {

View File

@ -12,15 +12,13 @@ import java.util.List;
public class ChestInterface extends Interface { public class ChestInterface extends Interface {
private int size; private int size;
public Interface parent;
private Inventory inventory; private Inventory inventory;
private String title; private String title;
public ChestInterface(Player player, List<Button> buttons, int size, String title, Interface parent) { public ChestInterface(Player player, List<Button> buttons, int size, String title) {
super(player, buttons); super(player, buttons);
setSize(size); setSize(size);
setTitle(title); setTitle(title);
setParent(parent);
this.inventory = Bukkit.createInventory(new SimpleInterfaceHolder(inventory, this, player.getWorld()), getSize(), getTitle()); this.inventory = Bukkit.createInventory(new SimpleInterfaceHolder(inventory, this, player.getWorld()), getSize(), getTitle());
//setInventory(new InterfaceInventory(this, inventory)); //setInventory(new InterfaceInventory(this, inventory));
} }
@ -47,17 +45,15 @@ public class ChestInterface extends Interface {
return this.title; return this.title;
} }
public void setParent(Interface parent) {
this.parent = parent;
}
public Interface getParent() {
return this.parent;
}
@Override @Override
public Inventory getInventory() { public Inventory getInventory() {
return this.inventory; return this.inventory;
} }
@Override
public void cleanUp() {
super.cleanUp();
inventory = null;
}
} }

View File

@ -35,7 +35,7 @@ public class ChestOptionsPageInterface extends SinglePageInterface {
} }
public ChestOptionsPageInterface(Player player, List<Button> buttons, int size, String title, Interface parent, int i, Object... data) { public ChestOptionsPageInterface(Player player, List<Button> buttons, int size, String title, Interface parent, int i, Object... data) {
super(player, buttons, size, title + (i > 1 ? " - " + i : ""), parent, 1, data); super(player, buttons, size, title + (i > 1 ? " - " + i : ""), 1, data);
} }
@Override @Override
@ -78,9 +78,7 @@ public class ChestOptionsPageInterface extends SinglePageInterface {
if (buttons.size() != 0) { if (buttons.size() != 0) {
ArrayList<Button> currentButtons = new ArrayList<>(); ArrayList<Button> currentButtons = new ArrayList<>();
for (Button button : getDefaultButtons()) { for (Button button : getDefaultButtons()) {
if (button.equals(this.lastPageButton)) { if (button.equals(this.nextPageButton)) {
button.setIcon(button.getIcon().setSize(page - 1));
} else if (button.equals(this.nextPageButton)) {
button.setIcon(button.getIcon().setSize(page + 1)); button.setIcon(button.getIcon().setSize(page + 1));
} }
button.setSlot(button.getSlot()); button.setSlot(button.getSlot());
@ -139,7 +137,6 @@ public class ChestOptionsPageInterface extends SinglePageInterface {
EmptyButton button = new EmptyButton(integer); EmptyButton button = new EmptyButton(integer);
defaultButtons.add(button); defaultButtons.add(button);
} }
defaultButtons.add(this.lastPageButton);
defaultButtons.add(this.nextPageButton); defaultButtons.add(this.nextPageButton);
} }

View File

@ -31,8 +31,8 @@ public class ChestPageInterface extends ChestInterface {
this(null, buttons, size, title, parent); this(null, buttons, size, title, parent);
} }
public ChestPageInterface(Player player, List<Button> buttons, int size, String title, Interface parent, Object... data) { public ChestPageInterface(Player player, List<Button> buttons, int size, String title, Object... data) {
super(player, buttons, size, title, parent); super(player, buttons, size, title);
/* /*
MultiPageInterfaces must be contain necessary default items, if it cannot contain the next page item MultiPageInterfaces must be contain necessary default items, if it cannot contain the next page item
(currently has the highest slot value of a necessary default item), it won't allow proper navagation. (currently has the highest slot value of a necessary default item), it won't allow proper navagation.
@ -58,7 +58,7 @@ public class ChestPageInterface extends ChestInterface {
if (empty.getSlot() < getSize()) { if (empty.getSlot() < getSize()) {
buttons.add(empty); buttons.add(empty);
} }
pages.add(new ChestInterface(null, buttons, getSize(), getTitle(), getParent())); pages.add(new ChestInterface(null, buttons, getSize(), getTitle()));
return; return;
} }
int allButtons = getDefaultButtons().size() + getButtons().size(); int allButtons = getDefaultButtons().size() + getButtons().size();
@ -98,7 +98,7 @@ public class ChestPageInterface extends ChestInterface {
// currentButtons.remove(this.nextPageButton); // currentButtons.remove(this.nextPageButton);
} }
String suffix = i > 1 ? " - " + i : ""; String suffix = i > 1 ? " - " + i : "";
ChestInterface gui = new ChestInterface(null, currentButtons, getSize(), getTitle() + suffix, getParent()); ChestInterface gui = new ChestInterface(null, currentButtons, getSize(), getTitle() + suffix);
gui.updateInventory(); gui.updateInventory();
pages.add(gui); pages.add(gui);
} }

View File

@ -13,14 +13,12 @@ import java.util.List;
public class HopperInterface extends Interface { public class HopperInterface extends Interface {
private int size; private int size;
private Interface parent;
private Inventory inventory; private Inventory inventory;
private String title; private String title;
public HopperInterface(Player player, List<Button> buttons, String title, Interface parent) { public HopperInterface(Player player, List<Button> buttons, String title, Interface parent) {
super(player, buttons); super(player, buttons);
setTitle(title); setTitle(title);
setParent(parent);
this.inventory = Bukkit.createInventory(new SimpleInterfaceHolder(inventory, this, player.getWorld()), InventoryType.HOPPER, getTitle()); this.inventory = Bukkit.createInventory(new SimpleInterfaceHolder(inventory, this, player.getWorld()), InventoryType.HOPPER, getTitle());
/*//this.inventory = player.getInventory(); /*//this.inventory = player.getInventory();
//inventory = Bukkit.createInventory(new SimpleInterfaceHolder(inventory, this), InventoryType.valueOf(args), getTitle()); //inventory = Bukkit.createInventory(new SimpleInterfaceHolder(inventory, this), InventoryType.valueOf(args), getTitle());
@ -38,17 +36,15 @@ public class HopperInterface extends Interface {
return this.title; return this.title;
} }
public void setParent(Interface parent) {
this.parent = parent;
}
public Interface getParent() {
return this.parent;
}
@Override @Override
public Inventory getInventory() { public Inventory getInventory() {
return this.inventory; return this.inventory;
} }
@Override
public void cleanUp() {
super.cleanUp();
inventory = null;
}
} }

View File

@ -1,25 +0,0 @@
package tc.oc.commons.bukkit.gui.interfaces;
import org.bukkit.inventory.Inventory;
import tc.oc.commons.bukkit.gui.Interface;
public class InterfaceInventory {
private Interface gui;
private Inventory inventory;
public InterfaceInventory(Interface gui, Inventory inventory) {
//InterfaceManager.registerInventory(this);
this.gui = gui;
this.inventory = inventory;
}
public Interface getInterface() {
return this.gui;
}
public Inventory getInventory() {
return this.inventory;
}
}

View File

@ -3,7 +3,6 @@ package tc.oc.commons.bukkit.gui.interfaces;
import tc.oc.commons.bukkit.gui.Interface; import tc.oc.commons.bukkit.gui.Interface;
import tc.oc.commons.bukkit.gui.buttons.Button; import tc.oc.commons.bukkit.gui.buttons.Button;
import tc.oc.commons.bukkit.gui.buttons.empty.EmptyButton; import tc.oc.commons.bukkit.gui.buttons.empty.EmptyButton;
import tc.oc.commons.bukkit.gui.buttons.lastPage.LastPageButton;
import tc.oc.commons.bukkit.gui.buttons.nextPage.NextPageButton; import tc.oc.commons.bukkit.gui.buttons.nextPage.NextPageButton;
import tc.oc.commons.bukkit.util.Constants; import tc.oc.commons.bukkit.util.Constants;
import tc.oc.commons.bukkit.util.ItemCreator; import tc.oc.commons.bukkit.util.ItemCreator;
@ -28,15 +27,14 @@ public class SinglePageInterface extends ChestInterface {
public String rawTitle; public String rawTitle;
public List<Button> rawButtons = new ArrayList<>(); public List<Button> rawButtons = new ArrayList<>();
public final LastPageButton lastPageButton = new LastPageButton(this, 0);
public final NextPageButton nextPageButton = new NextPageButton(this, 8); public final NextPageButton nextPageButton = new NextPageButton(this, 8);
public SinglePageInterface(Player player, List<Button> buttons, int size, String title, Interface parent) { public SinglePageInterface(Player player, List<Button> buttons, int size, String title) {
this(player, buttons, size, title, parent, 1); this(player, buttons, size, title, 1);
} }
public SinglePageInterface(Player player, List<Button> buttons, int size, String title, Interface parent, int page, Object... data) { public SinglePageInterface(Player player, List<Button> buttons, int size, String title, int page, Object... data) {
super(player, buttons, size, title + (page > 1 ? " - " + page : ""), parent); super(player, buttons, size, title + (page > 1 ? " - " + page : ""));
this.rawTitle = title; this.rawTitle = title;
this.rawButtons = buttons; this.rawButtons = buttons;
/* /*
@ -53,7 +51,7 @@ public class SinglePageInterface extends ChestInterface {
if (page > 0) { if (page > 0) {
update(); update();
} else { } else {
player.openInventory(getParent().getInventory()); player.openInventory(getInventory());
//getParent().updateButtons(); //getParent().updateButtons();
} }
} }
@ -155,7 +153,6 @@ public class SinglePageInterface extends ChestInterface {
public void setDefaultButtons() { public void setDefaultButtons() {
defaultButtons.clear(); defaultButtons.clear();
defaultButtons.add(this.lastPageButton);
defaultButtons.add(this.nextPageButton); defaultButtons.add(this.nextPageButton);
for (Integer integer : new Integer[]{1, 2, 3, 4, 5, 6, 7, 9, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}) { for (Integer integer : new Integer[]{1, 2, 3, 4, 5, 6, 7, 9, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}) {
if (integer > getSize()) { if (integer > getSize()) {
@ -198,4 +195,10 @@ public class SinglePageInterface extends ChestInterface {
return this.defaultButtons; return this.defaultButtons;
} }
@Override
public void cleanUp() {
super.cleanUp();
defaultButtons = null;
rawButtons = null;
}
} }

View File

@ -16,8 +16,8 @@ public class ChestRenderInterface extends ChestInterface {
private Coordinate origin; private Coordinate origin;
public ChestRenderInterface(Player player, List<Button> buttons, int size, String title, Interface parent) { public ChestRenderInterface(Player player, List<Button> buttons, int size, String title) {
super(player, buttons, size, title, parent); super(player, buttons, size, title);
this.origin = new Coordinate(0, 0); this.origin = new Coordinate(0, 0);
} }

View File

@ -16,8 +16,8 @@ public class GridTextRenderInterface extends ChestRenderInterface {
private String text; private String text;
public GridTextRenderInterface(Player player, List<Button> buttons, int size, String title, Interface parent, String text) { public GridTextRenderInterface(Player player, List<Button> buttons, int size, String title, String text) {
super(player, buttons, size, title, parent); super(player, buttons, size, title);
this.text = text; this.text = text;
} }

View File

@ -1,24 +1,19 @@
package tc.oc.pgm.listeners; package tc.oc.pgm.listeners;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventBus; import org.bukkit.event.EventBus;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack; import org.bukkit.event.player.PlayerQuitEvent;
import tc.oc.commons.bukkit.event.InterfaceOpenEvent; import tc.oc.commons.bukkit.event.InterfaceOpenEvent;
import tc.oc.commons.bukkit.gui.Interface; import tc.oc.commons.bukkit.gui.Interface;
import tc.oc.commons.bukkit.gui.InterfaceManager; import tc.oc.commons.bukkit.gui.InterfaceManager;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import tc.oc.commons.bukkit.gui.buttons.Button; import tc.oc.commons.bukkit.gui.buttons.Button;
import tc.oc.commons.core.plugin.PluginFacet; import tc.oc.commons.core.plugin.PluginFacet;
import tc.oc.pgm.events.ObserverInteractEvent; import tc.oc.pgm.events.ObserverInteractEvent;
import tc.oc.pgm.tokens.gui.MainTokenButton;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
@ -83,4 +78,9 @@ public class InterfaceListener implements Listener, PluginFacet {
} }
} }
@EventHandler
public void onPlayerleave(PlayerQuitEvent event) {
InterfaceManager.cleanUp(event.getPlayer());
}
} }

View File

@ -1,33 +1,20 @@
package tc.oc.pgm.menu; package tc.oc.pgm.menu;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import tc.oc.commons.bukkit.event.ObserverKitApplyEvent; import tc.oc.commons.bukkit.event.ObserverKitApplyEvent;
import tc.oc.commons.bukkit.raindrops.RaindropConstants;
import tc.oc.commons.bukkit.tokens.TokenUtil;
import tc.oc.commons.core.util.Comparables;
import tc.oc.pgm.events.MatchEndEvent;
import tc.oc.pgm.events.ObserverInteractEvent; import tc.oc.pgm.events.ObserverInteractEvent;
import tc.oc.pgm.match.Match;
import tc.oc.pgm.match.MatchPlayer;
import tc.oc.pgm.menu.gui.MainMenuButton; import tc.oc.pgm.menu.gui.MainMenuButton;
import tc.oc.pgm.teams.Team;
import tc.oc.pgm.tokens.gui.MainTokenButton;
import java.time.Duration;
public class MenuListener implements Listener { public class MenuListener implements Listener {
@EventHandler @EventHandler
public void onObserverInteract(ObserverInteractEvent event) { public void onObserverInteract(ObserverInteractEvent event) {
if (event.getClickType() == ClickType.RIGHT) { if (event.getClickType() == ClickType.RIGHT) {
MainMenuButton button = new MainMenuButton(event.getPlayer().getBukkit()); MainMenuButton button = new MainMenuButton();
ItemStack main = button.getIcon().create(); ItemStack main = button.getIcon().create();
//isSimilar so that stacks of the item will still open the menu //isSimilar so that stacks of the item will still open the menu
if (event.getPlayer().getBukkit().getItemInHand().isSimilar(main)) { if (event.getPlayer().getBukkit().getItemInHand().isSimilar(main)) {
@ -39,7 +26,7 @@ public class MenuListener implements Listener {
@EventHandler @EventHandler
public void giveKitToObservers(ObserverKitApplyEvent event) { public void giveKitToObservers(ObserverKitApplyEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
ItemStack main = new MainMenuButton(player).getIcon().create(); ItemStack main = new MainMenuButton().getIcon().create();
player.getInventory().setItem(5, main); player.getInventory().setItem(5, main);
} }
} }

View File

@ -9,7 +9,7 @@ import tc.oc.pgm.tokens.gui.MainTokenMenu;
public class MainMenuButton extends Button { public class MainMenuButton extends Button {
public MainMenuButton(Player player) { public MainMenuButton() {
super(new ItemCreator(Material.ENCHANTED_BOOK) super(new ItemCreator(Material.ENCHANTED_BOOK)
.setName(Constants.PREFIX + "Main Menu") .setName(Constants.PREFIX + "Main Menu")
.addLore(Constants.SUBTEXT + "Open the Main Menu", .addLore(Constants.SUBTEXT + "Open the Main Menu",

View File

@ -21,29 +21,20 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
public class MainMenuInterface extends ChestInterface { public class MainMenuInterface extends ChestInterface {
private static MainMenuInterface instance;
public MainMenuInterface(Player player) { public MainMenuInterface(Player player) {
super(player, new ArrayList<>(), 27, "Main Menu", getInstance()); super(player, new ArrayList<>(), 27, "Main Menu");
updateButtons(); updateButtons();
instance = this;
}
@Override
public ChestInterface getParent() {
return getInstance();
}
public static MainMenuInterface getInstance() {
return instance;
} }
@Override @Override
public void updateButtons() { public void updateButtons() {
List<Button> buttons = new ArrayList<>(); List<Button> buttons = new ArrayList<>();
MainTokenButton.getInstance().setSlot(11); MainTokenButton button = new MainTokenButton();
buttons.add(MainTokenButton.getInstance());
button.setSlot(11);
buttons.add(button);
HashMap<String, Double> stats = StatsUtil.getStats(getPlayer()); HashMap<String, Double> stats = StatsUtil.getStats(getPlayer());

View File

@ -32,7 +32,7 @@ import java.util.*;
public class SettingsInterface extends SinglePageInterface { public class SettingsInterface extends SinglePageInterface {
public SettingsInterface(Player player) { public SettingsInterface(Player player) {
super(player, new ArrayList<>(), 54, "Settings", MainMenuInterface.getInstance()); super(player, new ArrayList<>(), 54, "Settings");
update(); update();
} }
@ -80,11 +80,14 @@ public class SettingsInterface extends SinglePageInterface {
@Override @Override
public void setDefaultButtons() { public void setDefaultButtons() {
defaultButtons.clear(); defaultButtons.clear();
defaultButtons.add(this.lastPageButton); defaultButtons.add(new Button(new ItemCreator(Material.WOOL)
this.lastPageButton.setSlot(49); .setData(14)
this.lastPageButton.setIcon(new ItemCreator(Material.WOOL) .setName(ChatColor.GREEN + "Go Back"), 49) {
.setData(14) @Override
.setName(ChatColor.GREEN + "Go Back")); public void function(Player player) {
player.openInventory(new MainMenuInterface(player).getInventory());
}
});
for (Integer integer : new Integer[]{ for (Integer integer : new Integer[]{
0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8,
9, 17, 9, 17,

View File

@ -33,10 +33,11 @@ public class TokenListener implements Listener {
@EventHandler @EventHandler
public void onObserverInteract(ObserverInteractEvent event) { public void onObserverInteract(ObserverInteractEvent event) {
if (event.getClickType() == ClickType.RIGHT) { if (event.getClickType() == ClickType.RIGHT) {
ItemStack main = MainTokenButton.getInstance().getIcon().create(); MainTokenButton button = new MainTokenButton();
ItemStack main = button.getIcon().create();
//isSimilar so that stacks of the item will still open the menu //isSimilar so that stacks of the item will still open the menu
if (event.getPlayer().getBukkit().getItemInHand().isSimilar(main)) { if (event.getPlayer().getBukkit().getItemInHand().isSimilar(main)) {
MainTokenButton.getInstance().function(event.getPlayer().getBukkit()); button.function(event.getPlayer().getBukkit());
} }
} }
} }

View File

@ -7,15 +7,9 @@ import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class MainTokenButton extends Button { public class MainTokenButton extends Button {
private static MainTokenButton instance;
public MainTokenButton() { public MainTokenButton() {
super(13); super(13);
instance = this;
}
public static MainTokenButton getInstance() {
return instance;
} }
@Override @Override

View File

@ -14,24 +14,10 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class MainTokenMenu extends ChestInterface { public class MainTokenMenu extends ChestInterface {
private static MainTokenMenu instance;
private Player player;
public MainTokenMenu(Player player) { public MainTokenMenu(Player player) {
super(player, new ArrayList<Button>(), 36, "Token Menu", getInstance()); super(player, new ArrayList<Button>(), 36, "Token Menu");
this.player = player;
updateButtons(); updateButtons();
instance = this;
}
@Override
public ChestInterface getParent() {
return getInstance();
}
public static MainTokenMenu getInstance() {
return instance;
} }
@Override @Override

View File

@ -19,28 +19,14 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class MutationConfirmInterface extends ChestInterface { public class MutationConfirmInterface extends ChestInterface {
private static MutationConfirmInterface instance;
private Player player;
private Mutation mutation; private Mutation mutation;
public MutationConfirmInterface(Player player, Mutation mutation) { public MutationConfirmInterface(Player player, Mutation mutation) {
super(player, new ArrayList<Button>(), 27, "Confirmation Menu", getInstance()); super(player, new ArrayList<Button>(), 27, "Confirmation Menu");
this.player = player;
updateButtons(); updateButtons();
instance = this;
this.mutation = mutation; this.mutation = mutation;
} }
@Override
public ChestInterface getParent() {
return getInstance();
}
public static MutationConfirmInterface getInstance() {
return instance;
}
@Override @Override
public void updateButtons() { public void updateButtons() {
List<Button> buttons = new ArrayList<>(); List<Button> buttons = new ArrayList<>();

View File

@ -12,6 +12,7 @@ import tc.oc.commons.bukkit.util.Constants;
import tc.oc.commons.bukkit.util.ItemCreator; import tc.oc.commons.bukkit.util.ItemCreator;
import tc.oc.pgm.PGM; import tc.oc.pgm.PGM;
import tc.oc.pgm.PGMTranslations; import tc.oc.pgm.PGMTranslations;
import tc.oc.pgm.menu.gui.MainMenuInterface;
import tc.oc.pgm.mutation.Mutation; import tc.oc.pgm.mutation.Mutation;
import tc.oc.pgm.mutation.MutationMatchModule; import tc.oc.pgm.mutation.MutationMatchModule;
import tc.oc.pgm.mutation.command.MutationCommands; import tc.oc.pgm.mutation.command.MutationCommands;
@ -22,7 +23,7 @@ import java.util.List;
public class MutationTokenInterface extends SinglePageInterface { public class MutationTokenInterface extends SinglePageInterface {
public MutationTokenInterface(Player player) { public MutationTokenInterface(Player player) {
super(player, new ArrayList<>(), 54, "Token Menu - Mutations", new MainTokenMenu(player)); super(player, new ArrayList<>(), 54, "Token Menu - Mutations");
update(); update();
} }
@ -86,11 +87,14 @@ public class MutationTokenInterface extends SinglePageInterface {
@Override @Override
public void setDefaultButtons() { public void setDefaultButtons() {
defaultButtons.clear(); defaultButtons.clear();
defaultButtons.add(this.lastPageButton); defaultButtons.add(new Button(new ItemCreator(Material.WOOL)
this.lastPageButton.setSlot(49); .setData(14)
this.lastPageButton.setIcon(new ItemCreator(Material.WOOL) .setName(ChatColor.GREEN + "Go Back"), 49) {
.setData(14) @Override
.setName(ChatColor.GREEN + "Go Back")); public void function(Player player) {
player.openInventory(new MainTokenMenu(player).getInventory());
}
});
for (Integer integer : new Integer[]{ for (Integer integer : new Integer[]{
0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8,
9, 17, 9, 17,

View File

@ -15,24 +15,9 @@ import java.util.List;
public class TokenPurchaseInterface extends ChestInterface { public class TokenPurchaseInterface extends ChestInterface {
private static TokenPurchaseInterface instance;
private Player player;
public TokenPurchaseInterface(Player player) { public TokenPurchaseInterface(Player player) {
super(player, new ArrayList<Button>(), 36, "Purchase Tokens", getInstance()); super(player, new ArrayList<Button>(), 36, "Purchase Tokens");
this.player = player;
updateButtons(); updateButtons();
instance = this;
}
@Override
public ChestInterface getParent() {
return getInstance();
}
public static TokenPurchaseInterface getInstance() {
return instance;
} }
@Override @Override
@ -108,4 +93,10 @@ public class TokenPurchaseInterface extends ChestInterface {
}; };
} }
@Override
public void cleanUp() {
super.cleanUp();
player = null;
}
} }