Skip to content

Commit 49ffac0

Browse files
committed
allow registering custom menu file
1 parent 92522ad commit 49ffac0

1 file changed

Lines changed: 31 additions & 9 deletions

File tree

src/main/java/me/hsgamer/bettergui/manager/MenuManager.java

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,47 @@ public void loadMenuConfig() {
4242
if (file.isDirectory()) {
4343
files.addAll(Arrays.asList(Objects.requireNonNull(file.listFiles())));
4444
} else if (file.isFile()) {
45-
this.registerMenu(file);
45+
String name = plugin.get(MainConfig.class).getFileName(menusFolder, file);
46+
if (!registerMenu(name, file)) {
47+
plugin.getLogger().log(Level.WARNING, "\"{0}\" cannot be registered as a menu. Ignored", name);
48+
}
4649
}
4750
}
4851
}
4952

5053
/**
5154
* Register the menu
5255
*
56+
* @param name the menu name
5357
* @param file the menu file
58+
*
59+
* @return true if the menu is registered, false if the menu cannot be registered because of either name duplication or unsupported file
5460
*/
55-
public void registerMenu(File file) {
56-
String name = plugin.get(MainConfig.class).getFileName(menusFolder, file);
61+
public boolean registerMenu(String name, File file) {
5762
if (menuMap.containsKey(name)) {
58-
plugin.getLogger().log(Level.WARNING, "\"{0}\" is already available in the menu manager. Ignored", name);
59-
} else {
60-
plugin.get(ConfigBuilder.class).build(file).flatMap(config -> {
61-
config.setup();
62-
return plugin.get(MenuBuilder.class).build(config);
63-
}).ifPresent(menu -> menuMap.put(name, menu));
63+
return false;
64+
}
65+
Optional<Menu> optionalMenu = plugin.get(ConfigBuilder.class).build(file).flatMap(config -> {
66+
config.setup();
67+
return plugin.get(MenuBuilder.class).build(config);
68+
});
69+
if (optionalMenu.isPresent()) {
70+
Menu menu = optionalMenu.get();
71+
menuMap.put(name, menu);
72+
return false;
73+
}
74+
return true;
75+
}
76+
77+
/**
78+
* Remove a menu
79+
*
80+
* @param name the menu name
81+
*/
82+
public void removeMenu(String name) {
83+
Menu menu = menuMap.remove(name);
84+
if (menu != null) {
85+
menu.closeAll();
6486
}
6587
}
6688

0 commit comments

Comments
 (0)