Table of Contents
- Référence des patchs
- Vue d'ensemble
- Détail par patch (0133–0224)
- Fixes races Folia (13 + 1 hors-pile)
- Anti-lag-machine et anti-dupe — cible anarchy (10)
- Opts perf iso-comportement — toujours-on, PAS de toggle (40)
- Opts perf gated — effet observable léger (5)
- Features gameplay (6)
- Protocoles clients et réseau (5)
- Debug / commandes (5)
- Preprod-off — bake rbtest requis avant tout ON (8)
- Base Lophine (0001–0132) — résumé et pointeur
- Audit togglabilité
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.
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/: 0001–0132 = base Lophine (résumé en fin de page, détail dans CENSUS.md), 0133–0224 = 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 (0024–0028 : 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
.patchconserve leFrom: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, 0143–0150, 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, 0183–0185, 0188–0189, 0201, 0206, 0222–0223 | 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 | 0136–0142, 0159–0180 (hors gated), 0186, 0190–0200 (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) | 0133–0134, 0152, 0181, 0203 | 5 | Perf entités/IA/XP avec effet gameplay mesurable | Oui — dont 1 défaut-ON piégé (0134) |
| Features gameplay | 0154–0156, 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, 0207–0208, 0220 | 5 | Outils admin (diag réseau) et builders (/clone, /spreadplayers, /schedule) | Oui (0207 lu au boot uniquement) |
| Preprod-off (bake rbtest requis) | 0209–0212, 0214, 0217–0218, 0221 | 8 | Perf/anti-cheat à valider avant prod | Oui — tous off par défaut (0211 : défaut = stock) |
Total : 92 patchs (0133–0224).
Détail par patch (0133–0224)
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)
| N° | 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)
| N° | 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).
| N° | 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 13–18× (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)
| N° | 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)
| N° | 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)
| N° | 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)
| N° | 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)
| N° | 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 (0001–0132) — 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 (0119–0122, 0126), old-features (raid, explosion, void trade, spawn invuln), fakeplayer /bot (0114), Carpet rules pack (0128), container expansion (0086).
- Protocoles clients (0102–0130) : 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 :
- 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). - Pure-opts iso-comportement (résultat identique au stock, signalées) : batch 2 : 0136–0142, 0160–0178 (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
BlockBreakProgressUpdateEventquand aucun joueur n'est à portée. - 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 0022fix_high_velocity_issuecouvre 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).
Français
English