From 1f0d469dd306002abf4be58990f019e4a32e301e Mon Sep 17 00:00:00 2001 From: GeminiAntigravityCLI Date: Thu, 20 Aug 2026 17:46:18 +0200 Subject: [PATCH] feat(config): add default config.yml and configure auto-loader --- src/main/java/fr/luc/gamingcore/Main.java | 27 ++++++++++++++ src/main/resources/config.yml | 43 +++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/main/resources/config.yml diff --git a/src/main/java/fr/luc/gamingcore/Main.java b/src/main/java/fr/luc/gamingcore/Main.java index ef34527..9d0fe90 100644 --- a/src/main/java/fr/luc/gamingcore/Main.java +++ b/src/main/java/fr/luc/gamingcore/Main.java @@ -54,6 +54,7 @@ public final class Main extends JavaPlugin { // 5. Initialiser le service métier GuildManager et charger les données this.guildManager = new GuildManager(this, guildRepository, economyManager); + loadConfigSettings(); this.guildManager.loadData(); // 6. Initialiser le framework betterMcCommands et enregistrer les commandes @@ -85,6 +86,32 @@ public final class Main extends JavaPlugin { getLogger().info("GamingCore a ete desactive !"); } + /** + * Charge et applique les paramètres de configuration dans les différents gestionnaires. + */ + private void loadConfigSettings() { + if (guildManager == null) return; + + double basePrice = getConfig().getDouble("economy.chunk_pricing.base_price", 1000.0); + double growthRate = getConfig().getDouble("economy.chunk_pricing.growth_rate", 0.08); + double alpha = getConfig().getDouble("economy.chunk_pricing.alpha", 0.95); + double linearStep = getConfig().getDouble("economy.chunk_pricing.linear_step", 150.0); + double kBase = getConfig().getDouble("economy.chunk_pricing.k_base", 0.05); + double kSize = getConfig().getDouble("economy.chunk_pricing.k_size", 0.03); + double delta = getConfig().getDouble("economy.chunk_pricing.delta", 1.15); + long recentWindowMillis = getConfig().getLong("economy.chunk_pricing.recent_window_hours", 24) * 3600_000L; + + fr.luc.gamingcore.economy.ChunkPriceCalculator calc = guildManager.getPriceCalculator(); + calc.setBasePrice(basePrice); + calc.setGrowthRate(growthRate); + calc.setAlpha(alpha); + calc.setLinearStep(linearStep); + calc.setKBase(kBase); + calc.setKSize(kSize); + calc.setDelta(delta); + calc.setRecentWindowMillis(recentWindowMillis); + } + /** * Initialise la connexion vers l'API WorldGuard 7 si disponible. */ diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..cf8a1df --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,43 @@ +# ========================================================== +# GAMINGCORE - SYSTÈME DE GUILDE +# ========================================================== + +# Préfixe global des messages (Format MiniMessage / HEX / Gradients) +prefix: "[Guilde] » " + +# Paramètres généraux des guildes +guild: + # Coût de création d'une guilde en monnaie Vault + creation_cost: 1000.0 + # Durée de validité des invitations envoyées (en secondes) + invite_timeout_seconds: 60 + +# Paramètres mathématiques de calcul du coût des territoires (Chunks) +# Formule spatio-temporelle : PrixFinal(N, R) = P_structurel(N) * M_surchauffe(N, R) +economy: + chunk_pricing: + # Prix de base du premier chunk (P_base) + base_price: 1000.0 + # Taux de croissance exponentiel de base (ex: 0.08 pour +8% par chunk) + growth_rate: 0.08 + # Facteur d'amortissement de l'exposant alpha (entre 0.8 et 1.0) + alpha: 0.95 + # Palier linéaire fixe ajouté par chunk possédé (Palier) + linear_step: 150.0 + + # Paramètres de surchauffe temporelle glissante + # Fenêtre glissante en heures + recent_window_hours: 24 + # Surchauffe minimale de base par claim récent (k_base) + k_base: 0.05 + # Amplification de la surchauffe selon la taille de la guilde (k_taille) + k_size: 0.03 + # Exposant de vélocité temporelle (delta) + delta: 1.15 + +# Paramètres de protection territoriale +protection: + # Empêcher les explosions (Creeper, TNT, Lits, Cristaux) d'endommager les territoires de guilde + prevent_explosions: true + # Afficher une notification dans l'Action Bar lors du franchissement de frontière de chunk + show_actionbar_on_move: true