Skip to content

Commit 75e6193

Browse files
committed
implement new plugin structure
1 parent 31a67a5 commit 75e6193

25 files changed

Lines changed: 233 additions & 190 deletions
Lines changed: 47 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package me.hsgamer.bettergui;
22

33
import io.github.projectunified.minelib.plugin.base.BasePlugin;
4-
import me.hsgamer.bettergui.api.addon.PostEnable;
4+
import io.github.projectunified.minelib.plugin.command.CommandComponent;
5+
import io.github.projectunified.minelib.plugin.postenable.PostEnable;
6+
import io.github.projectunified.minelib.plugin.postenable.PostEnableComponent;
57
import me.hsgamer.bettergui.api.menu.Menu;
68
import me.hsgamer.bettergui.builder.*;
79
import me.hsgamer.bettergui.command.*;
@@ -30,24 +32,13 @@
3032
import org.bukkit.Bukkit;
3133
import org.bukkit.plugin.java.JavaPlugin;
3234

33-
import java.util.Collections;
34-
import java.util.HashMap;
35-
import java.util.List;
36-
import java.util.Map;
35+
import java.util.*;
3736

3837
/**
3938
* The main class of the plugin
4039
*/
41-
public final class BetterGUI extends BasePlugin {
40+
public final class BetterGUI extends BasePlugin implements PostEnable {
4241
private static final CachedValue<BetterGUI> INSTANCE_CACHE = CachedValue.of(() -> JavaPlugin.getPlugin(BetterGUI.class));
43-
private final MainConfig mainConfig = ConfigGenerator.newInstance(MainConfig.class, new BukkitConfig(this, "config.yml"));
44-
private final MessageConfig messageConfig = ConfigGenerator.newInstance(MessageConfig.class, new BukkitConfig(this, "messages.yml"));
45-
private final TemplateConfig templateButtonConfig = new TemplateConfig(this);
46-
private final MenuManager menuManager = new MenuManager(this);
47-
private final MenuCommandManager menuCommandManager = new MenuCommandManager(this);
48-
private final AddonManager addonManager = new AddonManager(this);
49-
private final AddonDownloader addonDownloader = new AddonDownloader(this);
50-
private final VariableBundle variableBundle = new VariableBundle();
5142

5243
/**
5344
* Get the instance of the plugin
@@ -59,59 +50,75 @@ public static BetterGUI getInstance() {
5950
}
6051

6152
@Override
62-
public void load() {
63-
MessageUtils.setPrefix(messageConfig::getPrefix);
64-
53+
protected List<Object> getComponents() {
54+
VariableBundle variableBundle = new VariableBundle();
6555
CommonVariableBundle.registerVariables(variableBundle);
6656
BukkitVariableBundle.registerVariables(variableBundle);
6757
variableBundle.register("menu_", StringReplacer.of((original, uuid) -> {
6858
String[] split = original.split("_", 2);
6959
String menuName = split[0].trim();
7060
String variable = split.length > 1 ? split[1].trim() : "";
71-
Menu menu = menuManager.getMenu(menuName);
61+
Menu menu = get(MenuManager.class).getMenu(menuName);
7262
if (menu == null) {
7363
return null;
7464
}
7565
return menu.getVariableManager().setVariables(StringReplacerApplier.normalizeQuery(variable), uuid);
7666
}));
77-
}
7867

79-
@Override
80-
public void enable() {
81-
BukkitGUIListener.init(this);
68+
List<Object> components = new ArrayList<>(Arrays.asList(
69+
variableBundle,
70+
71+
new PostEnableComponent(this),
72+
73+
new Permissions(this),
74+
new CommandComponent(this,
75+
new OpenCommand(this),
76+
new MainCommand(this),
77+
new GetAddonsCommand(this),
78+
new ReloadCommand(this),
79+
new GetVariablesCommand(this),
80+
new GetTemplateButtonsCommand(this)
81+
),
8282

83-
addonManager.loadExpansions();
83+
ConfigGenerator.newInstance(MainConfig.class, new BukkitConfig(this, "config.yml")),
84+
ConfigGenerator.newInstance(MessageConfig.class, new BukkitConfig(this, "messages.yml")),
85+
new TemplateConfig(this),
8486

85-
registerCommand(new OpenCommand(this));
86-
registerCommand(new MainCommand(this));
87-
registerCommand(new GetAddonsCommand(this));
88-
registerCommand(new ReloadCommand(this));
89-
registerCommand(new GetVariablesCommand(this));
90-
registerCommand(new GetTemplateButtonsCommand(this));
87+
new AddonManager(this),
88+
new MenuManager(this),
89+
new MenuCommandManager(this),
90+
new AddonDownloader(this)
91+
));
9192

9293
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
93-
ExtraPlaceholderExpansion expansion = new ExtraPlaceholderExpansion(this);
94-
expansion.register();
95-
addDisableFunction(expansion::unregister);
94+
components.add(new ExtraPlaceholderExpansion(this));
9695
}
96+
97+
return components;
98+
}
99+
100+
@Override
101+
public void load() {
102+
MessageUtils.setPrefix(() -> get(MessageConfig.class).getPrefix());
103+
}
104+
105+
@Override
106+
public void enable() {
107+
BukkitGUIListener.init(this);
97108
}
98109

99110
@Override
100111
public void postEnable() {
101-
addonManager.enableExpansions();
102-
addonDownloader.setup();
103-
templateButtonConfig.setup();
104-
menuManager.loadMenuConfig();
105-
addonManager.call(PostEnable.class, PostEnable::onPostEnable);
112+
get(AddonManager.class).call(me.hsgamer.bettergui.api.addon.PostEnable.class, me.hsgamer.bettergui.api.addon.PostEnable::onPostEnable);
106113

107114
Metrics metrics = new Metrics(this, 6609);
108115
metrics.addCustomChart(new DrilldownPie("addon", () -> {
109116
Map<String, Map<String, Integer>> map = new HashMap<>();
110-
Map<String, Integer> addons = addonManager.getExpansionCount();
117+
Map<String, Integer> addons = get(AddonManager.class).getExpansionCount();
111118
map.put(String.valueOf(addons.size()), addons);
112119
return map;
113120
}));
114-
metrics.addCustomChart(new AdvancedPie("addon_count", addonManager::getExpansionCount));
121+
metrics.addCustomChart(new AdvancedPie("addon_count", get(AddonManager.class)::getExpansionCount));
115122

116123
if (getDescription().getVersion().contains("SNAPSHOT")) {
117124
getLogger().warning("You are using the development version");
@@ -133,98 +140,12 @@ public void postEnable() {
133140

134141
@Override
135142
public void disable() {
136-
menuCommandManager.clearMenuCommand();
137-
menuManager.clear();
138-
templateButtonConfig.clear();
139-
addonManager.disableExpansions();
140-
addonManager.clearExpansions();
141-
}
142-
143-
@Override
144-
public void postDisable() {
145143
ActionBuilder.INSTANCE.clear();
146144
ButtonBuilder.INSTANCE.clear();
147145
ItemModifierBuilder.INSTANCE.clear();
148146
MenuBuilder.INSTANCE.clear();
149147
RequirementBuilder.INSTANCE.clear();
150-
variableBundle.unregisterAll();
148+
get(VariableBundle.class).unregisterAll();
151149
INSTANCE_CACHE.clearCache();
152150
}
153-
154-
@Override
155-
private List<Class<?>> getPermissionClasses() {
156-
return Collections.singletonList(Permissions.class);
157-
}
158-
159-
/**
160-
* Get the main config
161-
*
162-
* @return the main config
163-
*/
164-
public MainConfig getMainConfig() {
165-
return mainConfig;
166-
}
167-
168-
/**
169-
* Get the message config
170-
*
171-
* @return the message config
172-
*/
173-
public MessageConfig getMessageConfig() {
174-
return messageConfig;
175-
}
176-
177-
/**
178-
* Get the template button config
179-
*
180-
* @return the template button config
181-
*/
182-
public TemplateConfig getTemplateButtonConfig() {
183-
return templateButtonConfig;
184-
}
185-
186-
/**
187-
* Get the menu manager
188-
*
189-
* @return the menu manager
190-
*/
191-
public MenuManager getMenuManager() {
192-
return menuManager;
193-
}
194-
195-
/**
196-
* Get the menu command manager
197-
*
198-
* @return the menu command manager
199-
*/
200-
public MenuCommandManager getMenuCommandManager() {
201-
return menuCommandManager;
202-
}
203-
204-
/**
205-
* Get the addon manager
206-
*
207-
* @return the addon manager
208-
*/
209-
public AddonManager getAddonManager() {
210-
return addonManager;
211-
}
212-
213-
/**
214-
* Get the addon downloader
215-
*
216-
* @return the addon downloader
217-
*/
218-
public AddonDownloader getAddonDownloader() {
219-
return addonDownloader;
220-
}
221-
222-
/**
223-
* Get the variable bundle
224-
*
225-
* @return the variable bundle
226-
*/
227-
public VariableBundle getVariableBundle() {
228-
return variableBundle;
229-
}
230151
}

src/main/java/me/hsgamer/bettergui/Permissions.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package me.hsgamer.bettergui;
22

3+
import io.github.projectunified.minelib.plugin.base.BasePlugin;
4+
import io.github.projectunified.minelib.plugin.permission.PermissionComponent;
35
import org.bukkit.permissions.Permission;
46
import org.bukkit.permissions.PermissionDefault;
57

6-
public final class Permissions {
8+
public final class Permissions extends PermissionComponent {
79

810
public static final String PREFIX = "bettergui";
911

@@ -15,7 +17,7 @@ public final class Permissions {
1517
public static final Permission TEMPLATE_BUTTON = new Permission(PREFIX + ".templatebuttons", PermissionDefault.OP);
1618
public static final Permission OPEN_MENU_BYPASS = new Permission(PREFIX + ".openmenu.bypass", PermissionDefault.OP);
1719

18-
private Permissions() {
19-
20+
public Permissions(BasePlugin plugin) {
21+
super(plugin);
2022
}
2123
}

src/main/java/me/hsgamer/bettergui/action/type/OpenMenuAction.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import me.hsgamer.bettergui.BetterGUI;
55
import me.hsgamer.bettergui.api.action.MenuActionInput;
66
import me.hsgamer.bettergui.api.menu.Menu;
7+
import me.hsgamer.bettergui.config.MessageConfig;
8+
import me.hsgamer.bettergui.manager.MenuManager;
79
import me.hsgamer.hscore.action.common.Action;
810
import me.hsgamer.hscore.bukkit.utils.MessageUtils;
911
import me.hsgamer.hscore.common.StringReplacer;
@@ -44,19 +46,22 @@ public void apply(UUID uuid, TaskProcess process, StringReplacer stringReplacer)
4446
}
4547

4648
// Open menu
47-
if (getInstance().getMenuManager().contains(menu)) {
49+
BetterGUI betterGUI1 = getInstance();
50+
if (betterGUI1.get(MenuManager.class).contains(menu)) {
4851
String[] finalArgs = args;
4952
Menu parentMenu = this.menu;
5053
EntityScheduler.get(BetterGUI.getInstance(), player)
5154
.run(() -> {
5255
try {
53-
getInstance().getMenuManager().openMenu(menu, player, finalArgs, parentMenu, bypass);
56+
BetterGUI betterGUI = getInstance();
57+
betterGUI.get(MenuManager.class).openMenu(menu, player, finalArgs, parentMenu, bypass);
5458
} finally {
5559
process.next();
5660
}
5761
}, process::next);
5862
} else {
59-
MessageUtils.sendMessage(player, getInstance().getMessageConfig().getMenuNotFound());
63+
BetterGUI betterGUI = getInstance();
64+
MessageUtils.sendMessage(player, betterGUI.get(MessageConfig.class).getMenuNotFound());
6065
process.next();
6166
}
6267
}

src/main/java/me/hsgamer/bettergui/builder/ButtonBuilder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import me.hsgamer.bettergui.api.button.WrappedButton;
55
import me.hsgamer.bettergui.api.menu.Menu;
66
import me.hsgamer.bettergui.button.*;
7+
import me.hsgamer.bettergui.config.MainConfig;
78
import me.hsgamer.hscore.builder.MassBuilder;
89
import me.hsgamer.hscore.collections.map.CaseInsensitiveStringMap;
910

@@ -34,9 +35,12 @@ private ButtonBuilder() {
3435
register(WrappedAnimatedButton::new, "animated", "animate", "anim");
3536
register(WrappedNullButton::new, "null", "none");
3637
register(input ->
37-
BetterGUI.getInstance().getMainConfig().isUseLegacyButton()
38+
{
39+
BetterGUI betterGUI = BetterGUI.getInstance();
40+
return betterGUI.get(MainConfig.class).isUseLegacyButton()
3841
? new LegacyMenuButton(input)
39-
: new WrappedSimpleButton(input),
42+
: new WrappedSimpleButton(input);
43+
},
4044
"simple"
4145
);
4246
}

src/main/java/me/hsgamer/bettergui/button/ActionButton.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import me.hsgamer.bettergui.action.ClickActionHandler;
66
import me.hsgamer.bettergui.api.button.BaseWrappedButton;
77
import me.hsgamer.bettergui.builder.ButtonBuilder;
8+
import me.hsgamer.bettergui.config.MainConfig;
89
import me.hsgamer.hscore.bukkit.clicktype.BukkitClickType;
910
import me.hsgamer.hscore.bukkit.clicktype.ClickTypeUtils;
1011
import me.hsgamer.hscore.bukkit.gui.event.BukkitClickEvent;
@@ -38,7 +39,8 @@ protected B createButton(Map<String, Object> section) {
3839
return getButtonFunction(section).apply(clickEvent -> {
3940
if (!(clickEvent instanceof BukkitClickEvent)) return;
4041
BukkitClickEvent bukkitClickEvent = (BukkitClickEvent) clickEvent;
41-
BukkitClickType clickType = ClickTypeUtils.getClickTypeFromEvent(bukkitClickEvent.getEvent(), BetterGUI.getInstance().getMainConfig().isModernClickType());
42+
BetterGUI betterGUI = BetterGUI.getInstance();
43+
BukkitClickType clickType = ClickTypeUtils.getClickTypeFromEvent(bukkitClickEvent.getEvent(), betterGUI.get(MainConfig.class).isModernClickType());
4244
BatchRunnable batchRunnable = new BatchRunnable();
4345
clickActionHandler.apply(clickEvent.getViewerID(), clickType, batchRunnable);
4446
AsyncScheduler.get(BetterGUI.getInstance()).run(batchRunnable);

src/main/java/me/hsgamer/bettergui/button/TemplateButton.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import me.hsgamer.bettergui.BetterGUI;
44
import me.hsgamer.bettergui.api.button.BaseWrappedButton;
55
import me.hsgamer.bettergui.builder.ButtonBuilder;
6+
import me.hsgamer.bettergui.config.TemplateConfig;
67
import me.hsgamer.hscore.minecraft.gui.button.Button;
78

89
import java.util.Map;
@@ -22,7 +23,8 @@ public TemplateButton(ButtonBuilder.Input input) {
2223

2324
@Override
2425
protected Button createButton(Map<String, Object> section) {
25-
finalOptions = BetterGUI.getInstance().getTemplateButtonConfig().getValues(section, "type");
26+
BetterGUI betterGUI = BetterGUI.getInstance();
27+
finalOptions = betterGUI.get(TemplateConfig.class).getValues(section, "type");
2628
return ButtonBuilder.INSTANCE.build(new ButtonBuilder.Input(getMenu(), getName(), finalOptions)).orElse(null);
2729
}
2830

src/main/java/me/hsgamer/bettergui/button/WrappedPredicateButton.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import me.hsgamer.bettergui.api.button.WrappedButton;
77
import me.hsgamer.bettergui.api.requirement.Requirement;
88
import me.hsgamer.bettergui.builder.ButtonBuilder;
9+
import me.hsgamer.bettergui.config.MainConfig;
910
import me.hsgamer.bettergui.requirement.RequirementApplier;
1011
import me.hsgamer.bettergui.util.ProcessApplierConstants;
1112
import me.hsgamer.hscore.bukkit.clicktype.BukkitClickType;
@@ -64,7 +65,8 @@ public static void applyRequirement(Map<String, Object> section, WrappedButton w
6465
predicateButton.setClickFuturePredicate(clickEvent -> {
6566
if (!(clickEvent instanceof BukkitClickEvent)) return CompletableFuture.completedFuture(false);
6667
BukkitClickEvent bukkitClickEvent = (BukkitClickEvent) clickEvent;
67-
RequirementApplier clickRequirement = clickRequirements.get(ClickTypeUtils.getClickTypeFromEvent(bukkitClickEvent.getEvent(), BetterGUI.getInstance().getMainConfig().isModernClickType()));
68+
BetterGUI betterGUI = BetterGUI.getInstance();
69+
RequirementApplier clickRequirement = clickRequirements.get(ClickTypeUtils.getClickTypeFromEvent(bukkitClickEvent.getEvent(), betterGUI.get(MainConfig.class).isModernClickType()));
6870
return CompletableFuture.supplyAsync(() -> clickRequirement.getResult(clickEvent.getViewerID()))
6971
.thenApply(result -> {
7072
BatchRunnable batchRunnable = new BatchRunnable();

src/main/java/me/hsgamer/bettergui/command/GetAddonsCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public boolean execute(CommandSender sender, String commandLabel, String[] args)
2828
boolean shortMessage = args.length > 0 && args[0].equalsIgnoreCase("short");
2929

3030
sendMessage(sender, "&b&lLoaded Addons:");
31-
plugin.getAddonManager().getClassLoaders().forEach((name, loader) -> {
31+
plugin.get(AddonManager.class).getClassLoaders().forEach((name, loader) -> {
3232
sendMessage(sender, " &f- &a" + name);
3333
if (!shortMessage) {
3434
sendMessage(sender, " &eVersion: &f" + loader.getDescription().getVersion());

src/main/java/me/hsgamer/bettergui/command/GetTemplateButtonsCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import me.hsgamer.bettergui.BetterGUI;
44
import me.hsgamer.bettergui.Permissions;
5+
import me.hsgamer.bettergui.config.TemplateConfig;
56
import org.bukkit.command.CommandSender;
67
import org.bukkit.command.defaults.BukkitCommand;
78

@@ -24,7 +25,7 @@ public boolean execute(CommandSender sender, String commandLabel, String[] args)
2425
return false;
2526
}
2627
sendMessage(sender, "&bRegistered Template Buttons:");
27-
plugin.getTemplateButtonConfig().getAllTemplateNames().stream().sorted().forEach(prefix -> sendMessage(sender, "&f- &e" + prefix));
28+
plugin.get(TemplateConfig.class).getAllTemplateNames().stream().sorted().forEach(prefix -> sendMessage(sender, "&f- &e" + prefix));
2829
return true;
2930
}
3031
}

0 commit comments

Comments
 (0)