Skip to content
Open
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
15 changes: 12 additions & 3 deletions src/main/java/fr/openmc/api/cooldown/DynamicCooldownManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import com.j256.ormlite.table.DatabaseTable;
import com.j256.ormlite.table.TableUtils;
import fr.openmc.core.OMCPlugin;
import fr.openmc.core.utils.init.DatabaseFeature;
import fr.openmc.core.utils.init.Feature;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
Expand All @@ -20,7 +22,7 @@
/**
* Main class for managing cooldowns
*/
public class DynamicCooldownManager {
public class DynamicCooldownManager extends Feature implements DatabaseFeature {
/**
* Represents a single cooldown with duration and last use time
*/
Expand Down Expand Up @@ -82,16 +84,23 @@ public long getRemaining() {
}
}

public static void init() {
@Override
public void init() {
loadCooldowns();
}

@Override
public void save() {
DynamicCooldownManager.saveCooldowns();
}

// Map structure: UUID -> (Group -> Cooldown)
private static final Map<UUID, Map<String, Cooldown>> cooldowns = new HashMap<>();

private static Dao<Cooldown, String> cooldownDao;

public static void initDB(ConnectionSource connectionSource) throws SQLException {
@Override
public void initDB(ConnectionSource connectionSource) throws SQLException {
TableUtils.createTableIfNotExists(connectionSource, Cooldown.class);
cooldownDao = DaoManager.createDao(connectionSource, Cooldown.class);
}
Expand Down
189 changes: 80 additions & 109 deletions src/main/java/fr/openmc/core/OMCPlugin.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package fr.openmc.core;


import com.j256.ormlite.logger.LoggerFactory;
import fr.openmc.api.cooldown.DynamicCooldownManager;
import fr.openmc.api.hooks.*;
Expand All @@ -8,13 +9,10 @@
import fr.openmc.core.commands.admin.freeze.FreezeManager;
import fr.openmc.core.commands.utils.SpawnManager;
import fr.openmc.core.features.adminshop.AdminShopManager;
import fr.openmc.core.features.analytics.AnalyticsManager;
import fr.openmc.core.features.animations.AnimationsManager;
import fr.openmc.core.features.city.CityManager;
import fr.openmc.core.features.city.sub.mascots.MascotsManager;
import fr.openmc.core.features.city.sub.mayor.managers.MayorManager;
import fr.openmc.core.features.city.sub.notation.NotationManager;
import fr.openmc.core.features.city.sub.statistics.CityStatisticsManager;
import fr.openmc.core.features.city.sub.war.WarManager;
import fr.openmc.core.features.contest.managers.ContestManager;
import fr.openmc.core.features.cube.multiblocks.MultiBlockManager;
import fr.openmc.core.features.displays.TabList;
Expand All @@ -25,14 +23,15 @@
import fr.openmc.core.features.dream.generation.DreamDimensionManager;
import fr.openmc.core.features.economy.BankManager;
import fr.openmc.core.features.economy.EconomyManager;
import fr.openmc.core.features.economy.TransactionsManager;
import fr.openmc.core.features.events.halloween.managers.HalloweenManager;
import fr.openmc.core.features.friend.FriendSQLManager;
import fr.openmc.core.features.homes.HomesManager;
import fr.openmc.core.features.homes.icons.HomeIconCacheManager;
import fr.openmc.core.features.leaderboards.LeaderboardManager;
import fr.openmc.core.features.mailboxes.MailboxManager;
import fr.openmc.core.features.mainmenu.MainMenu;
import fr.openmc.core.features.milestones.MilestonesManager;
import fr.openmc.core.features.quests.QuestProgressSaveManager;
import fr.openmc.core.features.quests.QuestsManager;
import fr.openmc.core.features.settings.PlayerSettingsManager;
import fr.openmc.core.features.tickets.TicketManager;
Expand All @@ -46,6 +45,8 @@
import fr.openmc.core.utils.ShutUpOrmLite;
import fr.openmc.core.utils.database.DatabaseManager;
import fr.openmc.core.utils.errors.ErrorReporter;
import fr.openmc.core.utils.init.Feature;
import fr.openmc.core.utils.init.LoadAfterItemsAdder;
import fr.openmc.core.utils.translation.TranslationManager;
import io.papermc.paper.datapack.Datapack;
import lombok.Getter;
Expand All @@ -59,6 +60,8 @@
import org.slf4j.Logger;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class OMCPlugin extends JavaPlugin {
@Getter
Expand All @@ -68,15 +71,42 @@ public class OMCPlugin extends JavaPlugin {

public static final String VANISH_META_KEY = "omcstaff.vanished";

public static void registerEvents(Listener... listeners) {
for (Listener listener : listeners) {
instance.getServer().getPluginManager().registerEvents(listener, instance);
}
}

public static boolean isUnitTestVersion() {
return OMCPlugin.instance.getServer().getVersion().contains("MockBukkit");
}
// ** Registry of OMC Features
public final List<Feature> REGISTRY_FEATURE = new ArrayList<>(List.of(
new TicketManager(new File(this.getDataFolder(), "data/stats")),
new SpawnManager(),
new UpdateManager(),
new EconomyManager(),
new BankManager(),
new ScoreboardManager(),
new HomesManager(),
new TPAQueue(),
new FreezeManager(),
new TransactionsManager(),
new AnalyticsManager(),
new FriendSQLManager(),
new TabList(),
new AdminShopManager(),
new BossbarManager(),
new AnimationsManager(),
new HalloweenManager(),
new MotdUtils(),
new TranslationManager(new File(this.getDataFolder(), "translations"), "fr"),
new DynamicCooldownManager(),
new MascotsManager(),
new PlayerSettingsManager(),
new MailboxManager(),
new MilestonesManager(),
new QuestsManager(),
new CityManager(),
new ContestManager(),
new DreamManager(),
new MultiBlockManager(),
new LeaderboardManager(),
new MainMenu(),
new HologramLoader(),
new HomeIconCacheManager()
));

@Override
public void onLoad() {
Expand Down Expand Up @@ -107,47 +137,23 @@ public void onEnable() {
Datapack pack = this.getServer().getDatapackManager().getPack(getPluginMeta().getName() + "/omc");
if (pack != null) {
if (pack.isEnabled()) {
getSLF4JLogger().info("\u001B[32m✔ Lancement du datapack réussi\u001B[0m");
logSuccessMessage("Lancement du datapack réussi");
} else {
getSLF4JLogger().warn("\u001B[31m✘ Lancement du datapack échoué\u001B[0m");
logErrorMessage("Lancement du datapack échoué");
}
}
}
new ErrorReporter();

/* MANAGERS */
TicketManager.loadPlayerStats(new File(this.getDataFolder(), "data/stats"));
DatabaseManager.init();
CommandsManager.init();
SpawnManager.init();
UpdateManager.init();
ListenersManager.init();
EconomyManager.init();
BankManager.init();

if (!isUnitTestVersion())
ScoreboardManager.init();

HomesManager.init();
TPAQueue.initCommand();
FreezeManager.init();
QuestProgressSaveManager.init();
if (!isUnitTestVersion())
TabList.init();
AdminShopManager.init();
BossbarManager.init();
AnimationsManager.init();
HalloweenManager.init();

MotdUtils.init();
TranslationManager.init(new File(this.getDataFolder(), "translations"), "fr");
DynamicCooldownManager.init();

MascotsManager.init();

PlayerSettingsManager.loadAllPlayerSettings();

MailboxManager.loadLetters();
/* FEATURES */
REGISTRY_FEATURE.stream()
.filter(f -> !(f instanceof LoadAfterItemsAdder))
.forEachOrdered(Feature::startInit);
}

public void loadWithItemsAdder() {
Expand All @@ -157,77 +163,23 @@ public void loadWithItemsAdder() {
CustomLootTableRegistry.init();

// ** FEATURES **
MilestonesManager.init();
QuestsManager.init();
CityManager.init();
ContestManager.init();
DreamManager.init();
MultiBlockManager.init();
if (WorldGuardHook.isHasWorldGuard()) {
ParticleUtils.spawnParticlesInRegion("spawn", Bukkit.getWorld("world"), Particle.CHERRY_LEAVES, 50, 70, 130);
ParticleUtils.spawnContestParticlesInRegion("spawn", Bukkit.getWorld("world"), 10, 70, 135);
}
REGISTRY_FEATURE.stream()
.filter(f -> f instanceof LoadAfterItemsAdder)
.forEachOrdered(Feature::startInit);

// todo: sera supprimé dans https://github.com/ServerOpenMC/PluginV2/pull/1168
DreamDimensionManager.postInit();
if (!OMCPlugin.isUnitTestVersion()) {
LeaderboardManager.init();
MainMenu.init(this);
HologramLoader.init();

if (WorldGuardHook.isHasWorldGuard()) {
ParticleUtils.spawnParticlesInRegion("spawn", Bukkit.getWorld("world"), Particle.CHERRY_LEAVES, 50, 70, 130);
}
HomeIconCacheManager.initialize();
}

@Override
public void onDisable() {
// SAUVEGARDE
// - Dimension des Reves
DreamManager.disable();

// - Mailboxes
MailboxManager.saveLetters();

// - MultiBlocks
MultiBlockManager.save();

// - War
WarManager.saveWarHistories();

// - CityStatistics
CityStatisticsManager.saveCityStatistics();

// - Settings
PlayerSettingsManager.saveAllSettings();

// - Notation des Villes
NotationManager.saveNotations();

// - Maires
MayorManager.saveMayorConstant();
MayorManager.savePlayersVote();
MayorManager.saveMayorCandidates();
MayorManager.saveCityMayors();
MayorManager.saveCityLaws();

HomesManager.saveHomesData();
HomeIconCacheManager.clearCache();

// - Milestones
MilestonesManager.saveMilestonesData();

// - Contest
ContestManager.saveContestData();
ContestManager.saveContestPlayerData();
QuestsManager.saveQuests();

// - Mascottes
MascotsManager.saveMascots();

// - Cooldowns
DynamicCooldownManager.saveCooldowns();


if (!OMCPlugin.isUnitTestVersion()) {
HologramLoader.unloadAll();
// ** SAVE **
for (Feature feature : REGISTRY_FEATURE) {
feature.startSave();
}

// - Close all inventories
Expand All @@ -241,8 +193,27 @@ public void onDisable() {
Bukkit.shutdown();
}

public static void registerEvents(Listener... listeners) {
for (Listener listener : listeners) {
instance.getServer().getPluginManager().registerEvents(listener, instance);
}
}

public static boolean isUnitTestVersion() {
return OMCPlugin.instance.getServer().getVersion().contains("MockBukkit");
}

/* LOG MESSAGE */
public void logSuccessMessage(String message) {
this.getSLF4JLogger().info("\u001B[32m✔ {}\u001B[0m", message);
}

public void logErrorMessage(String message) {
this.getSLF4JLogger().info("\u001B[31m✔ {}\u001B[0m", message);
}

private void logLoadMessage() {
Logger log = getSLF4JLogger();
Logger log = this.getSLF4JLogger();

String pluginVersion = getPluginMeta().getVersion();
String javaVersion = System.getProperty("java.version");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.openmc.core.commands.admin.freeze;

import fr.openmc.core.OMCPlugin;
import fr.openmc.core.utils.init.Feature;
import fr.openmc.core.utils.messages.MessageType;
import fr.openmc.core.utils.messages.MessagesManager;
import fr.openmc.core.utils.messages.Prefix;
Expand All @@ -13,15 +14,21 @@
import java.util.HashSet;
import java.util.Set;

public class FreezeManager {
public class FreezeManager extends Feature {

public static final Set<Player> FROZEN_PLAYERS = new HashSet<>();
private static Player player;

public static void init() {
@Override
public void init() {
Bukkit.getServer().getPluginManager().registerEvents(new FreezeListener(), OMCPlugin.getInstance());
}


@Override
public void save() {
// nothing to save
}

/**
* Freeze or unfreeze a player
*
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/fr/openmc/core/commands/utils/SpawnManager.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.openmc.core.commands.utils;

import fr.openmc.core.OMCPlugin;
import fr.openmc.core.utils.init.Feature;
import lombok.Getter;
import org.bukkit.Location;
import org.bukkit.World;
Expand All @@ -10,17 +11,23 @@
import java.io.File;
import java.io.IOException;

public class SpawnManager {
public class SpawnManager extends Feature {

private static File spawnFile;
private static FileConfiguration spawnConfig;
@Getter private static Location spawnLocation;

public static void init() {
@Override
public void init() {
spawnFile = new File(OMCPlugin.getInstance().getDataFolder() + "/data", "spawn.yml");
loadSpawnConfig();
}

@Override
public void save() {
// nothing to save
}

private static void loadSpawnConfig() {
if(!spawnFile.exists()) {
spawnFile.getParentFile().mkdirs();
Expand Down
Loading
Loading