-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModuleRegistry.java
More file actions
158 lines (144 loc) · 7.83 KB
/
Copy pathModuleRegistry.java
File metadata and controls
158 lines (144 loc) · 7.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package dev.vupe.core.module;
import dev.vupe.core.VupeCore;
import dev.vupe.core.module.impl.*;
import java.util.*;
public final class ModuleRegistry {
private final VupeCore plugin;
private final List<VupeModule> modules = new ArrayList<>();
private EconomyModule economy;
private GeneratorModule generators;
private CrateModule crates;
private ShopModule shop;
private NativeShopModule nativeShop;
private NativeAuctionModule nativeAuction;
private ProgressionModule progression;
private UtilityModule utilities;
private PlotWorldModule plots;
private MarketModule market;
private ActivityModule activities;
private SocialModule social;
private PvpModule pvp;
private ModerationModule moderation;
private StatsModule stats;
private EventModule events;
private NativeNpcModule nativeNpc;
private DiscordModule discord;
private MinionModule minions;
private CommerceModule commerce;
private AutoSellChestModule autosellChests;
private ProgressionGuiModule progressionGui;
private StaffGuiModule staffGui;
public ModuleRegistry(VupeCore plugin) {
this.plugin = plugin;
}
public void load() {
modules.clear();
economy = add(new EconomyModule(plugin));
generators = add(new GeneratorModule(plugin));
crates = add(new CrateModule(plugin));
shop = add(new ShopModule(plugin));
nativeShop = add(new NativeShopModule(plugin));
nativeAuction = add(new NativeAuctionModule(plugin));
progression = add(new ProgressionModule(plugin));
utilities = add(new UtilityModule(plugin));
plots = add(new PlotWorldModule(plugin));
market = add(new MarketModule(plugin));
activities = add(new ActivityModule(plugin));
social = add(new SocialModule(plugin));
pvp = add(new PvpModule(plugin));
moderation = add(new ModerationModule(plugin));
stats = add(new StatsModule(plugin));
events = add(new EventModule(plugin));
nativeNpc = add(new NativeNpcModule(plugin));
discord = add(new DiscordModule(plugin));
minions = add(new MinionModule(plugin));
commerce = add(new CommerceModule(plugin));
autosellChests = add(new AutoSellChestModule(plugin));
progressionGui = add(new ProgressionGuiModule(plugin));
staffGui = add(new StaffGuiModule(plugin));
applyEnabledStates();
}
public void reload() {
for (VupeModule module : modules) module.disable();
applyEnabledStates();
}
public void unload() {
ListIterator<VupeModule> it = modules.listIterator(modules.size());
while (it.hasPrevious()) it.previous().disable();
}
private void applyEnabledStates() {
for (VupeModule module : modules) {
if (shouldEnable(module.id())) module.enable();
}
}
private boolean shouldEnable(String id) {
return switch (id) {
case "economy" -> plugin.configs().modules().getBoolean("modules.economy", true);
case "generators" -> plugin.configs().modules().getBoolean("modules.generators", true);
case "crates" -> plugin.configs().modules().getBoolean("modules.crates", true);
case "shop" -> plugin.configs().modules().getBoolean("modules.shop", true);
case "native-shop" -> plugin.configs().modules().getBoolean("modules.shop", true);
case "native-auction" -> plugin.configs().modules().getBoolean("modules.auction-house", true);
case "progression" -> plugin.configs().modules().getBoolean("modules.progression", true);
case "utilities" -> plugin.configs().modules().getBoolean("modules.player-utilities", true);
case "plots" -> plugin.configs().modules().getBoolean("modules.plots", true)
|| plugin.configs().modules().getBoolean("modules.container-limits", true);
case "market" -> plugin.configs().modules().getBoolean("modules.auction-house", true)
|| plugin.configs().modules().getBoolean("modules.coinflips", true);
case "activities" -> plugin.configs().modules().getBoolean("modules.fishing", true)
|| plugin.configs().modules().getBoolean("modules.mining", true)
|| plugin.configs().modules().getBoolean("modules.farming", true);
case "social" -> plugin.configs().modules().getBoolean("modules.chat", true)
|| plugin.configs().modules().getBoolean("modules.teams", true)
|| plugin.configs().modules().getBoolean("modules.afk", true);
case "pvp" -> plugin.configs().modules().getBoolean("modules.pvp-stats", true)
|| plugin.configs().modules().getBoolean("modules.combat-tag", true);
case "moderation" -> plugin.configs().modules().getBoolean("modules.moderation", true);
case "stats" -> plugin.configs().modules().getBoolean("modules.stats", true)
|| plugin.configs().modules().getBoolean("modules.scoreboard", true)
|| plugin.configs().modules().getBoolean("modules.tab-list", true)
|| plugin.configs().modules().getBoolean("modules.leaderboards", true);
case "events" -> plugin.configs().modules().getBoolean("modules.missions", true)
|| plugin.configs().modules().getBoolean("modules.supply-drops", true)
|| plugin.configs().modules().getBoolean("modules.ads", true);
case "native-npcs" -> plugin.configs().modules().getBoolean("modules.native-npcs", true)
|| plugin.configs().modules().getBoolean("modules.warps", true);
case "discord" -> plugin.configs().modules().getBoolean("modules.discord", false);
case "minions" -> plugin.configs().modules().getBoolean("modules.minions", false);
case "commerce" -> plugin.configs().modules().getBoolean("modules.commerce", true);
case "autosell-chests" -> plugin.configs().modules().getBoolean("modules.autosell-chests", true);
case "progression-guis" -> plugin.configs().modules().getBoolean("modules.progression-guis", true);
case "staff-guis" -> plugin.configs().modules().getBoolean("modules.staff-guis", true);
default -> true;
};
}
private <T extends VupeModule> T add(T module) {
modules.add(module);
return module;
}
public int enabledCount() { return (int) modules.stream().filter(VupeModule::enabled).count(); }
public List<VupeModule> all() { return Collections.unmodifiableList(modules); }
public EconomyModule economy() { return economy; }
public GeneratorModule generators() { return generators; }
public CrateModule crates() { return crates; }
public ShopModule shop() { return shop; }
public NativeShopModule nativeShop() { return nativeShop; }
public NativeAuctionModule nativeAuction() { return nativeAuction; }
public ProgressionModule progression() { return progression; }
public UtilityModule utilities() { return utilities; }
public PlotWorldModule plots() { return plots; }
public MarketModule market() { return market; }
public ActivityModule activities() { return activities; }
public SocialModule social() { return social; }
public PvpModule pvp() { return pvp; }
public ModerationModule moderation() { return moderation; }
public StatsModule stats() { return stats; }
public EventModule events() { return events; }
public NativeNpcModule nativeNpc() { return nativeNpc; }
public DiscordModule discord() { return discord; }
public MinionModule minions() { return minions; }
public CommerceModule commerce() { return commerce; }
public AutoSellChestModule autosellChests() { return autosellChests; }
public ProgressionGuiModule progressionGui() { return progressionGui; }
public StaffGuiModule staffGui() { return staffGui; }
}