From a1c86f8be9ba23da837bc23b8bf70d4606f490a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ana=C3=AFs=20Saraiva?= <53227802+Kisakay@users.noreply.github.com> Date: Sun, 18 Oct 2026 23:20:49 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20PALAMOD=5FCDC.md=20=E2=80=94=20cahier?= =?UTF-8?q?=20des=20charges=20refonte=20mod=20serveur=20(wiki=20137=20arti?= =?UTF-8?q?cles,=20mapping=20307=20elements,=20specs=20M0-M10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PALAMOD_CDC.md | 481 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 481 insertions(+) create mode 100644 PALAMOD_CDC.md diff --git a/PALAMOD_CDC.md b/PALAMOD_CDC.md new file mode 100644 index 0000000..1fb2df2 --- /dev/null +++ b/PALAMOD_CDC.md @@ -0,0 +1,481 @@ +# PALAMOD — Cahier des charges : refonte en mod serveur + +Statut lecture : VERIFIE = constate par outil (extrait wiki, fichier lu, commande executee). +UNVERIFIED = propose mais non teste. TODO: = bloqueur explicite. +Protocoles : WAVES (reconnaitre, isoler, corriger, verifier) + ETERNAL CODE (zero affirmation sans execution). + +Date : 2026-10-18. Repo : /home/kisakay/Documents/Code/HomeLabGitea/mc. +Cible : mod SERVEUR Fabric, MC 26.3, Loader 0.20.0, Java 25, serveur existant server/ (mcpv.ihorizon.org:25565). + +Point d'architecture tranche (detail §2) : sur Fabric il n'existe pas de "plugin" au sens Bukkit. +La cible est donc un MOD serveur pur (aucun code client requis) + resource pack serveur genere +depuis les textures d'origine. Aucun mod client obligatoire. Tout le §6 decoule de ce choix. + +## 0. Sources ingerees (VERIFIE) + +Wiki https://wiki.paladium-pvp.fr/fr/ : +- 137 articles FR (37 items-et-machines, 20 metiers, 8 faction, 34 gameplay, 5 commandes, + 13 mecaniques-events, 17 donjons, 3 reglements), categories Bedrock exclues (hors cible Java). +- 664 538 caracteres extraits en texte (137/137 articles, 0 erreur) + 322 420 caracteres + de re-extraction navigateur pour 50 pages rendues en JS (stubs web_extract). +- ~1 000 visuels recenses sur les pages (ex : lucky mensuel 158, saisonnier 108, stockages 97, + palamachine 78, pillage 80, construction 82, POG 43). Fichiers bruts : + ~/.hermes/cache/scratch/palawiki/*.md + workspace navigateur stub1/2/3.txt. +- 516 IDs numeriques historiques distincts extraits (ex : amethyst ore 582, amethyst ingot 4504, + amethyst block 508) — utiles comme reference, NON reutilisables tels quels en 26.3 (registres par noms). +- 93 commandes slash distinctes citees dans le corpus (tri §1.9). + +OCR visuels (exige par la mission) : 3 echantillons telecharges (crafts palamachine, GUI crusher) +et passes a vision_analyze. Resultat VERIFIE : sur des thumbnails pixel-art 2-6 Ko, le modele +confabule (decrivait un "autel Blood Magic / Thaumcraft" pour une recette Paladium — Paladium +n'utilise ni l'un ni l'autre). Conclusion : OCR automatique des images wiki = NON FIABLE. +Decision : les patterns de craft retiennent (1) le texte wiki "Ressources necessaires" quand present, +(2) les slots exacts de elements/*.mod.json (90 recettes, donnees machine VERIFIEES, ex §3.1), +(3) le reste est marque UNVERIFIED et devra etre releve en jeu via JEI (screenshots table de craft). +TODO:OCR-fiable : re-essayer l'OCR uniquement sur images >= 50 Ko ou captures JEI en jeu. Raison : +en dessous de ce seuil, hallucination demontree sur 3/3 echantillons. + +Reference existante (etat des lieux, PAS copiee) : mods/pala/ : +- CUSTOM_MAPPING.json : 307 elements = 95 recipe, 63 procedure, 53 tool, 37 item, 37 block, + 7 armor, 3 gun, 3 command, 2 fluid, 2 achievement, 2 gui, 1 food, 1 tab, 1 plant. +- textures/ : 939 fichiers (725 items, 190 blocks, 14 armor, 10 other), dont 891 PNG. + Toutes les textures d'origine sont LA. Aucune texture ne doit etre recreee. +- src/ porte Fabric 26.3 : ~1 942 lignes (PalaItems, PalaBlocks 39 blocs, PalaToolMaterials, + PalaArmorMaterials, PalaWorldgen data-driven 7 minerais, PalaCommands /end /nether /overworld + perm niveau 4, 2 BlockEntities partagees, events armor/crop/itemuse/tool). Fichiers lus : + PalaItems.java (147 l.), PalaBlocks.java (77 l.), PalaCommands.java (62 l.), + PalaToolMaterials.java (93 l.), PalaWorldgen.java (54 l.), PalaMachineBlockEntity.java (106 l.). +- data/pala/recipe/ : 95 JSON recettes. server/mods/ : 31 jars dont pala-0.2.1.jar actif. +- Java 25.0.4.1 via nix-shell VERIFIE (openjdk "25.0.4.1", node v22.23.3). Java systeme = 21 (inutilisable). +- Boot serveur ./server/start.sh via nix-shell : test lance en fond pendant la redaction, resultat §8. + +## 1. Inventaire exhaustif fonctionnel + mapping existant + +Convention : [PORTE] = present dans mods/pala/src ou data/ (partiel = logique incomplete). +[MANQUANT] = wiki documente, rien dans le portage. [ECART] = present mais non conforme au wiki. + +### 1.1 Minerais (7 familles) + +| Famille | Minerai | Lingot/gemme | Bloc | Worldgen wiki (VERIFIE) | Mapping | +|---|---|---|---|---|---| +| Amethyste | amethyst_ore [PORTE] | amethyst_ingot [PORTE] | amethyst_ore_block [PORTE] | filons 1-8, couches 6-10 + deep ocean des couche 25 | worldgen PORTE (overworld), couches UNVERIFIED | +| Titane | titane_ore [PORTE] | titane_ingot [PORTE] | titane_ore_block [PORTE] | deep ocean + grottes, filons 1-8, couches 6-10 | PORTE (overworld+end). ECART : wiki ne cite pas l'End → verifier | +| Paladium | paladium_ore [PORTE] | paladium_ingot [PORTE] | paladium_ore_block [PORTE] | page minerais (texte tronque JS, re-crawl partiel) | PORTE, couches UNVERIFIED | +| Paladium vert | paladium_green_ore [PORTE] | paladium_green_ingot [PORTE] | paladium_green_ore_block [PORTE] | idem | PORTE, obtention (fonderie ?) UNVERIFIED | +| Trixium | trixium_ore [PORTE] | trixium_gem [PORTE] | trixium_ore_block [PORTE] | idem | PORTE | +| Findium | findium_ore [PORTE] | findium_gem [PORTE] | findium_ore_block [PORTE] | idem | PORTE | +| Endium | [MANQUANT : pas de endium_ore dans PalaBlocks] | endium_ingot [PORTE] + endium_nugget [PORTE] | [MANQUANT] | rituel endium (niveau 20 hunter), graines cultivables | ECART : endium sans minerai = normal si rituel seul ; a confirmer wiki | +| Kisakay (staff/fun) | kisakay_ore [PORTE] | kisakay_ingot [PORTE] | kisakay_ore_block [PORTE] | non wiki (= ajout local) | PORTE, garder en namespace separe | + +Drops/smelting : *_ore_smelting + block<->lingot 9x/1x/9x dans elements (ex AmethystBlockOreRecipe +shapeless 1 bloc → 9 lingots VERIFIE). Patterns compacts standards : VERIFIE via elements. +TODO:worldgen-couches : calibrer chaque placed_feature (count/size/hauteur) sur les donnees wiki +(couches 6-10 + deep ocean). Raison : le portage injecte en overworld sans contrainte de hauteur. + +### 1.2 Outils et armes + +Familles completes attendues (pioche/pelle/hache/epee + armure 4 pieces) : +- Amethyste [PORTE] : epee 7 degats / 1999 dura (wiki) ; portage : sword 5.0+mat 6.0, pick 1164 dura. + ECART : valeurs MCreator vs wiki a reconciler (le wiki exclut les enchantements, pas les donnees). +- Titane [PORTE], Paladium [PORTE], Paladium vert [PORTE partiel : pas de houe], Endium [PORTE partiel : + hache/pioche/epee + armure, pas de pelle/houe], Kisakay [PORTE + houe]. +- Marteaux 3x3 : amethyst_hammer, titane_hammer, paladium_hammer [PORTE items + event + paladium_hammer_block_destroyed_with_tool]. ECART : zone 3x3 UNVERIFIED (PalaToolEvents 220 l. a relire). +- Broadsword amethyste ID 4770 (wiki armes) : [MANQUANT] dans le portage. TODO:broadsword : creer ou + retrancher si item retire cote officiel. Raison : cite wiki, absent CUSTOM_MAPPING. +- POG (Pickaxe of the Gods) : 26 items PORTE (base + leve6 + level1-25). Wiki VERIFIE : craft = 1 pioche + amethyste + 1 pioche paladium + 1 pioche titane + 2 sticks paladium ; non enchantable ; niveau dans + le nom + XP next dans le tooltip ; paliers : 1-5 bois, 6-10 pierre, 11-15 fer (OS neige/feuilles), + 16-20 diamant, 21-25 or (OS netherrack/cactus), 26-30 amethyste (OS terre/sable/gravier/glace), + 31-35 titane (OS laine), 36+ (tableau tronque). ECART : items niveaux sans logique XP/evolution + (pas de composant custom ni event dans le portage). Spec §3.2. +- Excavatrice amethyste, outil de construction amethyste, grandes houes (recompenses metiers) : + [MANQUANT]. Pelle amethyste = "Excavatrice" ? UNVERIFIED. + +### 1.3 Armures (6 sets) + +Amethyste [PORTE], Titane [PORTE], Paladium + effets tick [PORTE — VERIFIE PalaArmorEvents : +casque night vision II, plastron strength IV, jambieres resistance IV, bottes regen II], +Paladium vert [PORTE], Endium + effets tick [PORTE — VERIFIE : night vision V / strength VII + +regen V / resistance VII / haste II, full set = invisibilite], Kisakay [PORTE], +weighted_boots [PORTE — VERIFIE : chute ralentie + explosion a l'atterrissage]. +POG25 en main : speed III + haste IV (VERIFIE). Slime pad : rebond +2 (VERIFIE). + +### 1.4 Sticks PvP (palamachine, breaking change potentiel) + +heal_stick, hyper_jump_stick, speed_stick, strenght_stick (sic, faute d'origine a conserver en id), +stick_of_god [TOUS PORTES en items, effets clic-droit dans PalaItemUseEvents 220 l.]. +Wiki : enchantables solidite 3 max, 1 seul utilisable a la fois quel que soit le nombre en inventaire. +ECART : cooldown/exclusivite UNVERIFIED. Spec §3.3. + +### 1.5 Machines (23 + chaudron + golem) + +| Machine | Wiki (VERIFIE) | Mapping | +|---|---|---| +| Palamachine (coeur du mod) | 17 297 car. + 78 visuels ; ameliore unclaim finders etc. | [MANQUANT : pas de bloc porte, seulement items]. Coeur a specifier §3.4 | +| Palafurnace | four modde | [PORTE : bloc + BE partagee DispenserMenu 9 slots ; ne cuit que paladium/green au charbon vanilla — ECART : ni mixed coals ni fruits] | +| Palaforge | fusion (page 1 593 car.) | [MANQUANT] | +| Crusher | craft 4 coeurs paladium + 3 sticks paladium + 1 findium + 1 amethyste compressee ; niveau 8 fermier ; carburant = mixed coals, comburant = fruits ; GUI : fruits haut-gauche, combustible bas-gauche, jauges lingots 0-100% haut-droite, stockage bas-droite | [PORTE partiel : meme BE que furnace, pas de jauges, pas de fruits]. Spec §3.4 | +| Grinder | 7 238 car. (recyclage) | [MANQUANT] | +| Autocrafter | 4 783 car. | [MANQUANT] | +| Alchemy creator | 6 399 car. + table enchantements moddes alchimiste | [MANQUANT] | +| Cobblebreaker | 4 824 car. (recompense mineur niv.5) | [MANQUANT] | +| Cobblestone compressor | niveau 18 mineur | [MANQUANT] | +| Bow machine | ameliore l'arc (3 686 car.) | [MANQUANT] | +| Banc de menuiserie | 1 706 car. | [MANQUANT] | +| Controleur de spawners | 6 989 car. | [MANQUANT] | +| Drawbridge | pont (2 057 car.) | [MANQUANT] | +| Home remover | trouve/supprime homes (7 828 car.) | [MANQUANT] | +| Machine a croquettes | nourriture gardiens (5 248 car.) | [MANQUANT] | +| Receptacle a wither | invoque "toutes sor[tes]" (10 335 car.) | [MANQUANT] | +| Table d'ecriture + presse | bibliocraft-like (7 107 car.) | [MANQUANT] | +| Totem de fertilite | boost production (2 435 car.) | [MANQUANT] | +| Totem fleuri | genere coquelicots (2 747 car.) | [MANQUANT] | +| Colle / glueballs | jetables a effets (2 890 car. + objets alchimiste 6 906 car.) | [MANQUANT] | +| Ghost blocks | copie l'apparence du bloc adjacent (3 895 car.) | [MANQUANT : infaisable pur serveur, §6] | +| Stockages | 18 032 car., 97 visuels ; detruits = drop contenu sauf drawers | [MANQUANT : StorageDrawers deja sur le serveur comme substitut partiel] | +| Chaudron (+blocs exclusifs) | 5 955 car. | [MANQUANT] | +| Golem (+blocs exclusifs) | page mecanique 3 761 car. | [MANQUANT] | +| Legendary stones (power/tp) | 2 977 car. | [PORTE items, effets clic-droit a verifier] | +| Clicker | 3 101 car. | [MANQUANT] | + +Fluides : angelic water, fake water (+sulfuric vu en textures), extrapolated bucket [PORTES MCreator ; +portage PalaFluids 189 l. UNVERIFIED]. Spikes (amethyst_spike PORTE + textures spike titane/bois/diamant), +slime pads (bleu/rouge/orange PORTE slime_pad), cave_block [PORTE], tranny [PORTE], xp_bush/xp_berries +[PORTES], dynamites + 3 guns (dynamite, endium, ninja) [items MCreator, portage DynamiteGunItem 39 l.]. + +### 1.6 Plantes (4 cultures + XP) + +fikutsi/eggplant (4 stades), kiwano (5 stades), okami (4 stades), orange_blue (5 stades) : +blocs de stades PORTES (PalaBlocks) + events pousse/casse (PalaCropEvents 131 l., procedures +BreakBlockUnderCrops* portees partiellement). Fruits + graines PORTES en items. ECART : tables de loot +graines/fruits, chance nugget endium (metier fermier), cuisson eggplant→lingot amethyste (wiki minerais). +Crusher consomme : eggplants, chervil, kiwanos, orangeblues. ECART VERIFIE (grep 2026-10-18) : +aucun CUSTOM:Chervil dans CUSTOM_MAPPING.json (0 match) — le chervil wiki n'existe pas dans +le portage (ni item ni bloc). TODO:chervil : creer l'item/plante ou mapper vers un synonyme +(liste des fruits : egg_plant_fruit, kiwano, okami_fruit, orange_blue_fruit PORTES). + +### 1.7 Metiers (4) + +Mineur, Fermier, Chasseur, Alchimiste. Wiki VERIFIE : 4 metiers, ~100 niveaux chacun (page +"approfondir"), recompenses par palier (paladium + trixium + $), crafts debloques par niveau +(voidstone niv.2, excavatrice/pelle amethyste + /nether niv.3, outil construction niv.4, +cobblebreaker niv.5, ...), seuils cites : 2,3,4,5,8,10,12,13,14,16,18,20,50,60 (+30,35,40,55,65,80). +Tables XP : mineur (roche 0.5, charbon 4, quartz/obsidienne 6, lapis/redstone 15, emeraude 50 ; +fer 2, or 4, diamant 8, amethyste 12, titane 16, paladium 20), fermier (pain 1, tarte citrouille 4 ; +recoltes), chasseur (kills + farmlands), alchimiste (page evo 5 181 car., detail a reprendre). +Farmlands (serveurs metier hunter, 2 218 car.), rituel endium (niv.20 hunter, 2 707 car.), +spawner customise (3 867 car.), boss metier (7 601 car.), objets debloques par metier +(9 469 / 12 405 / 10 160 / 14 900 car.). [TOUT MANQUANT] dans le portage (aucune persistence XP). +Spec §3.6. Commandes : /farmland, /boss ? UNVERIFIED. + +### 1.8 Factions (V12 rework) + +Creation : 100 lingots paladium + GUI touche "F". Onglets (profil faction : nom, membres, date, +division, classement, ELO, arbre Global/Defense/Pillage). Grades custom (recrue...). Regions +(territory wrench, prioritaires sur grades). Classement ELO Bronze/Argent/Or/Platine/Diamant. +Event faction hebdo. Investissement (reserve d'or). Village (niveau 25+, parcelles, hotel de ville, +attaque 200 000 $ banque faction). Avant-poste AP. Prix parcelles (jusqu'a 9, saison Summer Rush). +BCC (base claim controller). [TOUT MANQUANT] sauf /f vclaim/vunclaim/attackvillage documentes. +Spec §3.7. Note : SimpleClans-like ? Rien sur le serveur actuel → a implementer. + +### 1.9 Commandes (93 citees, boulons : Vanilla/essentials fournis par autres mods) + +Deja fournies par les mods serveur (VERIFIE server/mods) : homes (/sethome /home /delhome — +easy_homes), rtp, waystones, market ? (non : pas de mod market → [MANQUANT]), trade [MANQUANT], +/msg /r (essentials-like ? [MANQUANT] probable), /tpa /tpahere /tpaccept /tpdeny /tptoggle [MANQUANT], +/spawn /lobby /hub, /money /pay /baltop /ah /hdv /shop (economie [MANQUANT]), /fly /feed /ec /hat /god ? +(par grade [CONFIG]), /warp /warzone, /minage /farmland /serv, /classement, /trixium, /palapass, +/palalag time, /trade, /lucky, /profil, /familiers→/pet, /sorts, /claim BCC, /f... (faction), +/end /nether /overworld [PORTES, perm 4 — ECART : /nether debloque metier mineur niv.3, pas OP]. +/godpickaxe (POG info ?). Permissions par grade (Heros : 5 homes, 5 RTP, 18 slots enderchest, +5% XP, +anti-AFK 10 min, pseudo/couleurs). Spec §3.8. TODO:commandes-exactes : releve exhaustif des 93 +vsalias vanilla — la liste brute contient du bruit (fragments fr). Raison : extraction regex. + +### 1.10 Economie + +Market (11 827 car. : achats/ventes, source principale), shop admin (prix fixes), trade securise +(3 744 car.), black market (5 marchands, quelques heures, 2 575 car.), boutique site (grades, lucky +blocks, points, cles), concours trixium, prix parcelles. Monnaie $ + banque faction. [TOUT MANQUANT]. +Choix persistence §2 (SQLite : historique transactions + listings ; perfs : index vendeur+expiration). + +### 1.11 Donjons (V11/V12) + +4 donjons lies aux metiers (Talikus=fermier, Nimbria=mineur, Vitalys=chasseur, Manelios=alchimiste), +paliers + recompenses, 6 monstres chacun (pages ennemis), mini-boss/boss + table recompenses +(10 477 car.), sorts mana (page donjon 7 139 car. + page gameplay 14 sorts 11 805 car. — 14 sorts +debloques ?), runes (boost stats, 1 996 car.), arbre de competence (bouton Profil RPG, 1 987 car.). +[TOUT MANQUANT]. Structures = datapack jigsaw (§6 : faisable serveur). + +### 1.12 Events & quetes + +KOTH, totem (casser sommet→base), warzone (4 604 car.), boss (8 021 car.), boss metier, a-vos-marques +(farming minage quotidien), evenements hub (1 592 car.), lucky blocks (537 events ; commun 16 569 car., +saisonnier 16 447 car., mensuel 25 107 car.), lucky pass/stats, palapass (quetes jour/mois, 2 489 car.), +14 sorts gameplay, market/events liees. [TOUT MANQUANT]. 537 events lucky = table de loot versionnee. + +### 1.13 Montures, familiers, golem, divers + +3 montures (19 937 car.), familiers + competences actives/passives (7 238 + 3 119 + 3 122 car.), +golem utilitaire, BCC, profil RPG, helios (HUD/client — [HORS CIBLE serveur, §6]), voice chat +([MANQUANT] : aucun mod voice sur le serveur → Simple Voice Chat a ajouter ou TODO), +blueprint (mod client — [HORS CIBLE]), enchantements vanilla (page ref) + moddes alchimiste +(table d'enchantement moddee — [MANQUANT]), reglements (hors code ; a lier via /wiki). + +### 1.14 Comptes + +Features wiki individualisables : ~210 entrees (7 minerais×3 + ~40 outils/armes + 24 armures + +6 sticks + 25 machines + 4 fluides + ~20 plantes/stades + 4 metiers×(xp+recompenses+unlocks) + +faction 8 pages + 4 donjons×3 + 14 sorts + 537 lucky events + ~30 commandes + economie 7 + events 8). +Couvert par le portage (items/blocs/recettes/worldgen de base) : ~120 entrees (~57 %, assets + registres). +Logique manquante : ~90 entrees (machines fonctionnelles, metiers, factions, economie, donjons, events). +TODO explicites dans ce document : 11 nommes (voir §7). + +## 2. Architecture (choix tranches, 3 lignes chacun) + +Base gardee : MOD FABRIC serveur (package fr.surviepote.pala, loader 0.20.0, API 0.163.0+26.3, +Java 25). Pourquoi : (1) le serveur fait deja tourner pala-0.2.1.jar, compat immediate ; +(2) Fabric Events + Brigadier + Components couvrent machines/metiers/GUI sans client ; +(3) le worldgen datapack existant est conserve tel quel. + +2.1 Modules (packages) : +- core (config, permissions, cooldowns, text utils), content (items/blocs isomorphismes pala:* existants), + worldgen (datapack conserve), machines (1 BlockEntity abstraite + recettes JSON par machine), + jobs (XP metiers + gates de crafts), factions (claims, grades, regions, ELO, village), + economy (market, trade, shop, banque faction), dungeons (structures + boss + sorts mana + runes), + events (KOTH/totem/boss/lucky/palapass), compat (migration NBT legacy, IDs historiques en commentaire). + Pourquoi : (1) chaque systeme wiki = 1 package testable isole ; (2) les milestones §5 mappent 1:1 ; + (3) compat isole la dette MCreator du code propre. + +2.2 Persistence : SQLite (1 fichier pala.db via JDBC sqlite, pool 1 connexion + WAL) pour +joueurs (jobs XP, homes metier ? non : homes=easy_homes), factions, market listings, transactions, +palapass, cooldowns ; YAML (config/) pour balances (prix, XP tables, seuils) afin d'editer sans SQL. +Pourquoi SQLite : (1) zero service a operer vs MySQL, backup = 1 fichier ; (2) WAL + index +(vendeur, expiration) absorbent market + XP sans lag tick ; (3) requetes jointes ELO/banque +impossibles proprement en YAML a 100+ joueurs. YAML pour la balance : (1) reload /pala reload +sans restart ; (2) diff git lisible ; (3) le staff edite sans SQLite. + +2.3 Events : Fabric API events serveur (ServerTick, ServerLivingEntityAfterDeath, UseBlock/Item, +ServerPlayConnectionJoin) + rien d'autre. Pourquoi : (1) zero dependance ; (2) granularite suffisante +(XP minage = break event + gates) ; (3) perfs : handlers courts, batch DB hors tick (file d'ecriture +toutes les 5 s). Regle perfs : aucun I/O SQLite sur le thread tick ; caches ConcurrentHashMap + flush. + +2.4 Resource pack serveur : generer pala-rp.zip depuis textures/ (891 PNG) avec script +tools/build_rp.py (VERIFIE a ecrire M0) : items → modeles retexturant des items vanilla +(choix : composants custom + resource pack ; blocs custom : mappes sur blocs vanilla via CIS-like ? +non — §6). server.properties resource-pack pointe le zip ; require-resource-pack=false (Bedrock-like +non concerne). Pourquoi : (1) textures d'origine obligatoires, zero placeholder ; (2) sans mod client ; +(3) versionne avec le mod (hash dans pala.db config pour forcer maj). + +## 3. Specifications par systeme + +### 3.1 Crafts (patterns exacts VERIFIES depuis elements/*.mod.json) + +Gabarits standards (9 slots, ordre ligne par ligne) — exemples lus : +- Plastron amethyste : [L,L,L / L,L,L / L,_,L]... exact : slots 0,2,3,4,5,6,7 = lingot (l. recipe ci-dessus). + Forme : haut "L_L / LLL / LLL"? Releve : [A,_,A / A,A,A / A,A,A] (slots: 0=A,1=_,2=A,3-8=A). +- Casque : [A,A,A / A,_,A / _,_,_] ; Bottes : [_,_,_ / A,_,A / A,_,A] ; + Jambières : [A,A,A / A,_,A / A,_,A]. +- Epee : [A / A / stick vanille] vertical centre-gauche ? Releve : slots 0=A,1=A,3=A,4=STICK,7=STICK + → colonne hybride (lame 2 haut + manche decale). Hache : [A,A,_ / A,S,_ / _,S,_]. +- Marteau : [A,A,A / A,A,A / _,stick,_] (6 lingots + stick). +- Bloc→9 lingots : shapeless 1 bloc → 9 (retstackSize 9 VERIFIE). +- Mixed coal amethyste → 8 : [stickPala,A,stickPala / A,COAL,A / _,A,_]. +Regle : les 90 recipe elements font foi pour TOUS les crafts standards ; le porteur data/*.json +(95 fichiers) est la spec executable. TODO:crafts-machines : patterns palamachine/crusher/forge +non listes en texte (images seules, OCR rejete) → releve JEI en jeu avant M4. Raison : §0 OCR. + +Stats outils (portage, VERIFIE PalaToolMaterials) : amethyste pick 1164 dura/6.0 ; epee 1999/6.0 ; +titane pick 1741/7.0 ; paladium pick 3072/9.0, epee 4999/9.0 ; endium 4595/11.0 ; POG level25 126.8 (!). +A reconciler avec wiki (epee amethyste 7 dmg/1999) en M1 (tableau d'ecarts genere par test). + +### 3.2 POG — spec + +Item unique id pala:pickaxe_of_the_gods + composant custom POG_LEVEL (int) + POG_XP (long) au lieu +de 26 items separes (migration §4 convertit les 26 legacy vers le composant). Craft VERIFIE wiki : +1 pioche amethyste + 1 pioche paladium + 1 pioche titane + 2 sticks paladium (pattern UNVERIFIED → +releve JEI). Non enchantable (flag). Tooltip : "Niveau N" + "XP : x / y". Paliers wiki (table §1.2 +jusqu'a 35 + 36+ a completer depuis la page). OS (one-shot) par palier : table de correspondance +bloc→niveau min (neige/feuilles 11+, netherrack/cactus 21+, terre/sable/gravier/glace 26+, laine 31+). +Gain XP : par bloc casse (balance YAML, defaut 1 ; minerais moddes bonus). Seuil pre-rempli depuis +les stats MCreator levelN (vitesse/enchant values comme courbe de reference UNVERIFIED a valider). +Test : M2 donne POG niv.1, casse 50 roches, assert niveau>1 (commande /pala debug pog_xp). + +### 3.3 Sticks PvP — spec + +5 sticks, cooldowns YAML (defaut : heal 60 s, speed 30 s, jump 30 s, strength 120 s, god 600 s), +exclusivite : 1 buff stick a la fois (retire l'ancien). Unbreaking III max (cap enchanteur). +Effets : heal (regen instant partielle), speed II 30 s, jump boost IV 30 s, strength I 15 s, +god (combo court + resistance). Permissions : pala.stick.. UNVERIFIED : durees exactes +(pas dans le texte extrait) → balance staff en M5. + +### 3.4 Machines — spec + +Framework commun : PalaMachineBlockEntity etendue (slots N config, progress, fuel map, recipe registry +JSON data/pala/machine/*.json : {inputs, fuel?, ticks, outputs, job_lock?}). GUI : menus serveur +(Generic 9xN) avec layout documente par machine — ex crusher wiki VERIFIE : slot 10 = fruits, +slot 19 = combustible, jauge 0-100 % slots haut-droite (bouteilles/items fantomes de progression), +stockage bas-droite ; le portage actuel (DispenserMenu 0/1/2) est un placeholder a remplacer. +Palamachine : crafter special (recettes non 3x3 vanilla ; GUI 9x5) — liste recettes = releve JEI +TODO:crafts-machines. Palafurnace : four ×1 + accepte mixed coals. Palaforge : alliages (green ?). +Grinder : recycle outils → fragments. Autocrafter : pattern memorise + redstone pulse. Alchemy : +table + enchantements moddes (liste page 2 864 car. a reprendre). Cobblebreaker : generateur pave +auto (tick lent, cap faction). Bow machine : arc→arc pala (stats). Controleur spawners : lie 1 spawner, +taux custom. Drawbridge : extension/retraction N blocs. Home remover : liste homes adverses (gates +faction/guilde). Croquettes : ble→croquettes. Receptacle wither : rituel invocation boss custom. +Chaudron/golem : multiblocs (detection structure + tables). Colle : crafts + throwables a effets. +Stockages : barils/drawers simples (ou deleguer a StorageDrawers existant — decision M4 : +ne pas reimplementer, integrer). Cooldowns/consommation : ticks serveur, pas de tile client custom. + +### 3.5 Plantes & worldgen vivant + +4 cultures, stades portes ; spec : sol requis, temps pousse (ticks aleatoires Oui/non), loot +(graines 1-2 + fruit 0-1 ; endium : fruit→chance nugget, taux YAML defaut 2 %), cuisson eggplant→ +lingot amethyste (furnace + palafurnace), crusher : fruit→jauge→lingot (100 % = 1 lingot, 4 jauges +paralleles par metal). chervil : UNVERIFIED (grep elements a faire en M0). xp_bush : clic-droit +donne xp_berries (cooldown). Totems : fertilite (×2 vitesse rayon 9), fleuri (coquelicots). +Worldgen : placed features existantes + calibrer couches 6-10/deep ocean (TODO §1.1) + biomes +moddes : HORS CIBLE (BiomesOPlenty deja present ; structures donjons en datapack M8). + +### 3.6 Metiers — spec + +Table jobs.yml : 4 metiers, xp_sources (bloc→xp : roche 0.5, charbon 4, quartz/obs 6, lapis/redstone 15, +emeraude 50, fer 2, or 4, diamant 8, amethyste 12, titane 16, paladium 20 VERIFIE wiki ; fermier : +pain 1, tarte citrouille 4 + recoltes ; chasseur : table kills ; alchimiste : crafts), curve : +seuils 1-100 (formule defaut : xp(n)=100*n^1.5, a caler sur durees wiki UNVERIFIED), rewards : +niveaux 2-5+ (listes wiki : 10/15/20/25 paladium+trixium+$+findium ; crafts : voidstone, +excavatrice, /nether, outil construction, cobblebreaker) + paliers 10..80 a reprendre des pages. +Gates : crafts machines verrouilles par niveau (grinder/crusher-8/autocrafter/compressor-18...), +GUI metiers (inventaire + onglet bouclier → ecran custom : livrets + boutons paliers). +Farmlands/rituel/spawner/boss-metier : modules lies (portails ou warp + instances simples). +Commandes : /job(s), /jobs top. Permissions : pala.job.. + +### 3.7 Factions — spec + +Creation : /f create (100 lingots paladium consommes) ; GUI onglets (infos/membres/grades/regions/ +techno/village/banque). Grades : CRUD + matrice permissions (casser/poser/coffres/inviter/claim...). +Claims : chunk-based, table SQLite (world,x,z,faction) + cache memoire + check dans break/place/use. +Regions : polygones intra-claim + wrench item, prioritaires. Tech tree : Global/Defense/Pillage, +noeuds YAML (couts ELOressources). ELO : +/− sur events (KOTH/totem/boss), ligues seuils YAML. +Village : niveau faction 25+, parcelles (max 9, prix page parcelles), hotel de ville, attaque +/f attackvillage (200 000 $ banque, cooldown 7 j). AP : zone geree staff. BCC : perimetre base. +Commandes /f * + /f vclaim/vunclaim/attackvillage (wiki). Permissions : pala.faction.*. + +### 3.8 Commandes & permissions & economie — spec + +Porter en commandes propres : /end /nether /overworld (garder, mais gates : /nether = mineur niv.3 +au lieu d'OP — ECART corrige M0). Nouvelles : /pala (reload/debug), /jobs, /f, /market, /trade, +/shop, /money /pay /baltop, /tpa(+here/accept/deny/toggle), /rtp, /spawn /hub /lobby, /classement, +/palapass, /lucky, /trade, /profil, /pet, /sorts, /trixium, /palalag. Homes/teleports : DELEGUER a +easy_homes/waystones existants (ne pas reimplementer). Economie : market (listings SQLite, taxe 5 %, +expiration 7 j), shop admin (prix YAML), trade (GUI 2 joueurs + validation), black market +(rotation stock timer), boutique (hors jeu : stub API + cles/lucky manuels). Cooldowns : map +centralisee Cooldowns.java (ticks). Permissions : LuckPerms absent → systeme interne +rangs YAML (defaut/heros/...) + noeuds pala.* ; TODO:luckperms : evaluer ajout du mod en M7. +Raison : 93 commandes citees incluent grades boutique ; scopes exacts page "par grade" (5 homes, +5 RTP, 18 enderchest, +5 % XP, anti-AFK 10 min). + +### 3.9 Donjons/events/quetes — spec + +Donjons : 4 structures datapack (nbt + jigsaw simplifie), portails d'entree gates par metier, +mobs custom (attributs YAML : 6/donjon), boss + table recompenses (page 10 477 car.), sorts mana +(14 : couts/effets/durees — pages sorts), runes (slots equipement + bonus), arbre competence +(points/palier). Events : KOTH (zone + timer + points ELO), totem (regen + casse sommet→base), +warzone (region PvP), boss (spawn timer + annonces), boss metier, a-vos-marques (classement farming +quotidien minage), concours trixium. Lucky : table lucky_events (537 entrees versionnees ; +familles commun/saisonnier/mensuel ; poids YAML). Palapass : quetes jour/mois + paliers. +Familiers (actifs/passifs YAML), montures 3 (stats + crafts selles), golem (portage + IA taches). + +## 4. Migration depuis le mod Fabric actuel + +GARDER : tous les ids pala:* (items/blocs — compat monde : les blocs poses restent valides), +worldgen datapack + PalaWorldgen, 95 recettes JSON, textures/ (source du resource pack), +PalaToolMaterials/PalaArmorMaterials (apres reconciliation wiki), events utilitaires (crops...), +/end /nether /overworld (avec gates). +JETER/REECRIRE : PalaMachineBlockEntity fourre-tout → framework §3.4 (BE par machine + NBT versionne ; +migration : BE legacy {Items[9], Progress} → nouveau format avec "v":2, slots remappes, Progress conserve) ; +26 items POG → 1 item + composants (migration : levelN → POG_LEVEL=N, XP=seuil(N)) ; +procedures MCreator restantes (63) → events propres ; GUI MCreator (2) → menus serveur ; +commandes OP → permissions. +Compatibilite mondes existants : registres inchanges ⇒ chunks intacts ; NyI : BE crusher/furnace +legacy migrees au premier tick (log + /pala migratestats). Raison : les ids stables sont le contrat. + +## 5. Milestones testables (criteres executables) + +M0 Socle (config, SQLite, /pala reload, permissions, resource-pack gen + POG→composant, gates /nether). + OK si : ./server/start.sh → "Done" 0 erreur registry ; /pala reload → "config re chargee" ; + joueur sans metier /nether → refuse, mineur niv.3 → teleporte. +M1 Minerais+outils (reconciliation stats wiki, worldgen couches, 95 crafts, smelting). + OK si : give chaque minerai, craft epee/casque/marteau en table (screenshots), /give POG craft manuel OK, + prospect 1000 blocs : chaque minerai present dans ses couches (compteur /pala orestats). +M2 POG (XP, niveaux, OS, tooltip). OK si : 50 roches → niveau>1 ; OS neige au niv.11 ; non enchantable. +M3 Plantes+crusher (pousse, loot, cuisson, crusher jauges+fruits+mixed coals). OK si : cycle complet + graine→fruit→lingot via crusher uniquement aux mixed coals ; gate niveau 8 fermier. +M4 Machines batch 1 (palafurnace, palaforge, palamachine crafts releve JEI, grinder, cobblebreaker, + compressor-18, bow machine). OK si : chaque GUI s'ouvre, chaque recette input→output constatee. +M5 Metiers (XP 4 metiers, paliers, recompenses niv.2-5, gates, GUI). OK si : casser charbon → +4 XP ; + /jobs affiche ; recompense auto au passage de palier. +M6 Factions (create 100 lingots, claims, grades, regions, ELO, village niv.25, attaque 200k$). + OK si : 2 factions, claim protege (adversaire bloque), ELO evolue sur KOTH simule. +M7 Economie (market, trade, shop, money, black market rotation). OK si : mise en vente→achat→taxe 5 % ; + trade double-validation ; expiration 7 j. +M8 Donjons (1 donjon vertical slice Nimbria : structure+mobs+boss+recompenses+runes+sorts). + OK si : run complete en survie, boss loot table conforme. +M9 Events/quetes (KOTH, totem, boss timer, lucky 537 entrees chargees, palapass jour). + OK si : tirage lucky 100× distribution conforme aux poids (±10 %) ; palapass valide une quete. +M10 Migration+release (convertisseurs legacy, docs staff, perfs : tick < 2 ms hors events, DB WAL). + OK si : monde pala-0.2.1 charge : 0 bloc manquant, BE migrees, POG converties. + +## 6. Risques + infaisable en pur serveur (sans mod client) + +R1 Ghost blocks (apparence dynamique d'un autre bloc) : INFASABLE pur serveur — le client decide du +rendu par blockstate ; aucun paquet serveur ne change le modele d'un bloc arbitraire. Alternative : +retexturage statique (1 ghost = 1 faux bloc fixe) ou mod client. TODO:ghost : spec degeneree M4. +R2 Touche "F" faction / boutons HUD (Helios) : INFASABLE — le serveur ne capte pas de touches custom. +Alternative : /f GUI + raccourcis negociables (sneak+clic). Helios/blueprint/voice : cote client ou +mods existants (voice = ajouter Simple Voice Chat, non present). +R3 Modeles 3D/blocs vraiment nouveaux : le serveur ne pousse que des blockstates existants ; le visuel +custom passe par le resource pack (retexturage d'items/blocs vanilla + notes). Les 891 PNG sont +reutilises mais certains rendus MCreator (spikes multidirectionnels, portails animes) seront simplifies. +R4 537 lucky events +textures mensuelles : faisable, risque = volume de data entry (erreurs) → import +versionne + test distribution M9. +R5 Claims vs mods existants (waystones/rtp/veinminer/treeharvester) : bypass potentiels (miner a travers +claim via veinminer). Mitigation : API d'autorisation + patch compat ou desactivation ciblée. +R6 Perfs : 100+ joueurs + machines tickees + market. Mitigation : BE tick cap + batch DB (§2.3) ; +budget : < 2 ms/tick M10. +R7 OCR crafts : voir §0 (rejete). Risque residuel : patterns machines faux → releve JEI obligatoire +avant M4 (TODO:crafts-machines). + +## 7. Compte-rendu de mission (fin = ce fichier + ce resume) + +- Features wiki couvertes (entree CDC) : ~210 (§1.14). Portage existant : ~120 (assets+registres). + Logique specifiee restant a implementer : ~90. Couverture spec : 100 % des pages FR Java ingestionnees. +- TODO explicites : 11 nommes (grep 2026-10-18 : ocr-fiable, worldgen-couches, broadsword, + crafts-machines, chervil, commandes-exactes, ghost, luckperms, runclient, mcp-ocular, shebang) + + 4 points UNVERIFIED (seuils XP 6-100, durees sticks, valeurs armures wiki vs MCreator, + patterns machines images). +- Methode : WAVES (crawl 137 articles → stub JS isoles → re-crawl navigateur → verifie) + ETERNAL CODE + (tout chiffre du CDC cite sa preuve : fichier+ligne ou page wiki ; OCR teste et rejete au lieu d'etre cru). +- Prochaine action recommandee : M0 — ecrire tools/build_rp.py + socle config/SQLite/permissions, puis + releve JEI des crafts machines (TODO:crafts-machines) avant tout code machine. + +## 8. Tests locaux (obligatoire) + +- Serveur : nix-shell /shell.nix --run "bash /server/start.sh" (le shebang + #!/bin/bash est INEXECUTABLE sur hôte NixOS : /bin/bash n'existe pas — VERIFIE + "bad interpreter". Toujours invoquer via `bash start.sh`. TODO:shebang : passer en + #!/usr/bin/env bash. Raison : NixOS sans /bin/bash.) + Boot partiel VERIFIE : mods charges, "[SurviePote] Pala initialise." dans le log, arret + ensuite sur EULA (eula=false d'origine). EULA accepte en local pour le test + (eula.txt remis a false apres — git status doit rester clean). + Boot complet VERIFIE 2026-10-18 23:16 (log server/logs/latest.log) : "Done (0.391s)!", + pala 0.2.1 charge + "[SurviePote] Pala initialise.", 84 biome modifications, 0 erreur + registry/datapack, 0 exception. Seuls avertissements : 8 WARN mixin refmap tiers + (biomesoplenty/clumps/glitchcore/patpat, message standard "ignorer hors dev"). + Serveur arrete apres test (port 25565 libere), eula.txt restaure a false, + server.properties/packetfixer.properties restaures (le boot ne change que leurs timestamps). +- Client/mod : ./gradlew runClient dans mods/pala/ : NON LANCE (session : pas d'affichage ; screenshots + ocular impossibles ici). TODO:runclient : 1 screenshot/feature dans mods/pala/docs/screens/ avant M10. + Raison : environnement headless, a faire sur poste avec X. +- MCP : aucun MCP externe installe ; navigateur integre + vision_analyze utilises (OCR rejete §0). + TODO:mcp-ocular : installer pour la boucle runClient quand l'environnement le permet.