Fix memmory leaks
This commit is contained in:
parent
416c555e0d
commit
a3ddeaac9a
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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());
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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<>();
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue