Skip to content

Architecture

Antidino35 edited this page Oct 28, 2026 · 1 revision

🏗️ Architecture

src/main/java/fr/antidino/smp/
├── CorePlugin.java                  # onEnable / onDisable, câblage, fullReload()
├── core/
│   ├── CooldownManager.java         # Cooldown par joueur
│   ├── MessageManager.java          # Messages traduits (lang/*.yml)
│   ├── database/
│   │   ├── DatabaseManager.java     # Pool Hikari + création des tables
│   │   └── DatabaseProvider.java    # Requêtes SQL
│   └── Utils/
│       ├── ItemBuilder.java         # Builder d'ItemStack
│       ├── PDCBuilder.java          # Clés PDC, slots et perks sur les items
│       └── ChatUtil.java
└── modules/
    ├── commands/                    # AdminCommands (/perk), PerksCommand (/perks)
    ├── listeners/                   # Crafting, Smithing, ItemBreak, PlayerJoin,
    │                                # SavingPerkListeners, VoidItemSaver
    └── perk/
        ├── AbstractPerk.java        # Base : YAML, craft, niveaux, items
        ├── PerkManager.java         # Registre + lecture des perks équipés
        ├── PerkEntry.java           # Entrée de slot "id" ou "id:niveau"
        ├── PerkTasks.java           # Tâche répétée (vision, aimant, double saut)
        ├── SmithingRegisterAllItem.java
        ├── codex/                   # CodexMenu, CodexListener
        ├── config/                  # ConfigPerkManager, PerkTypeId
        ├── listeners/               # PerkEffectListener
        ├── rarity/                  # RarityManager, Rarity
        ├── slotExpander/            # SlotExpander, SlotManager
        └── type/                    # Passive, Attribute, Warden, NoFall

Données stockées sur un item (PDC)

Clé Type Rôle
max_slots INTEGER Nombre de slots
used_slots INTEGER Slots occupés
perk_slots LIST<STRING> Perks appliqués (id ou id:niveau)
perk_id STRING Identifie un item de perk
perk_level INTEGER Niveau de l'item de perk
slot_expander STRING Identifie le cristal

Flux d'application d'un perk

Joueur place équipement + perk dans la table de forge
        │
        ▼
PrepareSmithingEvent ──► SmithingListener
        ├─ cristal ?  → SlotManager.expandSlots()
        └─ perk + slot libre ? → applyPerkToNextAvailableSlot()
                                   └─ AbstractPerk.onApply(item, niveau)
        ▼
Résultat : attributs, lore et PDC mis à jour

Stack technique

Bibliothèque Version Rôle
paper-api [26.3.build,) API serveur (provided)
sqlite-jdbc 3.53.4.0 Base locale
HikariCP 7.1.0 Pool de connexions
Adventure / MiniMessage fournie par Paper Textes formatés

Build : maven-compiler-plugin 3.13.0, maven-shade-plugin 3.5.3. Le filtrage Maven est actif sur src/main/resources.

⚔️ SMPplugin

🚀 Démarrer

📖 Référence

🛠️ Développeur

❓ Aide

Clone this wiki locally