| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package me.lethunderhawk.custom.item;
- import me.lethunderhawk.custom.block.registry.BlockRegistry;
- import me.lethunderhawk.custom.item.abstraction.definition.DefaultItemDefinitionValidator;
- import me.lethunderhawk.custom.item.abstraction.definition.ItemDefinition;
- import me.lethunderhawk.custom.item.abstraction.definition.ItemDefinitionLoader;
- import me.lethunderhawk.custom.item.abstraction.definition.ItemDefinitionValidator;
- import me.lethunderhawk.custom.item.abstraction.registry.AbilityRegistry;
- import me.lethunderhawk.custom.item.abstraction.registry.CustomItemRegistry;
- import me.lethunderhawk.custom.item.abstraction.runtime.AbilityDispatchService;
- import me.lethunderhawk.custom.item.command.CustomItemCommand;
- import me.lethunderhawk.custom.item.concrete.ability.*;
- import me.lethunderhawk.custom.item.listener.CustomItemListener;
- import me.lethunderhawk.fluxapi.FluxService;
- import me.lethunderhawk.fluxapi.util.interfaces.FluxAPIModule;
- import me.lethunderhawk.main.BazaarFlux;
- import me.lethunderhawk.profile.data.sacks.SackType;
- import org.bukkit.command.CommandSender;
- import org.bukkit.event.HandlerList;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.io.File;
- import java.util.Map;
- public class CustomItemModule extends FluxAPIModule {
- private CustomItemListener listener;
- public CustomItemModule(JavaPlugin plugin) {
- super(plugin);
- }
- private static void registerAbilities(AbilityRegistry abilityRegistry) {
- abilityRegistry.register("test_handler", new TestAbilityHandler());
- abilityRegistry.register("rolling_dice", new RollingDiceAbility());
- abilityRegistry.register("claim_tool", new ClaimToolAbility());
- abilityRegistry.register("hyperion", new HyperionAbility());
- abilityRegistry.register("regenerating_block", new RegeneratingBlockAbility());
- abilityRegistry.register("mining_sack", new SackAbility(SackType.MINING));
- abilityRegistry.register("foraging_sack", new SackAbility(SackType.FORAGING));
- }
- @Override
- public String getPrefix() {
- return "[CustomItem]";
- }
- @Override
- public void onEnable() {
- AbilityRegistry abilityRegistry = new AbilityRegistry();
- registerAbilities(abilityRegistry);
- ItemDefinitionValidator validator = new DefaultItemDefinitionValidator();
- ItemDefinitionLoader loader = new ItemDefinitionLoader(validator);
- BazaarFlux bazaarFlux = FluxService.get(BazaarFlux.class);
- File itemsDir = new File(bazaarFlux.getDataFolder(), "custom/items");
- // --- Load definitions from disk ---
- Map<String, ItemDefinition> definitions = loader.loadAll(itemsDir);
- CustomItemRegistry itemRegistry = new CustomItemRegistry()
- .fromRegistry(definitions);
- // --- Reload listener ---
- listener = new CustomItemListener(
- new AbilityDispatchService(itemRegistry, abilityRegistry)
- );
- bazaarFlux.getServer().getPluginManager().registerEvents(listener, bazaarFlux);
- // --- FluxService ---
- FluxService.register(CustomItemRegistry.class, itemRegistry);
- FluxService.register(ItemDefinitionLoader.class, loader);
- FluxService.register(ItemDefinitionValidator.class, validator);
- FluxService.register(AbilityRegistry.class, abilityRegistry);
- BlockRegistry blockRegistry = new BlockRegistry();
- bazaarFlux.getServer().getPluginManager().registerEvents(blockRegistry, bazaarFlux);
- FluxService.register(BlockRegistry.class, blockRegistry);
- registerCommands();
- }
- private void registerCommands() {
- CustomItemCommand customItemCommand = new CustomItemCommand(this);
- FluxService.get(BazaarFlux.class).getCommand("customItems").setExecutor(customItemCommand);
- FluxService.get(BazaarFlux.class).getCommand("customItems").setTabCompleter(customItemCommand);
- }
- @Override
- public void onDisable() {
- if (listener != null) {
- HandlerList.unregisterAll(listener);
- }
- }
- public void reload(CommandSender sender, String[] strings) {
- if (sender.hasPermission("customItem.reload")) {
- onDisable();
- onEnable();
- }
- }
- }
|