# 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 | M1 : size 8, trapezoid 6-10, placed deep uniform 25-40 (4 biomes deep) | | Titane | titane_ore [PORTE] | titane_ingot [PORTE] | titane_ore_block [PORTE] | deep ocean + grottes, filons 1-8, couches 6-10 | M1 : idem amethyste. 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. CLOS 2026-10-19 ~02:40 (verifie sans changement : tailles 4/8/3/4 et max 18/25/33/18 deja conformes dans feature/*.json + placed_feature/*.json ; seule la borne max deep 40 reste UNVERIFIED : wiki dit "a partir de la couche 25" sans max). Lecon M1 VERIFIEE au boot : minecraft:triangle N'EXISTE PAS en 26.3 (crash datapacks) → trapezoid. ### 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 : ce n'est PAS un item isole mais un SYSTEME (grinder multibloc 26 blocs + lave, tetes broadsword/ fastsword/hammer, 4 modifieurs). Releve d'une vague M-machines future, pas d'un ajout unitaire. - 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 : TRANCHE M3 (grep+legacy) : les textures chervil.png/chervils.png sont deja utilisees par okami (seeds=fruit, VERIFIE models), aucun asset okami* n'existe, et le mapping crusher legacy donne okami->titane = le role wiki du chervil ("donne des lingots de titane", corpus VERIFIE). Hypothese : chervil (wiki actuel) == okami (legacy). RESTE : confirmation visuelle en jeu (comparer chervils.png au fruit chervil du wiki) avant de clore. Raison : pas de doublon cree sans preuve. ### 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 : 15 nommes (pog-os CLOS par M2-complement : OS 11/21/26/31 implemente ; grep : ocr-fiable, worldgen-couches, broadsword, crafts-machines, chervil, commandes-exactes, ghost, luckperms, runclient, mcp-ocular, shebang, java-home, craft-xp, smelt-xp, crusher-xp) + 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). - M0 LIVRE 2026-10-18 23:35 (commit 86cc852, pousse) : package core (PalaConfig JSON rechargeable 22 entrees minerXp wiki, PalaStorage joueurs JSON + flush 5 s, PalaPermissions rangs+noeuds, PalaJobs moteur XP/niveaux, PalaCore lifecycle), /pala reload|info|rank, /jobs, /nether gate mineur niv.3, hook XP dans PalaToolEvents. VERIFIE : ./gradlew compileJava+build SUCCESSFUL, boot serveur Done (0.355s), "Pala core charge (config creee par defaut)", config/pala.json generee (6 cles), 0 ERROR/Exception au log. Deploys : server/mods/pala-0.2.1.jar. - Build mod : TOUJOURS via shell racine avec JAVA_HOME redirige (le shell.nix positionne JAVA_HOME sur un JDK 8, Gradle 9 exige 17+). Commande VERIFIE : cd mods/pala && nix-shell /shell.nix --run "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java)))); ./gradlew build". TODO:java-home : fixer shell.nix racine (export JAVA_HOME jdk25) pour ne plus bricoler. Raison : decouvert en testant (3 essais). - M1 LIVRE 2026-10-18 23:40 : worldgen amethyste/titane calibre wiki (size 8, trapezoid 6-10, placed deep 25-40 + injection 4 biomes deep ocean), /pala orestats (scan + histo Y). VERIFIE : build SUCCESSFUL, boot Done (0.345s), config persistee ("config existante"), 0 ERROR/Exception/datapack au log. UNVERIFIED en jeu : /pala orestats (pas de joueur connecte pendant le test) + distribution reelle sur nouveaux chunks. - M2 LIVRE (partiel) 2026-10-18 23:45 : tooltip XP POG via composant LORE serveur (ItemLore verifie au javap ; niveau + "XP : x / seuil" maj a chaque casse, ligne MAX au niv.25 ; conserve sur evolution). Craft POG VERIFIE dans data (pattern "#AB/C/C" = 1 pioche amethyste + 1 paladium + 1 titane + 2 sticks paladium, conforme wiki). Seuils legacy conserves (25..3500). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED : affichage tooltip en jeu (pas de joueur). TODO:pog-os CLOS (M2-OS livre : one-shot 11/21/26/31). - M2-OS LIVRE (commit 5141e38) : one-shot POG aux paliers wiki 11/21/26/31 via PlayerBlockBreakEvents.BEFORE (destroyBlock + annulation casse normale). ECART documente : pas d'XP POG/mineur sur les blocs one-shottes. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. - M3 LIVRE 2026-10-18 23:51 : crusher fidele legacy (fruits->lingots : eggplant/amethyste, okami/titane, kiwano/paladium, orange_blue/nugget endium ; fuels = 5 mixed coals, creative infini, conso 20 %/tick, luck 1/128, auto-generate a 1.0 ; NE cuit plus de minerais) + furnace accepte mixed coals + gate fermier 8 a l'ouverture du crusher. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu : cycle fruit->lingot avec joueur, gate a fermier<8. - M5a LIVRE 2026-10-19 ~00:30 : XP chasseur (AFTER_DEATH verifie au javap : passifs 14@0, poulpe 10@0, creeper 40, wither 1000, gates niveau) + fermier (ble 1.5@0, patate 2@2, carotte 2.5@2, pasteque 4@3, citrouille 5@6, eggplant 10@8, okami 20@12, kiwano 50@16 ; maturite age=max). Config auto-complete les vieilles pala.json (detection par cles, pas par null : Gson utilise le constructeur no-args donc les champs absents gardent leurs defauts — VERIFIE au boot : 13 cles persistees). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu : gains XP avec joueur (pas de joueur connecte). TODO:craft-xp, TODO:smelt-xp (aucun event serveur dans fabric-api, mixin requis), TODO:crusher-xp (attribution : stocker UUID poseur, M5b). - M4a LIVRE (meme vague) : recettes machines data-driven (crusherResults/Fuels, furnaceSmelts/Fuels en config, /pala reload live, ids invalides ignores). VERIFIE : build SUCCESSFUL. - M1-complement LIVRE 2026-10-19 ~01:55 : les 3 marteaux font du 3x3 (amethyst/titane oublies par le portage, seul le paladium avait l'effet). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. - M-TEXFIX LIVRE 2026-10-19 ~02:20 : fix damier de TOUS les items (il manquait les definitions assets/pala/items/*.json exigees en 26.3 par ClientItemInfoLoader — 162 generees, une par models/item). VERIFIE en jeu : minerai texturé en main, epee orange complete, 0 damier (visfix1/visfix2). Lecon : models/item seuls ne suffisent plus ; le missing est silencieux. - M-cmd-util LIVRE 2026-10-19 ~02:45 : /craft (table portable via CraftingMenu+SimpleMenuProvider, APIs verifiees javap) + /spawn (tp spawn overworld, delai wiki 3 s via END_SERVER_TICK, file UUID). Refacto teleport() vers teleportPlayer(). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (pas de joueur). - M-tpa LIVRE 2026-10-19 ~02:50 : /tpa (demande, expire 60 s) + /tpaccept (tp dans 3 s wiki + invisibilite 15 s wiki via MobEffectInstance, APIs verifiees javap) + /tpdeny. Bug corrige avant build : tp vers la cible (TpaTask), pas vers soi-meme. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (2 joueurs requis). - M-msg LIVRE 2026-10-19 ~02:55 : /msg + /r (wiki commandes, suivi dernier expediteur par destinataire, double sens). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (2 joueurs requis). - M-infos LIVRE 2026-10-19 ~03:00 : /serv /wiki /discord /boutique /couleurs (wiki commandes, liens en config : serverName/wikiUrl/discordUrl/shopUrl). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur, 17 cles config persistees (auto-complete +4). UNVERIFIED en jeu. - M-eco LIVRE 2026-10-19 ~03:05 : /pay (transfert, fonds verifies) + /baltop (top 10 via PalaStorage.topMoney) + /balance (solde). ECART : connectes uniquement (wiki suggere pseudo offline). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (2 joueurs). - M-grinder-1 LIVRE 2026-10-19 ~03:10 : 3 blocs (block/casing/frame, textures legacy cablees) + 9 items (5 patterns, socket, orb_knockback, broadsword +9, fastsword +7 ; vitesses UNVERIFIED) + 30 assets (blockstates/models/definitions items/lang 221 cles) + 3 crafts (pattern frame UNVERIFIED : positions titane non visibles wiki). GUI + multibloc + tetes + modifieurs : M-grinder-2/3. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED visuel (session client M-grinder-2). - M-grinder-2 LIVRE 2026-10-19 ~03:15 : detecteur multibloc PalaGrinder (3x3x3, totaux wiki 20F/5C/1B/1L recalcules, 4 rotations, lave source exigee) + diagnostic clic droit sur le coeur. GUI + tetes + modifieurs : M-grinder-3. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED : orientation exacte du B (tableau wiki ambigu). - Client/mod : boucle visuelle OPERATIONNELLE 2026-10-19 (Xvfb :99 + runClient SDL x11 + captures Java Robot + pilotage xdotool + vision_analyze) : menu, Select World, monde New World (creatif, cheats), /give, pose de bloc, inventaire, F3+T. Screens : scratch vis*.png. docs/screens/ : LIVRE (LOG.md + 8 screens : menu, monde, /give, pose, inventaire, pack test). Lecon : SDL prend wayland par defaut (forcer SDL_VIDEODRIVER=x11), xdotool click --window ignore par SDL (utiliser XTEST au pointeur), ffmpeg local sans x11grab (Robot a la place). - 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.