Skip to content

Commit f8163f1

Browse files
committed
made it so you have to pass the plugin instance when opening a menu so you can obtain it later on
1 parent ccdf866 commit f8163f1

File tree

3 files changed

+11
-76
lines changed

3 files changed

+11
-76
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
<groupId>me.kodysimpson</groupId>
88
<artifactId>SimpAPI</artifactId>
9-
<version>4.4.0</version>
9+
<version>4.5.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>SimpAPI</name>
1313

1414
<properties>
15-
<java.version>1.8</java.version>
15+
<java.version>17</java.version>
1616
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1717
</properties>
1818

src/main/java/me/kodysimpson/simpapi/menu/Menu.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.bukkit.inventory.InventoryHolder;
1212
import org.bukkit.inventory.ItemStack;
1313
import org.bukkit.inventory.meta.ItemMeta;
14+
import org.bukkit.plugin.Plugin;
1415
import org.jetbrains.annotations.NotNull;
1516

1617
import java.util.Arrays;
@@ -26,11 +27,13 @@ public abstract class Menu implements InventoryHolder {
2627
protected Player p;
2728
protected Inventory inventory;
2829
protected ItemStack FILLER_GLASS = makeItem(Material.GRAY_STAINED_GLASS_PANE, " ");
30+
protected Plugin plugin;
2931

3032
//Constructor for Menu. Pass in a PlayerMenuUtility so that
3133
// we have information on who's menu this is and
3234
// what info is to be transferred
33-
public Menu(PlayerMenuUtility playerMenuUtility) {
35+
public Menu(Plugin plugin, PlayerMenuUtility playerMenuUtility) {
36+
this.plugin = plugin;
3437
this.playerMenuUtility = playerMenuUtility;
3538
this.p = playerMenuUtility.getOwner();
3639
}
@@ -65,7 +68,7 @@ public void open() {
6568
}
6669

6770
public void back() throws MenuManagerException, MenuManagerNotSetupException {
68-
MenuManager.openMenu(playerMenuUtility.lastMenu().getClass(), playerMenuUtility.getOwner());
71+
MenuManager.openMenu(playerMenuUtility.lastMenu().getClass(), plugin, playerMenuUtility.getOwner());
6972
}
7073

7174
protected void reloadItems() {
@@ -77,7 +80,7 @@ protected void reloadItems() {
7780

7881
protected void reload() throws MenuManagerException, MenuManagerNotSetupException {
7982
p.closeInventory();
80-
MenuManager.openMenu(this.getClass(), p);
83+
MenuManager.openMenu(this.getClass(), plugin, p);
8184
}
8285

8386
//Overridden method from the InventoryHolder interface

src/main/java/me/kodysimpson/simpapi/menu/MenuManager.java

Lines changed: 3 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ public class MenuManager {
1818

1919
//each player will be assigned their own PlayerMenuUtility object
2020
private static final HashMap<Player, PlayerMenuUtility> playerMenuUtilityMap = new HashMap<>();
21-
//private static Class<? extends PlayerMenuUtility> pmuClass;
2221
private static boolean isSetup = false;
23-
//private static Class<? extends Menu>[] menus;
2422

2523
private static void registerMenuListener(Server server, Plugin plugin) {
26-
2724
boolean isAlreadyRegistered = false;
2825
for (RegisteredListener rl : InventoryClickEvent.getHandlerList().getRegisteredListeners()) {
2926
System.out.println(rl.getListener().getClass().getSimpleName());
@@ -33,73 +30,36 @@ private static void registerMenuListener(Server server, Plugin plugin) {
3330
}
3431
}
3532

36-
//Dont touch this code -- kody
37-
// HandlerList.getHandlerLists().stream()
38-
// .forEach(handler -> {
39-
//
40-
//
41-
//
42-
// System.out.println(handler.toString());
43-
//// System.out.println(Modifier.toString(field.getModifiers()) + " " + field.getName());
44-
// });
45-
46-
//System.out.println("erwiwjriwer: " + isAlreadyRegistered);
4733
if (!isAlreadyRegistered) {
4834
server.getPluginManager().registerEvents(new MenuListener(), plugin);
4935
}
50-
5136
}
5237

53-
// private static void registerPlayerMenuUtility(Class<? extends PlayerMenuUtility> playerMenuUtilityClass) {
54-
//
55-
// MenuManager.pmuClass = playerMenuUtilityClass;
56-
//
57-
// }
58-
5938
/**
6039
* @param server The instance of your server. Provide by calling getServer()
6140
* @param plugin The instance of the plugin using this API. Can provide in plugin class by passing this keyword
6241
*/
6342
public static void setup(Server server, Plugin plugin) {
64-
6543
System.out.println("MENU MANAGER HAS BEEN SETUP");
6644

6745
registerMenuListener(server, plugin);
68-
//registerPlayerMenuUtility(playerMenuUtilityClass);
6946
isSetup = true;
70-
7147
}
7248

7349
/**
7450
* @param menuClass The class reference of the Menu you want to open for a player
7551
* @param player The player to open the menu for
7652
* @throws MenuManagerNotSetupException Thrown if the setup() method has not been called and used properly
7753
*/
78-
public static void openMenu(Class<? extends Menu> menuClass, Player player) throws MenuManagerException, MenuManagerNotSetupException {
54+
public static void openMenu(Class<? extends Menu> menuClass, Plugin plugin, Player player) throws MenuManagerException, MenuManagerNotSetupException {
7955
try {
80-
menuClass.getConstructor(PlayerMenuUtility.class).newInstance(getPlayerMenuUtility(player)).open();
56+
menuClass.getConstructor(Plugin.class, PlayerMenuUtility.class).newInstance(plugin, getPlayerMenuUtility(player)).open();
8157
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
82-
e.printStackTrace();
8358
throw new MenuManagerException();
8459
}
8560
}
8661

87-
// /**
88-
// * @param menuClass The class reference of the Menu you want to open for a player
89-
// * @param abstractPlayerMenuUtility Usually used to pass in a custom PlayerMenuUtility, for data transfer
90-
// */
91-
// public static void openMenu(Class<? extends Menu> menuClass, PlayerMenuUtility pmc) throws MenuManagerException {
92-
//
93-
// try {
94-
// menuClass.getConstructor(PlayerMenuUtility.class).newInstance(pmc).open();
95-
// } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
96-
// throw new MenuManagerException();
97-
// }
98-
//
99-
// }
100-
101-
public static PlayerMenuUtility getPlayerMenuUtility(Player p) throws MenuManagerException, MenuManagerNotSetupException {
102-
62+
public static PlayerMenuUtility getPlayerMenuUtility(Player p) throws MenuManagerNotSetupException {
10363
if (!isSetup) {
10464
throw new MenuManagerNotSetupException();
10565
}
@@ -117,32 +77,4 @@ public static PlayerMenuUtility getPlayerMenuUtility(Player p) throws MenuManage
11777
}
11878
}
11979

120-
121-
// /**
122-
// * @param p The player to get the custom PlayerMenuUtility from
123-
// * @param t The class reference of your custom PlayerMenuUtility
124-
// * @param <T> The custom PlayerMenuUtility Type
125-
// * @return The PlayerMenuUtility for that player
126-
// */
127-
// public static <T> T getPlayerMenuUtility(Player p, Class<T> t) throws MenuManagerException {
128-
//
129-
// PlayerMenuUtility playerMenuUtility;
130-
// if (!(playerMenuUtilityMap.containsKey(p))) { //See if the player has a PMU "saved" for them
131-
//
132-
// try{
133-
// //Construct PMU using reflection
134-
// Constructor<? extends PlayerMenuUtility> constructor = pmuClass.getConstructor(Player.class);
135-
//
136-
// playerMenuUtility = constructor.newInstance(p);
137-
// playerMenuUtilityMap.put(p, playerMenuUtility);
138-
// } catch (InstantiationException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
139-
// throw new MenuManagerException();
140-
// }
141-
//
142-
// return t.cast(playerMenuUtility);
143-
// } else {
144-
// return t.cast(playerMenuUtilityMap.get(p)); //Return the object by using the provided player
145-
// }
146-
//
147-
// }
14880
}

0 commit comments

Comments
 (0)