55import fr .openmc .api .menulib .MenuLib ;
66import fr .openmc .api .packetmenulib .PacketMenuLib ;
77import fr .openmc .core .bootstrap .features .Feature ;
8- import fr .openmc .core .bootstrap .features .types .LoadAfterItemsAdder ;
8+ import fr .openmc .core .bootstrap .features .FeatureFactory ;
9+ import fr .openmc .core .bootstrap .features .FeatureLoadingType ;
910import fr .openmc .core .bootstrap .hooks .Hooks ;
1011import fr .openmc .core .bootstrap .integration .DatabaseManager ;
1112import fr .openmc .core .bootstrap .integration .ErrorReporter ;
@@ -76,47 +77,50 @@ public class OMCPlugin extends JavaPlugin {
7677 public static final String VANISH_META_KEY = "omcstaff.vanished" ;
7778
7879 // ** Registry of OMC Features
79- public final List <Feature > REGISTRY_FEATURE = new ArrayList <>(List .of (
80- new TicketManager (new File (this .getDataFolder (), "data/stats" )),
81- new PrivateMessageManager (),
82- new SocialSpyManager (),
83- new SpawnManager (),
84- new UpdateManager (),
85- new EconomyManager (),
86- new BankManager (),
87- new ScoreboardManager (),
88- new HomesManager (),
89- new TPAManager (),
90- new FreezeManager (),
91- new TransactionsManager (),
92- new AnalyticsManager (),
93- new FriendManager (),
94- new TabList (),
95- new AdminShopManager (),
96- new HelpConfigManager (),
97- new BossbarManager (),
98- new AnimationsManager (),
99- new HalloweenManager (),
100- new QuestProgressSaveManager (),
101- new MotdUtils (),
102- new MascotsManager (),
103- new PlayerSettingsManager (),
104- new MailboxManager (),
105- new QuestsManager (),
106- new CityManager (),
107- new DynamicCooldownManager (),
108- new ContestManager (),
109- new WeeklyEventsManager (),
110- new CalendarManager (),
111- new DreamManager (),
112- new MultiBlockManager (),
113- new MilestonesManager (),
114- new LeaderboardManager (),
115- new MainMenu (),
116- new HologramLoader (),
117- new HomeIconCacheManager ()
80+ // () -> nécessaire si y'a un package d'api externe (ex com.comphenix.protocol)
81+ public final List <FeatureFactory > REGISTRY_FEATURE = new ArrayList <>(List .of (
82+ () -> new TicketManager (new File (this .getDataFolder (), "data/stats" )),
83+ PrivateMessageManager ::new ,
84+ SocialSpyManager ::new ,
85+ SpawnManager ::new ,
86+ UpdateManager ::new ,
87+ EconomyManager ::new ,
88+ BankManager ::new ,
89+ ScoreboardManager ::new ,
90+ HomesManager ::new ,
91+ TPAManager ::new ,
92+ FreezeManager ::new ,
93+ TransactionsManager ::new ,
94+ AnalyticsManager ::new ,
95+ FriendManager ::new ,
96+ () -> new TabList (),
97+ AdminShopManager ::new ,
98+ HelpConfigManager ::new ,
99+ BossbarManager ::new ,
100+ () -> new AnimationsManager (),
101+ () -> new HalloweenManager (),
102+ QuestProgressSaveManager ::new ,
103+ MotdUtils ::new ,
104+ MascotsManager ::new ,
105+ PlayerSettingsManager ::new ,
106+ MailboxManager ::new ,
107+ QuestsManager ::new ,
108+ CityManager ::new ,
109+ DynamicCooldownManager ::new ,
110+ ContestManager ::new ,
111+ WeeklyEventsManager ::new ,
112+ CalendarManager ::new ,
113+ DreamManager ::new ,
114+ MultiBlockManager ::new ,
115+ MilestonesManager ::new ,
116+ () -> new LeaderboardManager (),
117+ () -> new MainMenu (),
118+ () -> new HologramLoader (),
119+ HomeIconCacheManager ::new
118120 ));
119121
122+ public final List <Feature > loadedFeature = new ArrayList <>();
123+
120124 // ** Registry of OMC Plugin Hooks
121125 public final List <Hooks > REGISTRY_HOOKS = new ArrayList <>(List .of (
122126 new ProtocolLibHook (),
@@ -175,9 +179,15 @@ public void onEnable() {
175179 OMCRegistry .initAll ();
176180
177181 /* FEATURES */
178- REGISTRY_FEATURE .stream ()
179- .filter (f -> !(f instanceof LoadAfterItemsAdder ))
180- .forEachOrdered (Feature ::startInit );
182+ REGISTRY_FEATURE
183+ .forEach (f -> {
184+ Feature feature = f .create (FeatureLoadingType .RUNTIME );
185+
186+ if (feature != null ) {
187+ feature .startInit ();
188+ loadedFeature .add (feature );
189+ }
190+ });
181191
182192 // * Si ItemsAdder est pas présent, alors on charge les dernieres features maintenant
183193 if (!ItemsAdderHook .isEnable ()) {
@@ -196,9 +206,15 @@ public void loadAfterItemsAdder() {
196206 OMCRegistry .postInitAll ();
197207
198208 /* FEATURES */
199- REGISTRY_FEATURE .stream ()
200- .filter (f -> f instanceof LoadAfterItemsAdder )
201- .forEachOrdered (Feature ::startInit );
209+ REGISTRY_FEATURE
210+ .forEach (f -> {
211+ Feature feature = f .create (FeatureLoadingType .AFTER_IA );
212+
213+ if (feature != null ) {
214+ feature .startInit ();
215+ loadedFeature .add (feature );
216+ }
217+ });
202218
203219 if (WorldGuardHook .isEnable ()) {
204220 ParticleUtils .spawnParticlesInRegion ("spawn" , Bukkit .getWorld ("world" ), Particle .CHERRY_LEAVES , 50 , 70 , 130 );
@@ -211,7 +227,7 @@ public void loadAfterItemsAdder() {
211227 @ Override
212228 public void onDisable () {
213229 // ** SAVE **
214- for (Feature feature : REGISTRY_FEATURE ) {
230+ for (Feature feature : loadedFeature ) {
215231 feature .startSave ();
216232 }
217233
0 commit comments