Skip to content

Commit 88ebeda

Browse files
Rewrite des Registres (OMCRegistry) (#1277)
* chore: OMCRegistry (unstable ahah) * bootstrap fix + another pb to CustomEnchantmentRegistry * fix: CustomEnchantmentRegistry * fix: CustomEnchantmentRegistry with args * feat: CustomMobRegistry complete * fix getMobSnapshopt (weird) * Update src/main/java/fr/openmc/core/OMCRegistry.java Co-authored-by: PuppyTransGirl <74014559+PuppyTransGirl@users.noreply.github.com> * build: fix --------- Co-authored-by: PuppyTransGirl <74014559+PuppyTransGirl@users.noreply.github.com>
1 parent bc4c945 commit 88ebeda

133 files changed

Lines changed: 1020 additions & 802 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/fr/openmc/api/menulib/template/ConfirmMenu.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import fr.openmc.api.menulib.Menu;
55
import fr.openmc.api.menulib.utils.InventorySize;
66
import fr.openmc.api.menulib.utils.ItemBuilder;
7-
import fr.openmc.core.registry.items.CustomItemRegistry;
7+
import fr.openmc.core.OMCRegistry;
88
import fr.openmc.core.utils.text.messages.MessageType;
99
import fr.openmc.core.utils.text.messages.MessagesManager;
1010
import fr.openmc.core.utils.text.messages.Prefix;
@@ -110,8 +110,8 @@ public void onClose(InventoryCloseEvent event) {
110110

111111
loreDeny.add(Component.text("§e§lCLIQUEZ ICI POUR REFUSER"));
112112

113-
ItemStack refuseBtn = CustomItemRegistry.getByName("omc_menus:refuse_btn").getBest();
114-
ItemStack acceptBtn = CustomItemRegistry.getByName("omc_menus:accept_btn").getBest();
113+
ItemStack refuseBtn = OMCRegistry.CUSTOM_ITEMS.get("omc_menus:refuse_btn").getBest();
114+
ItemStack acceptBtn = OMCRegistry.CUSTOM_ITEMS.get("omc_menus:accept_btn").getBest();
115115

116116
inventory.put(posDenyBtn, new ItemBuilder(this, refuseBtn, itemMeta -> {
117117
itemMeta.displayName(Component.text("§cRefuser"));

src/main/java/fr/openmc/core/OMCBootstrap.java

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

33
import fr.openmc.core.bootstrap.integration.OMCLogger;
44
import fr.openmc.core.hooks.itemsadder.ItemsAdderHook;
5-
import fr.openmc.core.registry.enchantments.CustomEnchantmentRegistry;
65
import fr.openmc.core.utils.text.messages.TranslationManager;
76
import io.papermc.paper.plugin.bootstrap.BootstrapContext;
87
import io.papermc.paper.plugin.bootstrap.PluginBootstrap;
98
import io.papermc.paper.plugin.bootstrap.PluginProviderContext;
109
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
11-
import io.papermc.paper.registry.event.RegistryEvents;
1210
import org.bukkit.plugin.java.JavaPlugin;
1311
import org.jetbrains.annotations.NotNull;
1412

@@ -24,7 +22,6 @@
2422
*/
2523
@SuppressWarnings("UnstableApiUsage")
2624
public class OMCBootstrap implements PluginBootstrap {
27-
2825
/**
2926
* Configure les handlers de cycle de vie necessaires avant l'activation du plugin.
3027
*
@@ -51,11 +48,12 @@ public void bootstrap(@NotNull BootstrapContext context) {
5148
// ** LOAD ITEMS ADDER NAMESPACES **
5249
ItemsAdderHook.copyContentsToItemsAdder(context, "contents");
5350

54-
// ** ENCHANTMENT IMPL **
55-
CustomEnchantmentRegistry.init();
56-
context.getLifecycleManager().registerEventHandler(RegistryEvents.ENCHANTMENT.compose()
57-
.newHandler(CustomEnchantmentRegistry::loadEnchantmentInBootstrap)
58-
);
51+
// ** REGISTRY MANAGER **
52+
OMCRegistry.bootstrapAll(context);
53+
54+
// context.getLifecycleManager().registerEventHandler(RegistryEvents.ENCHANTMENT.compose()
55+
// .newHandler(CustomEnchantmentRegistry::loadEnchantmentInBootstrap)
56+
// );
5957

6058
// ** LOAD TRANSLATION **
6159
// this creates resource pack who is needed for item adder

src/main/java/fr/openmc/core/OMCPlugin.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,6 @@
4949
import fr.openmc.core.features.updates.UpdateManager;
5050
import fr.openmc.core.hooks.*;
5151
import fr.openmc.core.hooks.itemsadder.ItemsAdderHook;
52-
import fr.openmc.core.registry.enchantments.CustomEnchantmentRegistry;
53-
import fr.openmc.core.registry.items.CustomItemRegistry;
54-
import fr.openmc.core.registry.loottable.CustomLootTableRegistry;
5552
import fr.openmc.core.utils.bukkit.ParticleUtils;
5653
import fr.openmc.core.utils.text.MotdUtils;
5754
import io.papermc.paper.datapack.Datapack;
@@ -175,6 +172,9 @@ public void onEnable() {
175172
CommandsManager.init();
176173
ListenersManager.init();
177174

175+
/* REGISTRIES */
176+
OMCRegistry.initAll();
177+
178178
/* FEATURES */
179179
REGISTRY_FEATURE.stream()
180180
.filter(f -> !(f instanceof LoadAfterItemsAdder))
@@ -190,15 +190,13 @@ public void onEnable() {
190190
* Charge les registres et features qui doivent être lancé apres ItemsAdder
191191
*/
192192
public void loadAfterItemsAdder() {
193-
// ** LOAD ITEMS ADDER CONTENTS **
193+
/* LOAD ITEMS ADDER CONTENTS */
194194
ItemsAdderHook.loadContents();
195195

196-
// ** REGISTRIES **
197-
CustomItemRegistry.init();
198-
CustomEnchantmentRegistry.postInit();
199-
CustomLootTableRegistry.init();
196+
/* REGISTRIES */
197+
OMCRegistry.postInitAll();
200198

201-
// ** FEATURES **
199+
/* FEATURES */
202200
REGISTRY_FEATURE.stream()
203201
.filter(f -> f instanceof LoadAfterItemsAdder)
204202
.forEachOrdered(Feature::startInit);
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package fr.openmc.core;
2+
3+
import fr.openmc.core.bootstrap.integration.OMCLogger;
4+
import fr.openmc.core.bootstrap.registries.LifecycleRegistry;
5+
import fr.openmc.core.registry.enchantments.CustomEnchantmentRegistry;
6+
import fr.openmc.core.registry.items.CustomItemRegistry;
7+
import fr.openmc.core.registry.loottable.CustomLootTableRegistry;
8+
import fr.openmc.core.registry.mobs.CustomMobRegistry;
9+
import io.papermc.paper.plugin.bootstrap.BootstrapContext;
10+
11+
import java.util.List;
12+
13+
@SuppressWarnings("UnstableApiUsage")
14+
public final class OMCRegistry {
15+
16+
public static final CustomItemRegistry CUSTOM_ITEMS = new CustomItemRegistry();
17+
public static final CustomMobRegistry CUSTOM_MOBS = new CustomMobRegistry();
18+
public static final CustomEnchantmentRegistry CUSTOM_ENCHANTS = new CustomEnchantmentRegistry();
19+
public static final CustomLootTableRegistry CUSTOM_LOOT_TABLES = new CustomLootTableRegistry();
20+
21+
private static final List<LifecycleRegistry> ALL = List.of(
22+
CUSTOM_ITEMS,
23+
CUSTOM_MOBS,
24+
CUSTOM_ENCHANTS,
25+
CUSTOM_LOOT_TABLES
26+
);
27+
28+
private OMCRegistry() {}
29+
30+
public static void bootstrapAll(BootstrapContext context) {
31+
for (LifecycleRegistry r : OMCRegistry.ALL) {
32+
if (isOverridden(r, "bootstrap", BootstrapContext.class)) {
33+
r.bootstrap(context);
34+
OMCLogger.successFormatted("Registre {} chargé pendant le bootstrap", r.getClass().getSimpleName());
35+
}
36+
}
37+
}
38+
39+
public static void initAll() {
40+
for (LifecycleRegistry r : OMCRegistry.ALL) {
41+
if (isOverridden(r, "init")) {
42+
r.init();
43+
OMCLogger.successFormatted("Registre {} chargé pendant le runtime", r.getClass().getSimpleName());
44+
}
45+
}
46+
}
47+
48+
public static void postInitAll() {
49+
for (LifecycleRegistry r : OMCRegistry.ALL) {
50+
if (isOverridden(r, "postInit")) {
51+
r.postInit();
52+
OMCLogger.successFormatted("Registre {} chargé après ItemsAdder", r.getClass().getSimpleName());
53+
}
54+
}
55+
}
56+
57+
private static boolean isOverridden(LifecycleRegistry r, String methodName, Class<?>... args) {
58+
try {
59+
return !r.getClass()
60+
.getMethod(methodName, args)
61+
.getDeclaringClass()
62+
.equals(LifecycleRegistry.class);
63+
} catch (NoSuchMethodException e) {
64+
return false;
65+
}
66+
}
67+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package fr.openmc.core.bootstrap.registries;
2+
3+
import io.papermc.paper.plugin.bootstrap.BootstrapContext;
4+
5+
@SuppressWarnings("UnstableApiUsage")
6+
public interface LifecycleRegistry {
7+
default void bootstrap(BootstrapContext context) {}
8+
9+
default void init() {}
10+
11+
default void postInit() {}
12+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package fr.openmc.core.bootstrap.registries;
2+
3+
import java.util.Collection;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
public class Registry<K, V> implements LifecycleRegistry {
8+
9+
protected final Map<K, V> entries = new HashMap<>();
10+
11+
public void register(K key, V value) {
12+
entries.put(key, value);
13+
}
14+
15+
public V get(K key) {
16+
return entries.get(key);
17+
}
18+
19+
public Collection<K> keys() {
20+
return entries.keySet();
21+
}
22+
23+
public Collection<V> values() {
24+
return entries.values();
25+
}
26+
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fr.openmc.core.commands.autocomplete;
22

3-
import fr.openmc.core.registry.items.CustomItemRegistry;
3+
import fr.openmc.core.OMCRegistry;
4+
import fr.openmc.core.registry.items.CustomItem;
45
import org.jetbrains.annotations.NotNull;
56
import revxrsal.commands.autocomplete.SuggestionProvider;
67
import revxrsal.commands.bukkit.actor.BukkitCommandActor;
@@ -12,10 +13,11 @@ public class CustomItemAutoComplete implements SuggestionProvider<BukkitCommandA
1213

1314
@Override
1415
public @NotNull List<String> getSuggestions(@NotNull ExecutionContext<BukkitCommandActor> context) {
15-
return CustomItemRegistry.getNames()
16+
return OMCRegistry.CUSTOM_ITEMS.values()
1617
.stream()
17-
.filter(name -> !name.startsWith("omc_dream:"))
18-
.map(name -> name.replace("omc_dream:", ""))
18+
.map(CustomItem::getId)
19+
.filter(id -> !id.startsWith("omc_dream:"))
20+
.map(id -> id.split(":")[1])
1921
.toList();
2022
}
2123
}

src/main/java/fr/openmc/core/commands/debug/CustomItemCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package fr.openmc.core.commands.debug;
22

3+
import fr.openmc.core.OMCRegistry;
34
import fr.openmc.core.commands.autocomplete.CustomItemAutoComplete;
45
import fr.openmc.core.registry.items.CustomItem;
5-
import fr.openmc.core.registry.items.CustomItemRegistry;
66
import fr.openmc.core.utils.text.messages.MessageType;
77
import fr.openmc.core.utils.text.messages.MessagesManager;
88
import fr.openmc.core.utils.text.messages.Prefix;
@@ -25,7 +25,7 @@ public void get(
2525
@SuggestWith(CustomItemAutoComplete.class) String name,
2626
@Optional Integer amount
2727
) {
28-
CustomItem item = CustomItemRegistry.getByName(name);
28+
CustomItem item = OMCRegistry.CUSTOM_ITEMS.get(name);
2929

3030
if (item == null) {
3131
MessagesManager.sendMessage(player, Component.text("Cet item n'existe pas"), Prefix.STAFF, MessageType.ERROR, false);

src/main/java/fr/openmc/core/disabled/corporation/menu/company/CompanyBankTransactionsMenu.java.bak

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,15 @@ public class CompanyBankTransactionsMenu extends PaginatedMenu {
8383
@Override
8484
public Map<Integer, ItemBuilder> getButtons() {
8585
Map<Integer, ItemBuilder> buttons = new HashMap<>();
86-
buttons.put(49, new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_cancel").getBest(), itemMeta -> itemMeta.setDisplayName("§7Fermer"))
86+
buttons.put(49, new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_cancel").getBest(), itemMeta -> itemMeta.setDisplayName("§7Fermer"))
8787
.setCloseButton());
88-
ItemBuilder nextPageButton = new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_next_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§aPage suivante"));
88+
ItemBuilder nextPageButton = new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_next_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§aPage suivante"));
8989
if ((getPage() == 0 && isLastPage()) || company.getShops().isEmpty()) {
90-
buttons.put(48, new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§cRetour"))
90+
buttons.put(48, new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§cRetour"))
9191
.setOnClick(inventoryClickEvent -> new CompanyMenu(getOwner(), company, false).open()));
9292
buttons.put(50, nextPageButton);
9393
} else {
94-
buttons.put(48, new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§cPage précédente"))
94+
buttons.put(48, new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§cPage précédente"))
9595
.setPreviousPageButton());
9696
buttons.put(50, nextPageButton.setNextPageButton());
9797
}

src/main/java/fr/openmc/core/disabled/corporation/menu/company/CompanyMenu.java.bak

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ public class CompanyMenu extends PaginatedMenu {
7373
public Map<Integer, ItemBuilder> getButtons() {
7474
Map<Integer, ItemBuilder> buttons = new HashMap<>();
7575

76-
ItemBuilder closeButton = new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_cancel").getBest(), itemMeta -> itemMeta.setDisplayName("§7Fermer")).setCloseButton();
77-
ItemBuilder backButton = new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§7Retour"), true);
76+
ItemBuilder closeButton = new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_cancel").getBest(), itemMeta -> itemMeta.setDisplayName("§7Fermer")).setCloseButton();
77+
ItemBuilder backButton = new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§7Retour"), true);
7878

7979
buttons.put(49, isBackButton ? backButton : closeButton);
8080

81-
buttons.put(48, new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§cPage précédente"))
81+
buttons.put(48, new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_back_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§cPage précédente"))
8282
.setPreviousPageButton());
8383

84-
buttons.put(50, new ItemBuilder(this, CustomItemRegistry.getByName("_iainternal:icon_next_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§aPage suivante"))
84+
buttons.put(50, new ItemBuilder(this, OMCRegistry.CUSTOM_ITEMS.get("_iainternal:icon_next_orange").getBest(), itemMeta -> itemMeta.setDisplayName("§aPage suivante"))
8585
.setNextPageButton());
8686

8787
ItemBuilder ownerItem;

0 commit comments

Comments
 (0)