2 Patchs FR
exo edited this page 2026-07-19 20:13:48 +02:00
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.

FR | EN

Référence des patchs

Référence patch par patch du fork Folikaii (base Lophine 26.2, branche ekaii-26.2). Deux sens de lecture : patch → option (cette page) et option → patch (Options).

Sources consolidées : PATCHES.md, PICKS.md, GAP-ANALYSIS.md, BATCH5-PORTED.md, CENSUS.md. Les clés et défauts ont été re-vérifiés dans les modules fr.ekaii.config.modules de l'arbre source (annotations @ConfigClassInfo/@ConfigInfo).

Vue d'ensemble

  • 224 patchs minecraft dans luminol/lophine-server/minecraft-patches/features/ : 00010132 = base Lophine (résumé en fin de page, détail dans CENSUS.md), 01330224 = 92 patchs Folikaii (plus un changement direct src/main sans n° de patch — pick 1.9, voir « Fixes races Folia »).
  • Côté Folikaii également : 5 paper-patches serveur (00240028 : copper-golem AR, criterion thread-check, canSee, sculk-exp, tile-snapshot) et 2 patchs API (0015 EntityDamageEvent, 0016 sculk-exp).
  • Principe de togglabilité : tout comportement observable ajouté est togglable via l'instance config ekaii (ekaii_config/ekaii_global_config.toml, commande /ekaiiconfig). Défauts code = stock/vanilla (4 exceptions documentées dans Options). Les micro-optimisations strictement iso-comportement sont toujours-on et signalées comme telles.
  • Attribution GPLv3/AGPL : chaque .patch conserve le From: de l'auteur d'origine + une ligne de provenance du projet source.

Synthèse par groupe

Groupe Patchs Nb Gain global Togglable
Fixes races Folia 0135, 01430150, 0182, 0187, 0205, 0224 13 Stabilité multi-région : crashs/CME/NPE déclenchables, corruption RegionFile, races d'écriture hors-région Partiel — 7 gated (défaut off), 6 pure-fixes toujours-on
Anti-lag-machine et anti-dupe (anarchy) 0158, 01830185, 01880189, 0201, 0206, 02220223 10 Neutralise les lag machines (sable, TNT, portails, projectiles, spawns) et ferme une classe de dupe hopper Oui — tout gated (2 toggles défaut-ON : 0184, 0185)
Opts perf iso-comportement 01360142, 01590180 (hors gated), 0186, 01900200 (hors gated), 0219 40 CPU/allocations/réseau, résultat identique au stock Non — toujours-on assumé et signalé (dont un cas sensible : 0159)
Opts perf gated (effet observable léger) 01330134, 0152, 0181, 0203 5 Perf entités/IA/XP avec effet gameplay mesurable Oui — dont 1 défaut-ON piégé (0134)
Features gameplay 01540156, 0194, 0202, 0216 6 Curseurs gameplay/politique (défaut = vanilla) Oui
Protocoles clients et réseau 0153, 0157, 0199, 0213, 0215 5 Flush réseau, filtrage packets, anti-ESP, keepalive, chat non-reportable Oui
Debug / commandes 0151, 0204, 02070208, 0220 5 Outils admin (diag réseau) et builders (/clone, /spreadplayers, /schedule) Oui (0207 lu au boot uniquement)
Preprod-off (bake rbtest requis) 02090212, 0214, 02170218, 0221 8 Perf/anti-cheat à valider avant prod Oui — tous off par défaut (0211 : défaut = stock)

Total : 92 patchs (01330224).


Détail par patch (01330224)

Colonnes : n° | nom court | source (fork + auteur d'origine) | ce que ça fait | gain | toggle (clé + défaut + profil). Profils : C = creaclone (créatif whitelist), A = anarchy (eternel.eu, cracked).

Fixes races Folia (13 + 1 hors-pile)

Nom Source Ce que ça fait Gain Toggle
0135 RegionFile concurrent mutation race ekaii (exo), ex-0075 du fork 26.1.2 Verrouille la mutation concurrente des RegionFile sous régions Folia ; couche complémentaire des fixes upstream BufferedLinear fix-corruption chunks (!) PAS de toggle — toujours-on assumé (fix de corruption)
0143 EntitySelector AABB cross-région Canvas (989ae18b) @e avec AABB : collecte sans AABB puis filtre intersects+predicate au lieu de lire hors région fix-crash (thread-check trip) fixes.entity_selector_region_safe.enabled = false ; ON C+A
0144 FishingHook cross-région Canvas (c0939dba) Vérifie TickThread.isTickThreadFor(hooked) au tick de la canne quand l'entité accrochée a changé de région fix-crash fixes.fishing_hook_cross_region.enabled = false ; ON C+A
0145 TamableAnimal télé owner cross-région Canvas (98102b62) getBlockStateIfLoaded + bypass du check collision hors-région dans canTeleportTo/maybeTeleportTo fix-crash + restaure la télé vanilla des animaux apprivoisés fixes.tamable_cross_region_teleport.enabled = false ; ON C+A
0146 (+paper 0025) Criterion triggers async → CME Canvas (8aba8c2b + 14553ed3) ensureTickThread/scheduleOrExecute dans SimpleCriterionTrigger, ServerRecipeBook, LightningBolt, LivingEntity, PlayerAdvancements award/revoke fix-crash (CME advancements) pure-fix toujours-on
0147 disconnectPos NPE Canvas (f7d6134b) Guard null 1 ligne dans RegionizedWorldData.cleanUpConnection fix-crash pure-fix toujours-on (candidat upstream Lophine)
0148 LevelStorageSource.resources → ConcurrentMap Canvas (97d6fd44) HashMap → Maps.newConcurrentMap() (computeIfAbsent appelé multi-thread) fix-race pure-fix toujours-on (candidat upstream Lophine)
0149 Respawn anchor cross-région Canvas (05a68895) Consommation de charge d'anchor réécrite en tâche region-safe (RegionScheduler/loadChunksAsync) fix-race (écriture blockstate hors-région) fixes.respawn_anchor_cross_region.enabled = false ; ON C+A
0150 scheduleOrExecute player ops Canvas (59c880e3) Remplace schedule(+1 tick) par scheduleOrExecute (MinecraftServer, ExperienceCommand, RecipeCommand…) fix-race ; timing intra-tick modifié, d'où le toggle fixes.schedule_or_execute.enabled = false ; ON C+A
0182 End gateway region-safe Mint 0008 Skip des positions hors tick-region dans la recherche de sortie de gateway fix-crash Folia (End) fixes.end_gateway_region_safe.enabled = false ; ON A
0187 Bossbars thread-safe Canvas (a008767c), adaptation lock-based synchronized(playerLock) sur ServerBossEvent/CustomBossEvent ; orthogonal aux bars Luminol 0044 (vérifié) fix-crash CME réel (dragon End multi-région, bossbars plugins) pure-fix toujours-on
0205 updateResources region-safe Canvas (2624a2dc) reloadResources par joueur via taskScheduler ; reload/Datapack#setEnabled hors chemin sûr → UOE explicite fix-race (datapack reload) pure-fix toujours-on
0224 Cross-region move unwind (>seuil) Canvas (8996ca32, BaconCat__) Mouvement single-tick ≥ threshold_blocks dont la destination sort de la région → unwind du tick (exception de contrôle sans stack trace) + re-route en télé async sur le scheduler d'entité, au lieu d'un setPos hors-région. Deux gardes : branche noPhysics (delta brut) et post-collide() (déplacement résolu) ; balayage du chemin complet, exclusion vehicles/passengers et NaN. Réutilise la plomberie unwind de la base Lophine (patch 0022 fix_high_velocity_issue : même exception + même catch télé-async, toggle indépendant) fix-crash (violation d'ownership région : pearl guns / TNT longue portée) fixes.cross_region_move_unwind.{enabled=false, threshold_blocks=30} ; OFF partout, tester pearl/TNT cannons longue portée avant tout ON anarchy

Hors-pile (src/main, pas de n° de patch) — pick 1.9 « shutdown reroute » (canvas ed2a35d0, Dueris) : LevelSubRegionShutdownThread (unload à chaud d'un niveau, Luminol) reçoit un UncaughtExceptionHandler qui, au lieu du log-seul hérité de RegionShutdownThread, escalade en arrêt serveur propre planifié sur le global tick (RegionizedServer.addTask(stopServer)). Sans ça, un throwable non attrapé sur ce thread abandonnait l'unload à mi-course (write lock tenu, callback jamais complété) = serveur zombie. Pure-fix toujours-on (chemin d'erreur uniquement). Le bug Canvas original (stop complet exécuté inline sur le thread de monde) ne peut pas se reproduire sur cette base — stopServer() se re-route via haltServerRegionThreading() ; seule la moitié « escalade + reroute » du pick s'applique.

Note pile vs picks : le pick 1.9 (reroute stopServer → global tick, Canvas ed2a35d0) n'a jamais été porté (divergence documentée dans RECOMMENDATIONS §1.6) ; idem pick 4.2 (move-unwind >30 blocs, Canvas 8996ca32).

Anti-lag-machine et anti-dupe — cible anarchy (10)

Nom Source Ce que ça fait Gain Toggle
0158 Throttle chunk-loads projectiles Canvas (587a40e5 + fixup NPE) Limite les sync chunk-loads par projectile et par tick de région ; retire le projectile au-delà du quota ; ender pearls exclues (stasis protégées) anti-lag (pearl/arrow chunk-load spam) optimizations.projectile_chunk_load_throttle.{enabled=false, max_loads_per_tick=10, max_loads_before_removal=10, exclude_ender_pearls=true} ; ON A après bake
0183 Don't-save falling block / primed TNT Leaf via Mint 0009+0042 Override shouldBeSaved : falling blocks en vol et TNT amorcée non persistés au save/unload anti-lag (neutralise les lag machines sable/TNT sauvegardées ; primed_tnt casse les canons cross-restart — décision gameplay) optimizations.dont_save_entity.{falling_block=false, primed_tnt=false} ; falling_block ON A
0184 Hopper stack aliasing dupe fix Paper#11945 via Mint 0012 copy(true) avant shrink/grow dans HopperBlockEntity.addItem anti-dupe (ferme une classe de dupe/corruption d'items) fixes.hopper_stack_copy.enabled = true (défaut ON, laisser)
0185 Zombie reinforcements no chunk load Leaf/Paper PR via Mint 0013 Supprime les sync chunk loads au placement des renforts zombies anti-lag (fermes à zombies) fixes.zombie_reinforcement_no_chunk_load.enabled = true (défaut ON, laisser)
0188 Sakura explosions (port partiel) Sakura 0005+0026 (Samsuik) Gated : origin-block early-exit + block-counting cannon ; toujours-on : tri des rays bit-identique. Reste (SpecialisedExplosion batching, caches obstruction/densité) reporté — dépend du scheduler per-level Sakura, non régionisé anti-lag (chaînes TNT massives = cible n°1 eternel) optimizations.sakura_explosions.enabled = false ; ON A après bake rbtest
0189 Falling block column limit Sakura 0028, adaptation Folia tick-stamped Plafond par colonne des falling blocks instantanés par tick ; non destructif (contrairement au throttler Kaiiju 0027 de la base) anti-lag (cascades sable/gravier) anti_lag.falling_block_column_limit.{enabled=false, limit=32} ; ON A
0201 Throttle failed spawn attempts Leaf 0200 / Paper PR 11099 Étrangle par catégorie les tentatives de spawn qui échouent en boucle dans un même chunk perf/anti-lag spawning (complète 0163/0169) optimizations.throttle_failed_spawn_attempts.{enabled=false, failed_attempts_threshold=1200, throttled_ticks_per_spawn_<catégorie>}
0206 Portal entity blacklist Canvas (11b39dc1) Blocage des entités non-joueur dans nether portals / end portals / end gateways anti-lag (lag machines entité-dans-portail) fixes.portal_entity_blacklist.{nether_portals, end_portals, end_gateways} = false ×3 — décision : tout OFF (nether ON casserait les gold farms portail)
0222 Weak-chunk guard — random stroll Leaf 0068 (Gale/MultiPaper) RandomStrollGoal ne choisit plus de destination dans des chunks non entity-ticking ; complémentaire de la garde région Folia (statut ENTITY_TICKING ≠ ownership) anti-lag (mobs qui tirent des chunks faibles) anti_lag.entity_weak_chunk_guard.enabled=false + sous-clé random_stroll=true ; ON A après bake
0223 Weak-chunk guard — projectiles Leaf 0287 Projectiles stoppés/retirés avant d'entrer dans un chunk non-ENTITY_TICKING ; pearls exclues (upstream, exclusion exigée par GAP) anti-lag (projectile chunk-loading) même module : sous-clé projectiles=true (inerte tant que le master enabled est off)

Opts perf iso-comportement — toujours-on, PAS de toggle (40)

Résultat identique au stock (bit-identique ou pratiquement) ; assumées always-on et signalées ici. (!) 0159 est le seul cas lourd : opt interne du chunk-system, toujours-on par construction — le seul contrôle est de ne pas déployer un jar non-baké en prod anarchy (bake chunk-loading rbtest).

Nom Source Gain
0136 VarInt/VarLong write Gale via Mint 0034 Hot path d'écriture de chaque packet (octets identiques, testé Velocity)
0137 SynchedEntityData packDirty Leaf via Mint 0036 Par entité trackée/tick (500+ bateaux creaclone)
0138 BlockEntityType isValid Leaf Micro-opt tick block entities
0139 Remove stream — visible effects filter Leaf Allocations effets d'entités
0140 Remove stream — GolemSensor Leaf Sensor IA villageois
0141 Skip distanceToSqr ServerEntity SparklyPaper via Mint 0037 Hot path sendChanges du tracker
0142 CompoundTag memory footprint Mint 0055 Empreinte mémoire NBT (iso vérifié à la relecture)
0159 ThreadedTicketLevelPropagator (!) Leaf via Mint 0038 Propagation des ticket levels Moonrise multi-thread — batch 4, toujours-on, bake rbtest exigé avant prod
0160 Cache canHoldFluid Leaf Hoppers/fluides
0161 Skip calculs joueur immobile Lithium Tick joueur
0162 fastutil swaps Lithium Collections hot paths
0163 Nearby players for spawning Leaf Boucle de spawn
0164 Baby villager sensor Leaf Sensor IA
0165 Remove stream — enough-depth Leaf IA reproduction/pathing
0166 Remove stream — villagers Leaf IA villageois
0167 Remove stream — BehaviorUtils Leaf IA comportements
0168 Remove stream — trial spawner Leaf Tick trial spawners
0169 Nearby alive players for spawning Leaf Boucle de spawn
0170 Cache random tick block status Leaf Random ticks (crops, etc.)
0171 SetLookAndInteract / NearestVisibleLivingEntities Leaf IA lookups
0172 Remove streams — MobSensor Leaf Sensors IA
0173 LinearPalette getSerializedSize Leaf via Mint 0062 +76 % sur la sérialisation de palettes
0174 Rewrite ClientboundLightUpdatePacketData Leaf via Mint 0063 Écriture des packets lumière 1318× (roundtrip wire-identique testé)
0175 BlockEntity ticking isRemoved Leaf Check tick BE
0176 Combined heightmap update Lithium via Mint 0065 Block updates
0177 C2ME Reduce Allocations (OreFeature) C2ME via Mint 0073 Worldgen nether
0178 Faster hash palette Lithium via Mint 0079 Palettes chunks
0179 Block-destruction packets partagés Gale/SportPaper via Mint 0045 Un packet partagé au lieu d'une alloc/joueur ; edge signalé : BlockBreakProgressUpdateEvent non émis si 0 joueur à portée
0180 Noise generation Gale/C2ME via Mint 0001 Hot path worldgen (nether), bit-identique
0186 Villager golem checks Mint 0074 wantsToSpawnGolem sans stream + early-exit (iron farms)
0190 AI stream removal Mint 0075 Streams retirés de 11 classes IA (509 lignes iso)
0191 RecipeManager optimisé Carpet-Fixes via Mint 0046 getRecipeFor jusqu'à 3× (iso-résultat)
0192 (+paper 0026) canSee tracker SparklyPaper via Mint 0052+sp-0006 canSee spécialisé dans ChunkMap (hurt/sendChanges)
0193 InsideBrownianWalk Leaf via Mint 0058 Fisher-Yates au lieu de stream+shuffle (BlockAreaUtils copié)
0195 Tracker player updates Sakura 0016 Rescan joueurs du tracker seulement si nécessaire (gate déplacé dans newTrackerTick Folia)
0196 Ban-list date format Leaf 0173 DateTimeFormatter thread-safe + plus rapide
0197 Bulk writeLongArray Leaf 0188 Écriture groupée des palettes au chunk load
0198 Skip merge stacks pleins Leaf 0303 Skip des checks de fusion d'items pleins (overstack-aware)
0200 Respawn anchor explosion Leaf 0296 Hot path des anchor bombs (PvP quotidien eternel)
0219 Cached iterate-outwards Lithium via Mint 0049 Cache BlockPos.iterateOutwards (POI/pathfinding) ; ordre d'itération byte-identique, cache thread-safe régions

Opts perf gated — effet observable léger (5)

Nom Source Ce que ça fait Gain Toggle
0133 (+paper 0024) Copper golem activation range ekaii (EllipsiaLePoulet, exo) Activation range spigot distinct pour les copper golems anti-lag golems, réglable par monde spigot.yml entity-activation-range.copper-golem = 32 (défaut iso) — réglage, pas un on/off
0134 Boat launcher sleep ekaii (exo) Endort les clusters de ≥ cluster_threshold bateaux des machines launcher perf créatif (machines 500+ bateaux) (!) luminol_config (pas ekaii_config) : optimizations.boat_launcher_sleep.{enabled=true, cluster_threshold=50, cluster_check_interval_ticks=100}défaut ON piégé : anarchy doit poser false explicitement
0152 Dynamic Activation Brain Pufferfish via Mint 0080 Throttle du tick des brains IA selon la distance au joueur le plus proche perf IA (villageois, hordes) optimizations.dynamic_activation_brain.{enabled=false, start_distance=12, activation_distance_mod=8, maximum_activation_prio=20} ; C ON-après-test, A OFF
0181 Suffocation optimization Pufferfish via Mint 0005 Skip isInWall 9 ticks/10 quand l'entité est invulnérable perf (milliers d'entités) optimizations.suffocation_optimization.enabled = false ; A ON-après-test
0203 Clump XP orbs DivineMC 0046 (mod Clump) Agrège les orbes XP de valeurs différentes en un orbe porteur anti-lag farms XP (gold/enderman) optimizations.clump_xp_orbs.enabled = false ; ON A après test mending rbtest

Features gameplay (6)

Nom Source Ce que ça fait Gain Toggle
0154 MC-261810 firework void Canvas (1771aead) Override onBelowWorld : la fusée n'est pas discard sous la bedrock (si entité attachée same-region) gameplay culte anarchy (voyage fusée sous le toit/bedrock) fixes.mc261810.enabled = false ; C OFF, A ON
0155 MC-298464 Hoglin combat-tracker leak Canvas (360a92fc) Fix du leak combat tracker au CHANGED_DIMENSION fix-leak mémoire (nether 1,3 To plein de hoglins) fixes.mc298464.enabled = false ; C OFF, A ON
0156 Player save fail-hard Canvas (2b498431) Crash volontaire avec CrashReport complet quand une save joueur échoue (au lieu de log-and-continue) anti-dupe (empêche le dupe-par-rollback) fixes.player_save_fail_hard.enabled = false ; A JAMAIS ON (crash-loop armable via NBT forgé sur cracked) ; C ON = décision
0194 Out-of-order chat check togglable Mint 0018 Rend débrayable le kick vanilla OUT_OF_ORDER_CHAT QoL (kicks parasites sous lag) misc.out_of_order_chat_check.enabled = true (= vanilla) ; false envisageable sur A si kicks parasites
0202 Copper bulb / crafter 1gt DivineMC 0053/0054 Restaure le délai 1 gametick pré-nerf : bulb via scheduled tick 1gt, crafter à 1gt au lieu de 4 (bug upstream de flag partagé corrigé au port) gameplay tech (demande récurrente communauté redstone) gameplay.copper_bulb_1gt.enabled = false + gameplay.crafter_1gt.enabled = false (= vanilla)
0216 Combat old-PvP Canvas (sous-ensemble décidé) Spoof ATTACK_SPEED côté client (supprime le cooldown 1.9, délai de coup façon 1.8) + Blast Protection legacy pré-1.21 (0.15/niveau) gameplay (impact radical méta crystal PvP) — pur curseur gameplay.combat.{disable_attack_hit_delay=false, legacy_blast_protection=false} (= vanilla moderne)

Protocoles clients et réseau (5)

Nom Source Ce que ça fait Gain Toggle
0153 Alternative keepalive Purpur (MIT) via Canvas features/0001 Keepalive multi-pending façon Purpur : tolère les connexions instables sans kick agressif QoL réseau (bots/connexions cracked instables) function.alternative_keepalive.enabled = false ; A ON envisageable après bake
0157 Region tick flush Canvas (ebcecde9) Suspend/resume du flush Netty par tick de région (flush groupé au lieu de par-paquet) ; resumeFlushing en finally vérifié perf réseau (syscalls sous charge) optimizations.region_tick_flush.enabled = false ; A ON après bake rbtest (interaction Lophine 0083 mt-queue à valider sous spam bots)
0199 Filter entity motion packets Canvas/Leaf 0293 Skip des ClientboundSetEntityMotionPacket sauf entités qui en ont visuellement besoin (items en mouvement, ender eyes, squids, shulker bullets) perf bande passante optimizations.filter_entity_motion_packets.enabled = false
0213 Packet obfuscation Slice/Sakura 0007 foreignValue par entité : les données synched vues par les autres joueurs sont obfusquées (double-send du gating naïf corrigé au port) anti-cheat (anti-ESP) + réduction packets function.packet_obfuscation.enabled = false (preprod ; tester les mods légitimes avant ON)
0215 No Chat Reports server-side Canvas Strip des signatures chat + chat joueur converti en system chat : messages non-reportables à Mojang confidentialité joueurs function.no_chat_reports.enabled = false strict (valider client vanilla + LibreLogin avant tout ON)

Debug / commandes (5)

Nom Source Ce que ça fait Gain Toggle
0151 NetworkAnalyser Mint 0067 /networkanalyser start/stop : analyse on-demand du trafic par connexion (cap 10k conn, cleanup au disconnect, coût nul à l'arrêt) diag bots/flood function.network_analyser.enabled = false ; C OFF, A ON (l'analyse reste on-demand)
0204 Disable criterion triggers Canvas features/0002 No-op des 23 SimpleCriterionTrigger — plus d'octroi d'advancements (global, Canvas était per-world) perf (advancements inutiles avec bots cracked) function.disable_criterion_triggers.enabled = false ; A ON envisageable (décision)
0207 Restore /clone Canvas (9f444cf0) /clone réactivé via snapshot region-schedulé (~230 lignes autonomes). La moitié /data du commit Canvas non prise : déjà gated en base (Luminol experiment.command.enable_data_command) QoL builders majeur function.restore_clone_command.enabled = false ; ON creaclone — lu au boot uniquement
0208 Restore /spreadplayers Canvas (9f444cf0) /spreadplayers region-safe QoL même toggle que 0207
0220 /schedule restauré Mint 0061 (résiduel) Ré-enregistre /schedule sous Folia (seul reste commenté en base ; /scoreboard déjà couvert par CommandConfig Lophine) QoL datapacks experiment.schedule_command.enabled = false strict (thread-safety du timer non validée)

Preprod-off — bake rbtest requis avant tout ON (8)

Nom Source Ce que ça fait Gain Toggle
0209 FasterRandomSource Leaf via Mint 0050 Xoroshiro128++ ~5× pour le random non-worldgen ; moitié worldgen (sp-0003) exclue par décision — seed publique eternel, slime chunks vanilla perf RNG optimizations.fast_rng.{enabled=false, random_generator="Xoroshiro128PlusPlus", use_direct_impl=false}
0210 (+paper 0027, api 0016) Sculk catalyst exp fix Leaves via Mint 0054+sp-0004+api-0006 XP correcte aux sculk catalysts — un fix en 3 parties (mc+paper+api) fix gameplay fixes.sculk_catalyst_exp.enabled = false
0211 (+paper 0028) Tile entity snapshot creation Airplane via Canvas Block#getState()/BlockEntity#getOwner() sans snapshot quand désactivé (contrat API changé) ; moitié MTB-convert-cache du commit hors périmètre gros gain plugins polleurs (CoreProtect, AEF, hoppers) optimizations.tile_entity_snapshot_creation.snapshot_creation = true (= stock) ; false à mesurer avec CoreProtect/AEF sur rbtest
0212 C2ME worldgen extras C2ME via DivineMC 0009/0052/0059 (couvre Leaf 0174) Aquifer rewrite (grid précomputé, 3-closest sampling), beardifier (itération array, jigsaw arrays), cache biome End thread-local ; hunks prouvés identiques = toujours-on perf worldgen optimizations.worldgen.{aquifer_optimization=false, beardifier_optimization=false, end_biome_cache=false, end_biome_cache_capacity=1024} — aquifer NON bit-identique : validation seed-identique rbtest obligatoire avant tout ON
0214 Lithium equipment tracking Lithium via Mint 0066 Dirty-flag des équipements, évite le re-scan par tick ; réutilise l'infra change-tracking Leaves de la base ; fuite de subscribers du port Mint corrigée perf (500+ bateaux, hordes) optimizations.equipment_tracking.enabled = false — RESTART requis
0217 TT20 lag compensation TT20 via Leaf 0168 (AGPL) Fluides compensés au TPS réel — câblé sur le TPS per-région Folia QoL sous lag (double tranchant anarchy : accélère aussi les machines) function.lag_compensation.{enabled=false, enable_for_water=false, enable_for_lava=false}
0218 Rail optimization FxMorin via Leaf 0226 Propagation des powered rails réécrite single-pass ; lectures region-guarded, BlockRedstoneEvent conservé perf redstone rails optimizations.rail_optimization.{enabled=false, activation_range=8} (8 = vanilla) — politique anarchy redstone=OFF ; C à tester sur machines réelles
0221 Raytrace AntiXray Leaf 0202 AntiXray par raytracing ; SDK vendoré dans lophine-api, zéro dépendance externe anti-cheat (défense stash-hunt supérieure) anti_xray.raytrace.enabled = false strict (coût CPU à mesurer ; en réserve si le stash-hunting redevient un problème)

Reportés documentés (pas de patch, tickets ouverts) : Sakura cannon entity merging (scheduler per-level non régionisé), Petal async pathfinding (lectures monde hors tick-thread), C2ME Density Function Compiler (bytecode runtime, seed publique), smooth teleports (dépend d'un flag API Slice), Pufferfish async mob spawning (racé par construction sous Folia). Détail : BATCH5-PORTED §2.3 et STATUS.md.


Base Lophine (00010132) — résumé et pointeur

La base n'est pas re-documentée patch par patch ici : voir CENSUS.md (fiche par patch, verdicts) et census.json (machine-readable). 171 fiches (132 mc + api/paper/build) : 72 base-ok, 57 base-config-off, 17 base-config-on, 14 base-concern, 11 base-missing-toggle.

Par grandes familles :

  • Fixes Folia (~35) : races region-threading (brains, leash, pearls cross-dimension, portails projectiles, dragon), corrections scheduler/volatile, /save-all et /datapack réactivés region-safe.
  • Perf absorbées (~30) : Gale, Leaf (radix sort sensors, PatchedDataComponentMap, move packets), Lithium sleeping block entities, Pufferfish (projectile chunk loading, goal selector), Petal sensor work, Purpur lobotomize, Krypton, SIMD maps.
  • Anti-exploit : portal rate limiter (0050), Kaiiju entity limiter (0027, YAML séparé), secure seed V1/V2 (0052/0053 — jamais sur un monde existant), packet limiter débrayable (0064 — ne pas débrayer), update-suppression catch-crash (0119).
  • Features gameplay Leaves/Carpet : update suppression (01190122, 0126), old-features (raid, explosion, void trade, spawn invuln), fakeplayer /bot (0114), Carpet rules pack (0128), container expansion (0086).
  • Protocoles clients (01020130) : Servux, Syncmatica, Xaero, Jade, REI, BBOR, AppleSkin, PCA, alternative block placement — tous OFF par défaut sauf mention, activation = profil créatif.
  • Config/API/monitoring : système Luminol config, tick regions API, ChunkHot/tpsbar/membar/regionbar, spark builtin désactivé (installer spark standalone).

Les défauts piégés de la base (fakeplayer, boat_launcher_sleep, portal_rate_limit, update-suppression, Syncmatica) sont listés dans Options et Recommandations.


Audit togglabilité

Comportements SANS toggle (toujours-on dans le jar)

46 des 92 patchs n'ont aucun levier config. Trois classes :

  1. Fixes de corruption/races assumés (le fix EST le comportement voulu) : 0135 (RegionFile race), 0146 (+p0025 criterion CME), 0147 (disconnectPos NPE), 0148 (ConcurrentMap), 0187 (bossbars thread-safe), 0205 (updateResources region-safe), + hors-pile le reroute shutdown unload-monde (pick 1.9, changement direct LevelSubRegionShutdownThread, chemin d'erreur uniquement).
  2. Pure-opts iso-comportement (résultat identique au stock, signalées) : batch 2 : 01360142, 01600178 (26 patchs) ; batch 5 : 0179, 0180, 0186, 0190, 0191, 0192 (+p0026), 0193, 0195, 0196, 0197, 0198, 0200, 0219 (13 patchs). Edge documenté : 0179 n'émet plus BlockBreakProgressUpdateEvent quand aucun joueur n'est à portée.
  3. Cas signalé (!) 0159 ThreadedTicketLevelPropagator : opt lourde du chunk-system (batch 4, classée preprod dans PICKS) portée toujours-on par construction. Le seul contrôle est opérationnel : ne pas déployer un jar non-baké en prod anarchy avant le bake chunk-loading rbtest.

Cas hybride : 0188 (Sakura explosions) — la moitié « tri des rays » est toujours-on (bit-identique), le reste est gated. 0133 est un réglage (activation range), pas un on/off.

Divergences pile vs picks (dette RÉSOLUE 2026-07-19)

  • Pick 1.9 (reroute stopServer → global tick, canvas ed2a35d0) : porté en changement direct src/main (LevelSubRegionShutdownThread, hors pile minecraft), pure-fix toujours-on sur chemin d'erreur — détail dans « Fixes races Folia ».
  • Pick 4.2 (move-unwind >30 blocs, canvas 8996ca32) : porté = patch 0224, gated fixes.cross_region_move_unwind.{enabled=false, threshold_blocks=30} (OFF partout ; la base Lophine 0022 fix_high_velocity_issue couvre le même mécanisme sans seuil, toggle indépendant, OFF aussi).
  • Reportés documentés avec tickets : cannon merging Sakura, async pathfinding Petal, Density Function Compiler, smooth teleports, async mob spawning (BATCH5-PORTED §2.3).