createtickcontroller-1.21.1-1.4.15.jar
Curse Maven Snippet
What's new
# 📋 Create Tick Controller — Changelog 1.4.14 → 1.4.15
**TL;DR** : deux mises à jour. La **1.4.14** est côté **serveur** (profil spark de production du 28/08 + le flood de log qui a fait tomber le serveur le 23/08) : deux corrections de la 1.4.13 et deux nouvelles optimisations. La **1.4.15** est côté **client** : un nouveau groupe **« Ragdolls Sable »** dans les options vidéo Sodium, qui supprime l'essentiel de la perte de FPS liée aux ragdolls (Sable Ragdolls + Ragdoll Reactions).
---
# 1.4.14 — serveur
## đź”§ Fix : le cache des scans SimulatedCoasters ne servait jamais
Le cache introduit en 1.4.13 était vidé **entièrement à chaque tick physique** : SimulatedCoasters appelle son invalidation pour chaque sous-niveau qui n'est pas un kart (donc pour chaque vaisseau Sable), et notre mixin répondait par un `clear()` complet. Résultat : les scans de plot coûtaient encore 8,3 % du thread serveur. L'invalidation ne retire maintenant que le plot du sous-niveau concerné.
## 🔧 Fix : le fast-path bordure de monde Sable plantait sur serveur dédié
La résolution réflexive de `getContainer(Level)` chargeait par ricochet une classe client (`ClientLevel`) → `Attempted to load class ClientLevel for invalid dist DEDICATED_SERVER`, et la compat se désactivait d'elle-même sur tous les serveurs. La surcharge `ServerLevel` est maintenant résolue directement par `MethodHandles.findStatic`.
## ⚡ create_dupe_fix : parcours de pile paresseux (`compat.dupeFixFastStackWalk`, actif par défaut)
`CreateDupeFix.isShipDisassembly()` matérialisait **toute la pile d'appels** (`Thread.getStackTrace()`) à chaque `canSurvive` / `popResource` du serveur — 3,2 % du thread serveur, dont 95 s rien que pour des pulse timers qui font clignoter de la redstone. Remplacé par un `StackWalker` paresseux qui s'arrête à la première frame Sable/Aeronautics/Simulated/VS ; réponse identique.
## 🛡️ Garde contre les entités supprimées avant d'entrer (`backoff.blockEmptyItemEntities`, actif par défaut)
Quand un mod de ramassage/fusion d'items vide un drop dès l'événement `EntityJoinLevelEvent`, vanilla continue de tracker le cadavre et log `Fetching packet for removed entity ItemEntity['Air'...]` pour chaque joueur à portée — une ferme à bone meal / foreuse en a fait un flood qui a bloqué le thread serveur. Ces entités sont désormais rejetées avant d'entrer dans le monde, les spawns à stack déjà vide sont refusés, et le mod responsable est nommé dans le log (avec sa pile) au plus une fois toutes les 30 s.
---
# 1.4.15 — client
## 🧍 Nouveau groupe « Ragdolls Sable » (options vidéo Sodium → Réduction de tick)
Analyse complète des mods Sable Ragdolls 0.7.2 et Ragdoll Reactions 0.7.0 (voir `RAPPORT_RAGDOLL_PERF.md`) : la perte de FPS est **100 % côté client** (le profil serveur du 29/08 met les classes ragdoll sous 0,5 %). Trois options, toutes actives par défaut, inertes sans le mod, qui ne touchent jamais au serveur :
### Rendu rapide des ragdolls de mobs (`ragdoll.fastMobRender`)
Pour chaque membre d'un ragdoll de mob, à **chaque frame**, le mod rejouait le renderer d'entité complet avec de la réflexion jamais mise en cache — et, quand le mob source n'était plus à portée du client, **recréait une entité entière depuis son NBT à chaque frame et pour chaque membre**. Le mod stocke pourtant déjà la géométrie de chaque membre ; ce renderer léger devient le chemin normal. Les membres gardent skin et forme ; seules les couches en plus (armure, selle, objet en main) ne sont plus dessinées sur le ragdoll.
### Cache de skin des ragdolls de joueurs (`ragdoll.skinCache`)
Chaque membre d'un ragdoll de joueur reconstruisait un `GameProfile` et interrogeait le gestionnaire de skins à chaque frame. Cache de 2 s par membre ; la skin apparaît quand même dès que son téléchargement est fini.
### Membres de ragdoll joueur allégés (`ragdoll.lightPlayerLimbs`)
Sur le profil client du 29/08, le rendu de vos 6 membres pesait 4,3 % du thread de rendu, dont **les trois quarts** dans les couches rejouées sur chaque membre : un renderer Curios de boîte à munitions qui décode du NBT par frame, le fusil en main, le backtank Create, la cape… Avec l'option, seule l'armure vanilla est rejouée : votre ragdoll montre skin + armure, sans arme, curios ni backtank.
---
## đź’ˇ En pratique
1. **Serveur + clients** : remplacez le jar par `createtickcontroller-1.21.1-1.4.15.jar` (contient tout ce qui précède).
2. Rien à configurer. Côté client, les trois options ragdoll sont dans Options vidéo → Réduction de tick → « Ragdolls Sable », ou dans `config/createtickcontroller-client.toml` `[ragdoll]`.
3. Recommandé en complément côté serveur (config des mods ragdoll, pas de CTC) : `ragdoll_reactions-server.toml → [mobs] enabled = false` (une explosion ragdollisait tous les mobs du rayon dans le même tick, pour 10 minutes chacun) et `sable_player_ragdoll-server.toml → debugLogging = false`.
**TL;DR du TL;DR** : le serveur a récupéré ses ~14 % perdus par la 1.4.13 bancale, et les ragdolls ne font plus tomber les FPS. 🎮
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

