Files
mc/PALAMOD_CDC.md
T

552 lines
41 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:<raison> = 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.<nom>. 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.<metier>.
### 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 <repo>/shell.nix --run "bash <repo>/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 <repo>/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 <joueur> (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 <joueur> <texte> + /r <texte> (wiki commandes, suivi
dernier expediteur par destinataire, double sens). VERIFIE : build SUCCESSFUL, boot Done,
0 erreur. UNVERIFIED en jeu (2 joueurs requis).
- 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.