Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion src/main/java/fr/openmc/core/OMCRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import fr.openmc.core.bootstrap.registries.LifecycleRegistry;
import fr.openmc.core.bootstrap.registries.RegistryContext;
import fr.openmc.core.bootstrap.registries.RegistryLoadingType;
import fr.openmc.core.features.events.contents.dailyevents.DailyEventsRegistry;
import fr.openmc.core.features.events.contents.weeklyevents.WeeklyEventsRegistry;
import fr.openmc.core.registry.ambient.CustomAmbientRegistry;
import fr.openmc.core.registry.enchantments.CustomEnchantmentRegistry;
import fr.openmc.core.registry.items.CustomItemRegistry;
Expand All @@ -20,14 +22,18 @@

@SuppressWarnings("UnstableApiUsage")
public final class OMCRegistry {

// * Registre globaux
public static CustomItemRegistry CUSTOM_ITEMS;
public static CustomMobRegistry CUSTOM_MOBS;
public static CustomEnchantmentRegistry CUSTOM_ENCHANTS;
public static CustomLootTableRegistry CUSTOM_LOOT_TABLES;
public static CustomAmbientRegistry CUSTOM_AMBIENTS;
public static CustomLootboxRegistry CUSTOM_LOOTBOXES;

// * Registre des features
public static WeeklyEventsRegistry WEEKLY_EVENTS;
public static DailyEventsRegistry DAILY_EVENTS;

private static final List<LifecycleRegistry> LOADED = new ArrayList<>();

private static final List<RegistryContext> ALL = List.of(
Expand All @@ -47,6 +53,8 @@ public final class OMCRegistry {
() -> CUSTOM_LOOTBOXES = new CustomLootboxRegistry(),
RegistryLoadingType.AFTER_IA),
new RegistryContext(() -> CUSTOM_MOBS = new CustomMobRegistry(),
RegistryLoadingType.AFTER_IA),
new RegistryContext(() -> WEEKLY_EVENTS = new WeeklyEventsRegistry(),
RegistryLoadingType.AFTER_IA)
);

Expand Down
15 changes: 13 additions & 2 deletions src/main/java/fr/openmc/core/features/events/EventsManager.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.openmc.core.features.events;

import fr.openmc.core.OMCRegistry;
import fr.openmc.core.bootstrap.features.Feature;
import fr.openmc.core.bootstrap.features.types.HasCommands;
import fr.openmc.core.bootstrap.features.types.LoadAfterItemsAdder;
Expand Down Expand Up @@ -60,9 +61,19 @@ public int getWeekOffset() {
return weekOffset;
}

@Override
public String getId() {
return "omc_weekly_event:unknown_event_" + weekOffset;
}

@Override
public List<WeeklyEventPhase> getPhases() {
return List.of(new WeeklyEventPhase() {
@Override
public String getId() {
return "unknown_phase";
}

@Override
public Component getName() {
return TranslationManager.translation("feature.events.calendar.unknown_phase");
Expand Down Expand Up @@ -131,8 +142,8 @@ private static LocalDateTime getEventStartDate(Event event) {
}

public static List<Event> getAllEventsRegistred() {
List<Event> events = new ArrayList<>(DailyEventsManager.EVENTS);
events.addAll(WeeklyEventsManager.EVENTS);
List<Event> events = new ArrayList<>(OMCRegistry.DAILY_EVENTS.values());
events.addAll(OMCRegistry.WEEKLY_EVENTS.values());
return events;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,12 @@
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
import fr.openmc.core.OMCPlugin;
import fr.openmc.core.OMCRegistry;
import fr.openmc.core.bootstrap.features.Feature;
import fr.openmc.core.bootstrap.features.annotations.Credit;
import fr.openmc.core.bootstrap.features.types.HasCommands;
import fr.openmc.core.bootstrap.features.types.HasDatabase;
import fr.openmc.core.bootstrap.features.types.HasListeners;
import fr.openmc.core.bootstrap.features.types.LoadAfterItemsAdder;
import fr.openmc.core.bootstrap.features.types.*;
import fr.openmc.core.bootstrap.integration.OMCLogger;
import fr.openmc.core.features.events.contents.dailyevents.commands.DailyEventCommand;
import fr.openmc.core.features.events.contents.dailyevents.contents.bloodynight.BloodyNightEvent;
import fr.openmc.core.features.events.contents.dailyevents.contents.goldenharvest.GoldenHarvestEvent;
import fr.openmc.core.features.events.contents.dailyevents.contents.miraculousfishing.MiraculousFishingEvent;
import fr.openmc.core.features.events.contents.dailyevents.listeners.DailyEventAmbientListeners;
import fr.openmc.core.features.events.contents.dailyevents.models.IncomingEventsDB;
import fr.openmc.core.features.events.contents.dailyevents.models.ScheduleDailyEvent;
Expand All @@ -36,17 +30,6 @@

@Credit(developers = {"iambibi_"})
public class DailyEventsManager extends Feature implements LoadAfterItemsAdder, HasDatabase, HasListeners, HasCommands {
// * Constantes
public static final List<DailyEvent> EVENTS = List.of(
new MiraculousFishingEvent(),
new GoldenHarvestEvent(),
new BloodyNightEvent()
);

public static final DailyEvent MIRACULOUS_FISHING = getDailyEvent("miraculous_fishing");
public static final DailyEvent GOLDEN_HARVEST = getDailyEvent("golden_harvest");
public static final DailyEvent BLOODY_NIGHT = getDailyEvent("bloody_night");

private static final List<Integer> SLOT_HOURS_EVENTS = new ArrayList<>(List.of(
9, 13, 16, 21
));
Expand All @@ -64,7 +47,7 @@ public class DailyEventsManager extends Feature implements LoadAfterItemsAdder,
@Override
public void init() {
// * Register les sous features
for (DailyEvent event : EVENTS) {
for (DailyEvent event : OMCRegistry.DAILY_EVENTS.values()) {
if (!(event instanceof HasFeature hasFeature)) continue;

OMCPlugin.registerFeature(hasFeature.getFeature());
Expand Down Expand Up @@ -95,7 +78,7 @@ public Set<Listener> getListeners() {
new DailyEventAmbientListeners()
));

for (DailyEvent event : EVENTS) {
for (DailyEvent event : OMCRegistry.DAILY_EVENTS.values()) {
if (!(event instanceof HasListeners hasListeners)) continue;
listeners.addAll(hasListeners.getListeners());
}
Expand Down Expand Up @@ -157,7 +140,7 @@ public static List<ScheduleDailyEvent> loadIncomingEvents() {
List<DailyEvent> copyEvents = new ArrayList<>(incomingEvent);
for (int hourSlot : SLOT_HOURS_EVENTS) {
if (copyEvents.isEmpty()) {
copyEvents = RandomUtils.generateRandomOrder(EVENTS);
copyEvents = RandomUtils.generateRandomOrder(OMCRegistry.DAILY_EVENTS.values().stream().toList());
}

LocalDateTime scheduledDailyEvent;
Expand Down Expand Up @@ -233,18 +216,6 @@ public static DailyEvent getActiveDailyEvent() {
return outgoingEvent.getDailyEvent();
}

/**
* Permet d'obtenir un DailyEvent via l'id dans le registre des Evenements Journalier
* @param id l'id de l'event
* @return l'event
*/
public static DailyEvent getDailyEvent(String id) {
return EVENTS.stream()
.filter(event -> event.getEventId().equals(id))
.findFirst()
.orElse(null);
}

/**
* Permet d'obtenir le temps restant d'un evenement journalier en secondes
* @param event l'event
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package fr.openmc.core.features.events.contents.dailyevents;

import fr.openmc.core.bootstrap.registries.KeyedRegistry;
import fr.openmc.core.bootstrap.registries.Registry;
import fr.openmc.core.features.events.contents.dailyevents.contents.bloodynight.BloodyNightEvent;
import fr.openmc.core.features.events.contents.dailyevents.contents.goldenharvest.GoldenHarvestEvent;
import fr.openmc.core.features.events.contents.dailyevents.contents.miraculousfishing.MiraculousFishingEvent;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.DailyEvent;

public class DailyEventsRegistry extends Registry<String, DailyEvent>
implements KeyedRegistry<String, DailyEvent> {

public final DailyEvent MIRACULOUS_FISHING = register(new MiraculousFishingEvent());
public final DailyEvent GOLDEN_HARVEST = register(new GoldenHarvestEvent());
public final DailyEvent BLOODY_NIGHT = register(new BloodyNightEvent());

@Override
public String key(DailyEvent registryObject) {
return registryObject.getEventId();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.openmc.core.features.events.contents.dailyevents.commands;

import fr.openmc.core.OMCRegistry;
import fr.openmc.core.features.events.contents.dailyevents.DailyEventsManager;
import fr.openmc.core.features.events.contents.dailyevents.commands.autocomplete.DailyEventAutoComplete;
import fr.openmc.core.features.events.contents.dailyevents.models.ScheduleDailyEvent;
Expand Down Expand Up @@ -27,7 +28,7 @@ public static void forceStartCommand(Player player,

// * on lance le evenement rentré en param
DailyEventsManager.outgoingEvent = new ScheduleDailyEvent(
DailyEventsManager.getDailyEvent(dailyEvent), DateUtils.getLocalDateTime());
OMCRegistry.DAILY_EVENTS.getOrThrow(dailyEvent), DateUtils.getLocalDateTime());
DailyEventsManager.outgoingEvent.getDailyEvent().start();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package fr.openmc.core.features.events.contents.dailyevents.commands.autocomplete;

import fr.openmc.core.features.events.contents.dailyevents.DailyEventsManager;
import fr.openmc.core.OMCRegistry;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.DailyEvent;
import org.jetbrains.annotations.NotNull;
import revxrsal.commands.autocomplete.SuggestionProvider;
Expand All @@ -13,7 +13,7 @@ public class DailyEventAutoComplete implements SuggestionProvider<BukkitCommandA

@Override
public @NotNull List<String> getSuggestions(@NotNull ExecutionContext<BukkitCommandActor> context) {
return DailyEventsManager.EVENTS.stream()
return OMCRegistry.DAILY_EVENTS.values().stream()
.map(DailyEvent::getEventId)
.toList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import fr.openmc.core.OMCRegistry;
import fr.openmc.core.features.economy.EconomyManager;
import fr.openmc.core.features.events.contents.dailyevents.DailyEventsManager;
import fr.openmc.core.features.leaderboards.LeaderboardManager;
import fr.openmc.core.features.mailboxes.MailboxManager;
import fr.openmc.core.registry.loottable.CustomLootTable;
Expand Down Expand Up @@ -49,7 +48,7 @@ public static void giveContributions(CustomMob<?> mob) {
));


World world = DailyEventsManager.BLOODY_NIGHT.getWorld();
World world = OMCRegistry.DAILY_EVENTS.BLOODY_NIGHT.getWorld();
if (world == null) return;

if (orderedMap.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public BloodyNightMenu(Player owner) {

@Override
public @NotNull Component getName() {
return DailyEventsManager.BLOODY_NIGHT.getName();
return OMCRegistry.DAILY_EVENTS.BLOODY_NIGHT.getName();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public GoldenHarvestMenu(Player owner) {

@Override
public @NotNull Component getName() {
return DailyEventsManager.GOLDEN_HARVEST.getName();
return OMCRegistry.DAILY_EVENTS.GOLDEN_HARVEST.getName();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public MiraculousFishingMenu(Player owner) {

@Override
public @NotNull Component getName() {
return DailyEventsManager.MIRACULOUS_FISHING.getName();
return OMCRegistry.DAILY_EVENTS.MIRACULOUS_FISHING.getName();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import fr.openmc.core.features.events.contents.dailyevents.DailyEventsManager;
import fr.openmc.core.OMCRegistry;
import fr.openmc.core.features.events.contents.dailyevents.models.dailyevent.DailyEvent;
import lombok.Getter;
import lombok.Setter;
Expand Down Expand Up @@ -37,7 +37,7 @@ public IncomingEventsDB(List<ScheduleDailyEvent> incomingEventsList) {
*/
public List<DailyEvent> getDailyEventsIncomings() {
return Arrays.stream(dailyEventsIdIncomings)
.map(id -> DailyEventsManager.EVENTS.stream()
.map(id -> OMCRegistry.DAILY_EVENTS.values().stream()
.filter(event -> event.getEventId().equals(id))
.findFirst()
.orElseThrow(() -> new IllegalStateException("Aucun daily event trouvé pour l'id : " + id)))
Expand Down
Loading
Loading