Journal des modifications
Notes de version des extensions BTC Studio publiques. Chaque version indique l'extension, son numéro de version et ce qui a changé pour les propriétaires de serveurs, de la plus récente à la plus ancienne, avec un lien vers la release et vers la documentation de l'extension.
Les extensions payantes renvoient uniquement vers leur documentation ; leurs téléchargements restent sur la boutique. Les extensions privées ne sont pas listées ici.
2026-10-16
Dungeon v1.2
Chaque changement est listé dans le journal des modifications de Dungeon. Rien ne change pour un donjon existant tant qu'il n'utilise pas l'un des nouveaux champs.
- Requiert GUI (OmniGUI) 0.20 : le classement de Dungeon utilise la source de classement de GUI 0.20 et ne se charge pas avec un GUI plus ancien. Mettez d'abord GUI à jour.
- Butin partagé : nouvelle entrée Dungeon Loot Table, utilisée par les coffres (
lootTableRef) et par les mobs (lootTable). Un coffre la tire une fois à sa première ouverture, un mob à sa mort. - Plus de coffres :
additionalLocationsplace plusieurs coffres depuis une seule entrée Dungeon Loot Chest (ignoré dans un donjon généré). Loot Chest Trigger reçoitparticleEffect, avec des axes X, Y et Z séparés. - Vagues et adaptation : Dungeon Mob Spawn reçoit
waves,maxSimultaneous, l'adaptation au nombre de joueurs (perExtraPlayer,maxCount,playerCountSource),spawnParticleet les déclencheursonWaveClearedetonCleared. Nouvel événement On Dungeon Mobs Cleared, pour ouvrir une porte ou faire apparaître un coffre quand tous les mobs sont vaincus. - Restrictions : nouvelle entrée Dungeon Restrictions (élytre, bateau ou wagonnet, perle de l'Ender, fruit de chorus, impulsion du trident, commandes bloquées, message de refus, permission de contournement), avec
gameMode,limitInteractions(interactions autorisées, entités protégées) etmessageRepeatDelay. L'impulsion du trident et le fruit de chorus sont refusés dès le clic. Seule la permission de contournement exempte un joueur : un opérateur l'a tant que le nœud n'est pas àfalse. - Statistiques : 22 statistiques par joueur, comptées par artefact avec un total sur plusieurs artefacts : dégâts infligés et subis (seulement la vie réellement perdue), kills, vagues et salles nettoyées, temps joué, morts, records...
statsMobScopechoisit les mobs comptés. Une mort qui fait sortir le joueur de la run ne compte plus commeruns_left. Nouveau factdungeon_stat; placeholdersdungeon_stat_<key>[_raw],dungeon_total_<key>etdungeon_inst_<id>_<key>; snippetscontent.dungeon_stats.duration_formatetcontent.dungeon_stats.missing_value. - Classement : nouvelle entrée
dungeon_leaderboard_source(LIFETIMEouCURRENT_RUN,rankBy,values,durationFormat,decimals) à brancher sur le champsourced'un classement GUI. - Reconnexion :
reconnectGrace(2 minutes par défaut). Un membre déconnecté garde sa place et reprend là où il était (sidebar, masquages, mode de jeu). Au-delà, il quitte la run et revient à son point d'entrée à la reconnexion. - MMOProfiles : le retour au point d'entrée et le mode de jeu d'origine sont réappliqués après le choix du profil.
- Menus : les champs d'emplacement de Dungeon Category
unlockedLoreetlockedLoredeviennentunlockLoreetlockLore. Les anciennes pages se lisent toujours ; la nouvelle clé l'emporte si les deux sont présentes. - Rupture d'API pour les addons :
DungeonArtifactData,DungeonStatsetPlayerDungeonStatspassent dans le packagebtcrenaud.dungeons.core, etDungeonArtifactEntry.getPlayerStatsetupdatechangent de signature. Un addon compilé contre Dungeon 1.1.x doit être recompilé.
GUI v0.20
- Rendre le butin :
dropOnClosesur un layout simple rend, à la fermeture du menu, ce que le joueur n'a pas pris ou ce qu'il y a posé.closeDeliverychoisitGIVE_OR_DROP(par défaut : dans l'inventaire, le surplus aux pieds) ouDROP. Désactivé par défaut. - Objets aléatoires :
rollPerSlottire un objet aléatoire pour chaque emplacement répété au lieu d'un seul pour tous, et le nouveauliveItemle tire de nouveau à chaque rafraîchissement. - Nom vide ignoré : un objet dont le nom est vide garde son propre nom au lieu de s'afficher sans nom.
- Lignes de classement d'une autre extension : nouveau champ
sourcesurgui_leaderboard. Les lignes viennent d'une entrée source, pour tous les joueurs en ligne ou non, comme celle de Dungeon. Les textes de ligne acceptent{score},{score_raw}et{value_<key>}. Les textes d'une source sont du texte brut : un nom qui ressemble à une balise MiniMessage, comme<red>, ne change plus l'ordre.
MythicMobs v0.12
- Mobs visibles seulement par certains joueurs :
spawn_mythicmobs_mobetmythic_spawneront un nouveau champvisibilityCriteria. Le mob n'est visible, ciblable et blessable que pour les joueurs qui remplissent les criteria, réévalués en continu (visibilityRefreshInterval, 1 seconde par défaut). UnvisibilityGroupest désormais suivi en direct au lieu d'être figé au spawn. collidable(spawn_mythicmobs_mob,mythic_spawner,truepar défaut) :falsesupprime collision et poussée pour tout le monde.- Abandon :
spawn_mythicmobs_moba de nouveaux champsabandonRangeetabandonDelay. Le mob est retiré si aucun joueur autorisé ne reste à portée pendant le délai (abandonRange0= désactivé). L'éditeur web préremplit les nouvelles durées à 1 seconde : vérifiezabandonDelay. despawn_mythicmobs_mob: nouveau champscope,ALL(défaut, comme avant) ouVISIBLE_TO_PLAYER(seulement les mobs que le joueur voit).- Protection : tous les dégâts liés à un mob restreint (corps à corps, projectiles, skills MythicMobs, feu) sont bloqués envers les joueurs non autorisés, et inversement. Les projectiles traversent, et le mob lâche une cible non autorisée.
- Condition MythicMobs
typewritervisible(aliastwvisible) : ajoutez-la aux skills sans dégâts (potion, projection...), dans le targeter (conditions=[ - twvisible true ]) ou enTargetCondition, pour qu'ils ignorent les joueurs qui ne voient pas le mob. L'extension exécute/mm reloadune fois au démarrage quand vos fichiers MythicMobs l'utilisent. - Un mob dont l'entrée source est supprimée reste masqué à tous.
- Limites : la collision est tout ou rien ; les skills sans dégâts ne sont pas filtrés sans
twvisible; les sons et particules joués loin du mob ne sont pas masqués.
Shops v1.12
- Recompilée contre GUI 0.20, qu'elle requiert désormais : la version précédente n'ouvre plus ses menus avec GUI 0.20. Rien d'autre ne change.
Quest Codex v2.16
- Recompilée contre GUI 0.20, qu'elle requiert désormais : la version précédente n'ouvre plus ses menus avec GUI 0.20. Rien d'autre ne change.
Corpse v0.7
- Recompilée contre GUI 0.20, qu'elle requiert désormais : la version précédente n'ouvre plus ses menus avec GUI 0.20. Rien d'autre ne change.
Numerical Storage v0.15
- Recompilée contre GUI 0.20, qu'elle requiert désormais : la version précédente n'ouvre plus ses menus avec GUI 0.20. Rien d'autre ne change.
2026-10-12
Dungeon v1.1.1
- Paper 26.x,
WORLD_PER_RUN: une partie pouvait échouer avecThe server did not create world 'dungeon_classic_...'. La copie du modèle gardait l'ID de monde du modèle (data/paper/metadata.dat), si bien que le serveur la refusait comme doublon. La copie reçoit désormais son propre ID.
Documentation · Changelog de Dungeon
2026-10-08
Dungeon v1.1
Une refonte complète autour des runs : mondes isolés, donjons générés, NPC par run et mobs vanilla. Lisez la note de migration avant de mettre à jour depuis la 0.10 ; chaque changement est listé dans le journal des modifications de Dungeon.
- Runs : chaque run a son propre état et son propre journal. Le démarrage d'un run est tout ou rien, et le coût d'entrée est remboursé en cas d'échec.
/tw reloadet Publish reprennent les runs en cours au lieu de les terminer. - Isolation : trois modes par donjon (
SLIME_CLONE,WORLD_PER_RUN,SHARED_WORLD_SLOTS) ouAUTO. - Donjons générés : modèles de salles, connecteurs, pools, générateurs et affixes, avec un éditeur en jeu pour les portes et les marqueurs.
- NPC et mobs : NPC par run issus de n'importe quelle définition d'entité, visibles uniquement par les membres du run ; mobs de combat vanilla générés une fois par run, avec un plafond de mobs vivants.
- Textes : chaque texte joueur est un snippet modifiable. Paper uniquement.
- Réponses des commandes : chaque réponse des commandes
/tw dungeon, commandes d'administration comprises, est un snippet modifiable (content.dungeon_command.). - Statistiques : rangées par profil MMOProfiles quand ce plugin est installé, sinon par joueur.
- Mondes Paper 26.x : les mondes rangés à la manière de Paper 26.x (
dimensions/minecraft/<nom>) sont trouvés pourSHARED_WORLD_SLOTSet copiés pourWORLD_PER_RUN.
MythicMobs NPC v5.0
- NPC dans les donjons : avec
tickingdésactivé, un NPC placé par Dungeon 1.0 n'est visible que par les membres de son run, et un clic donne une interaction au bon joueur. - Bone Visibility Data et Attachment Data sont désormais appliqués au modèle du NPC, avec
tickingactivé ou non, et de nouveau après chaque réapparition. - Play Animation :
forcearrête désormais les autres animations lancées par l'action sur ce NPC ; unespeedinférieure ou égale à 0 joue à vitesse normale. - MythicMob Skill Objective :
skillNamefonctionne désormais via la mécanique MythicMobstypewriterSkill{name=..}(aliastwskill), ajoutée à la compétence puis suivie d'un/mm reload. La progression est stockée dansfact, et la progression précédente est migrée automatiquement. La mécanique survit à une publication depuis l'éditeur web ; après un arrêt et un démarrage complets de Typewriter, la console demande/mm reload. - Objectif de loot : les noms d'objet et de mob du loot sont lisibles avec leurs couleurs (c'était du texte technique auparavant), et la marque de fin ✔ est la même que dans les autres extensions d'objectifs.
MMOItems v2.4
- Advanced Tooltip Config :
overrideDefaultLoreest désormais lu. Lorsqu'il est désactivé, que le système est désactivé ou que l'entrée est absente, tout le lore MMOItems s'affiche sur une seule page, sans pagination ni comparaison. - Balises du lore : les balises du format de lore MMOItems (
<page_break>,<category_image>,<pagination_indicator>,<comparison_indicator>,<requirement_met>,<requirement_not_met>,<total_pages>,<current_page>,<comparison_value>,<comparison_sign>) sont désormais toujours remplacées ou retirées : le joueur ne les voit plus en texte brut. - Mode créatif : la pagination et le lore avancé ne s'appliquent qu'en survie et en aventure. En créatif, le lore MMOItems est laissé intact (balises comprises), car le client créatif renvoie les objets tels qu'il les affiche et réécrire le lore altérerait l'objet réel.
- Les champs de l'entrée démarrent avec des valeurs fonctionnelles quand l'entrée est créée dans l'éditeur web (
isEnabled,overrideDefaultLoreetenableComparisonTagsactivés,paginationKeybindSWAP_OFFHAND,comparisonKeybindSNEAK,statsStartOnPage2, symboles et indicateurs par défaut).
Shops v1.11
perPlayerdonne désormais à chaque joueur son propre stock de chaque objet ; une réinitialisation recharge celui de tout le monde. Les limites gardent leur propre portée.defaultRefreshTickset lerefreshTicksde l'objet redessinent une boutique ouverte lorsque le stock affiché change (stocks finis uniquement ;0sur la boutique signifie aucune vérification automatique).- Le
guiSlotde l'objet épingle un objet à un emplacement fixe de la zone de contenu sur chaque page ; un objet qui ne peut pas être placé est déplacé vers une case libre ou signalé dans la console. sellAllEnableddésactivé refuse désormais l'action de vente globale aveccannotSellMessage.- Les réponses des commandes, les icônes de tendance, le lore Limited/Unlimited, les lignes de prix, les noms par défaut, le texte sans prix et le format de durée sont désormais modifiables ; le jour du cooldown par défaut s'écrit
d(avantj).
GUI v0.19
audioDefaultsdegui_settingss'applique désormais comme valeur de repli : un son laissé vide sur une action Open GUI est repris depuis celui-ci, son par son.- Les agencements défilants reçoivent des flèches par défaut tant que
showDefaultButtonsest activé (valeur par défaut) : une par direction sans entréebuttons, affichée uniquement lorsque le contenu peut défiler dans ce sens, et jamais sur une case occupée. Les menus défilants existants gagnent des flèches ; passezshowDefaultButtonsà false pour les conserver comme avant. - Nouveau champ
defaultStepsur les agencements défilants et nouvelle listescrollArrowsdansgui_settings(direction, item, name, x, y) pour modifier les flèches par défaut. - Nouveau
textsdansgui_settings: les boutons Confirm et Cancel et la ligne de progression du stockage sont modifiables. « Confirmer » devient « Confirm ». Le séparateur du fil d'Ariane, qui s'affichait corrompu, est réparé.
Quest Codex v2.15
- La permission
typewriter.codex.openest désormais déclarée par l'extension, réservée aux opérateurs par défaut, ce qui la fait apparaître dans les plugins de permissions tels que LuckPerms. - Les libellés de navigation, les libellés de tri, les titres de menu par défaut et le message de catégorie inconnue sont modifiables (
navLabels,sortTexts,mainMenuTitle,trackedQuestsTitle,unknownCategoryMessage).
Vote System v0.9
- Vote Config est désormais lu :
cooldownSecondssupérieur à 0 permet à un joueur de voter à nouveau après ce nombre de secondes (les compteurs sont cumulatifs), etdebugjournalise les votes acceptés et refusés. - Les votes enregistrés avant l'existence du délai sont datés du premier contact après la mise à jour, leur délai commence donc à ce moment-là.
- Les réponses des commandes
/tw votesont des snippets modifiables (content.vote.). - Couleurs MiniMessage : le message de fermeture, le nouveau
blockedMessageet les deux textes de Vote Message sont désormais lus en MiniMessage, placeholders résolus (les balises s'affichaient telles quelles). Les réponses de commande par défaut sont colorées. - Un vote refusé est vraiment refusé : les
triggersetmodifiersde Vote Action ne s'exécutent que si le vote est enregistré ; un refus n'affiche plus le message d'acceptation et rien ne se déclenche deux fois. Un refus affiche leclosedMessage(après la date de fin) ou le nouveaublockedMessage(avant la fin du délai) et déclenche les nouveauxrefusedTriggers. Chaque refus est journalisé quanddebugest activé. - Nouveaux placeholders
vote_has_voted_<id>etvote_closed_<id>(1ou0), etvote_remaining_<id>(secondes avant la date de fin,0sans date).
Discord v0.13
- Les
triggersd'un Webhook Fact Event s'exécutent désormais après la publication d'un webhook, pour le joueur dont le changement de fact a été publié. - Nouveau
triggerCooldownSeconds(par défaut1) sur Webhook Fact Event : une protection anti-boucle entre deux déclenchements detriggerspour le même joueur ;0la désactive.
Custom Biome v0.9
- Explore Biome Objective fonctionne désormais :
biomesetrequireAllsont lus lorsqu'un joueur entre dans un biome, et le nouveau champtriggersexécute des entries lorsque l'objectif est terminé et actif. L'objectif enregistre lui-même la découverte ; aucun Enter Biome Event n'est nécessaire. - Les réponses des commandes
/tw biomeet le texteunknowndes placeholders de biome sont des snippets modifiables (content.custombiome.). - Paper 26.3 : les biomes personnalisés s'enregistrent de nouveau ; sur 26.3 ils ne se chargeaient pas (injection à chaud et repli par datapack).
Numerical Storage v0.14
optionalButtonsdu menu et de chaque sous-menu sont désormais dessinés : des items d'affichage seul placés à leursslots, qui remplacent tout ce que l'agencement met dans le même emplacement.profileModeutilise désormais MMOProfiles : un solde par profil MMOProfiles. Sans MMOProfiles, c'est le solde du joueur. Avec MMOProfiles et aucun profil actif (sélection de profil, ou après/mmoprofiles quit), le solde affiché vaut 0 et les écritures sont refusées : les commandes admin et les actions de menu répondent par lenoActiveProfileMessagemodifiable (dansadminMessages) et n'écrivent rien. L'intérêt d'un profil est réglé à sa sélection.- Les réponses des commandes d'administration sont modifiables (
adminMessages) ; les textes des placeholders et le format de durée sont des snippets (numericalstorage.placeholder.,numericalstorage.duration.). - Les placeholders chargent le stockage à la connexion : ils affichent le solde enregistré au lieu d'un solde vide tant que le cache est froid.
- Les placeholders et le bouton d'amélioration de niveau suivent désormais
profileMode;/tw ns add/removerépondent à un montant invalide ou à un artefact manquant par des messages modifiables.
Puzzle v0.6
isSharedpartage désormais la progression d'un groupe (le groupe dufactdu puzzle) : la première résolution compte pour le groupe, le fact est levé une fois, et chaque membre reçoit une seule fois le message de complétion,onCompleteet l'étape de chaîne (un membre absent les reçoit à son retour).- Un joueur obtient la complétion d'un puzzle au plus une fois, même en changeant de groupe, jusqu'à une réinitialisation par un admin qui le concerne.
/typewriter puzzle admin reset <player> <id>rouvre un puzzle partagé pour tout le groupe. - Un Puzzle Artifact est désormais requis pour les puzzles partagés : sans lui, un redémarrage verse à nouveau la complétion, et le retour à une ancienne build perd l'enregistrement partagé.
- Les textes joueur et les réponses des commandes sont modifiables : les messages de chaque énigme et du Puzzle Menu sont des champs d'entrée, et les réponses de
/tw puzzlesont des snippets (content.puzzle.). Les textes qui étaient en français par défaut sont désormais en anglais ; une page qui a stocké le texte français le garde. - Corrigé, blocs côté client : un bloc dessiné ne disparaît plus quand son clic est annulé. Le plateau est redessiné un tick après chaque clic annulé (les miroirs du Laser Grid disparaissaient au clic droit au lieu de tourner, les blocs du Block Push disparaissaient quand une poussée était refusée, et de même pour les clics de Memory, Pattern, Item Frame et Pedestal).
- Corrigé, Block Push : un bloc repoussé sur sa case de départ ne rebondit plus et ne disparaît plus, et un trou cible est redessiné une fois qu'un bloc a été poussé dessus puis au-delà. Une poussée refusée compte une erreur par bloc et par case cible, et non plus une par clic : maintenir le clic contre un mur ne consomme pas
maxAttempts. Laissez les cases de départ vides (air) dans le monde.allowPulln'a toujours aucun effet (non implémenté). - Corrigé, Lever Order : les leviers qui reposent allumés reviennent à leur position d'origine après un mauvais ordre, et leur bascule est visible. Un clic pendant le délai d'échec n'atteint plus un vrai levier.
- Corrigé, puzzles résolus : un Block Push, Combination Lock, Lever Order ou Laser Grid résolu est inerte (pas de plateau, pas d'interaction annulée) et n'avale plus les clics de ses leviers et boutons quand le joueur revient dans son audience. Un Pedestal résolu n'avale plus la récupération de son objet.
- Laser Grid : le rayon est désormais dessiné au centre des blocs et tourne exactement sur chaque miroir (il était décalé).
beamDensityest un nombre de particules par bloc, et les sommets sont toujours dessinés. - Laser Grid,
maxBeamLength: nouveau champ, 64 blocs par défaut (0 ou moins vaut 64, jamais illimité). Un plateau dont le rayon est plus long doit l'augmenter. Le rayon ne charge jamais de chunk : il s'arrête au bord du monde chargé. - Combination Lock : les chiffres sont numérotés depuis 0 (la première position listée est le chiffre 0) ; l'aide l'indique avec un exemple. Une valeur de
codehors des chiffres écrit désormais un avertissement dans la console au lieu d'ignorer silencieusement toutes les pressions.
Corpse v0.6
- Filtre de mondes :
allowedWorldsetexcludedWorldssurcorpse_settingschoisissent les mondes où une mort laisse un cadavre. Une liste d'autorisés vide = tous les mondes. Les jokers*et?(dungeon_*), les noms de monde et les clés de dimension (minecraft:the_nether) sont compris, et une exclusion l'emporte toujours. Hors des mondes autorisés, la mort est vanilla. filteredWorldDeath: dans un monde que le filtre refuse,VANILLA_DEATH_SCREEN(défaut) garde la mort Minecraft ordinaire, dont le corps et l'écran de mort sont dessinés par le client, etINSTANT_RESPAWNfait réapparaître le joueur au tick suivant, sans écran de mort. Les objets et l'expérience tombent comme en vanilla. Sans effet quand les deux listes sont vides.- Chaque texte est modifiable : messages, libellés et matériaux du menu, format du waypoint et ses huit flèches de direction, réponses de
/corpses, nom par défaut du cadavre et texte de l'objectif de récupération. Le nom d'un joueur est échappé et ne devient jamais une balise cliquable. - Nouveaux réglages
interactionReach(6 blocs ; le serveur ne vérifiait pas la distance d'un clic),interactionCooldownMillisetunknownWorldLabel. Une définition peut aussi être choisie avec la clé de dimension, et l'en-tête de/corpses listest modifiable./corpses listetclears'appliquent à tout le serveur. NouveauoutOfReachMessagefacultatif (vide par défaut : aucun message). - Contrôle des pertes et duplications d'objets : les morts, le pillage et le stockage ont été passés en revue ; les correctifs ci-dessous ferment tous les chemins de perte ou de duplication trouvés.
- Corrigé, morts : une mort annulée par un autre plugin (totem, réanimation) ne prend plus l'équipement du joueur ;
keepInventoryetkeepLevelsont respectés (pas de cadavre aveckeepInventory), et les objets que d'autres plugins gardent pour le joueur ne sont plus dupliqués dans le cadavre. Si le cadavre ne peut pas être créé, les objets tombent normalement. - Corrigé, pillage : prendre un objet avec l'inventaire plein ne duplique plus la part qui avait tenu, et deux clics en course pour le même cadavre ne peuvent plus distribuer son contenu deux fois.
- Corrigé, stockage : un redémarrage ne ramène plus les objets déjà pris, et un fichier de stockage illisible ou à moitié écrit n'efface plus les cadavres stockés. Les cadavres restaurés gardent leur pose, leur lueur, leur nom et leur animation (pas la peau ni l'armure du propriétaire).
- Le message de réapparition, le waypoint et l'objectif utilisent le dernier cadavre, et le menu de pillage prévient avant de s'ouvrir au lieu d'après le premier clic.
MythicMobs v0.11
mythic_spawner.groupest désormais lu : seuls les membres du groupe activent le spawner,criteriaest vérifié sur ce groupe, et chaque groupe a son propre échauffement et son propre délai de récupération ; l'état d'un groupe est supprimé lorsqu'aucun membre n'est en ligne.- La ligne du MythicMob Kill Objective dans le suivi de quêtes est modifiable avec les snippets
advancedQuest.displayetadvancedQuest.completed.
Enchantment Creator v0.11
- Agricultural Harvest lit désormais l'événement de destruction de bloc et récolte les cultures mûres autour du bloc cassé (
radiusplafonné à 8) au lieu du bloc que le joueur regarde. - Agricultural Harvest : nouveaux champs
particle,particleCount,sound,soundVolumeetsoundPitch. - Ce qu'un joueur tape dans
/enchantcreator give(le nom de l'enchantement) est affiché tel quel dans les réponses, sans jamais être interprété comme du formatage.
TextDisplayDialogue v2.4
- Textes modifiables : les 15 snippets sont désormais lus. Les mises en page, noms d'interlocuteur, lignes de texte, indications, lignes d'options et préfixes d'options des dialogues Spoken, Option et Player option et des sous-titres de cinématique se modifient dans
plugins/Typewriter/snippets; les valeurs par défaut reproduisent l'affichage précédent. - Placeholder du minuteur :
%typewriter_textdisplaydialogue_timer%est désormais enregistré dans PlaceholderAPI et fonctionne en dehors des dialogues (0quand aucun minuteur n'est actif). - Deux messages de plus modifiables :
textdisplay.inventory.blocked(inventaire bloqué pendant un dialogue) ettextdisplay.error.init(l'affichage n'a pas pu démarrer) ; un snippet vide masque le message. La cause d'une erreur d'initialisation va désormais uniquement dans le journal du serveur : aucun détail d'exception n'est montré au joueur. Le dialogue Player option lit aussitextdisplay.speaker.formatet les snippetstextdisplay.option.*(affichage par défaut identique). audioProfileretiré detextdisplay_spoken: le champ n'était jamais lu.- Paper uniquement : Folia n'est pas pris en charge.
Retiré de la documentation
- BTC Nameplates : fusionné dans UiCore (mêmes entries,
/nameplates) ; les anciennes pages redirigent vers UiCore. - MMO Profile : abandonné, jamais publié ; ses pages sont supprimées.
2026-10-02
MythicMobs NPC v4.9.1
Correctifs pour les interactions, les animations et les cinématiques sur Paper 26.x.
- Clics : le clic droit fonctionne de nouveau sur Paper 26.x, et
LEFT_CLICKetALLse déclenchent désormais aussi. Un clic déclenche le dialogue une seule fois, jamais deux, et/tw reloadne casse plus les clics avec uneNoClassDefFoundError. - Play Animation : une action dont la vitesse était laissée vide jouait figée sur sa première image ; elle joue désormais à vitesse normale. Elle fonctionne aussi sur les NPC dont
tickingest désactivé, joue par-dessus les animations d'inactivité, de marche et de compétence MythicMobs, et attend le modèle lorsqu'il n'est pas encore chargé. - Cinématiques dans un autre monde : le NPC d'une cinématique d'entité restait dans le monde précédent du joueur, et n'apparaissait donc qu'après plusieurs lancements. Il apparaît désormais dès le premier lancement, avec son animation.
- Déplacement en cinématique : marche plus fluide, plus d'alternance inactivité/marche, et plus de scintillement ModelEngine à courte distance.
- Nettoyage : les porteurs de NPC invisibles ne s'accumulent plus dans le monde après les cinématiques.
CraftEngine v1.1
- Audience de la zone de quête :
dispose()vide toujours son état et réinitialise l'indicateur de libération, de sorte qu'un/tw reloadne laisse plus fuir un écouteur retenant l'ancien classloader de l'extension.
2026-09-19
GUI v0.18
- L'avertissement de chevauchement d'emplacements nomme désormais
gapet rappelle qu'il s'agit d'un pas, et non d'un espacement :gap: 1signifie des emplacements adjacents, et non un emplacement vide entre chaque copie. Une copie répétée qui entre en collision avec une décoration placée entre deux de ses copies est la cause la plus courante de cet avertissement. - Les menus écrits selon l'ancienne formule de Quest Codex antérieure à la 0.3.0, où le pas appliqué était
gap + 1, tombent exactement ici (voir Quest Codex v2.14).
Quest Codex v2.14
- Documentation d'un changement incompatible introduit dans Quest Codex 0.3.0 et jamais annoncé. Jusque-là, les marqueurs du codex utilisaient leur propre formule de répétition où
gapétait un espacement (pasgap + 1). Depuis la 0.3.0, ils utilisent la formule du moteur GUI oùgapest un pas :count: 3, direction: right, gap: 1à partir de x=2 donne désormais x=2, 3, 4 au lieu de 2, 4, 6. - Un menu écrit avant la 0.3.0 place donc ses marqueurs à un emplacement d'écart et peut entrer en collision avec la décoration placée entre eux. Pour retrouver l'ancien espacement, doublez le pas :
gap: 1devientgap: 2. La sémantique du pas est conservée. - Les marqueurs indexés réinitialisent désormais
gapen même temps quecountetrepeatY, de sorte que la validation des menus ne signale plus de répétition orpheline sur eux. - Compilée avec GUI v0.18.
2026-09-14
GUI v0.17
- Un
gapde0n'empile plus toutes les copies répétées sur la cellule d'origine. L'éditeur web sérialise ungapnon modifié sous la forme0: unQUEST_SLOTaveccount: 7etdirection: rightproduisait sept marqueurs à la même position et un avertissement « Slot overlap » que vous n'aviez jamais écrit.gapest désormais forcé à au moins1, commecountetrepeatY. - Le correctif se trouve dans le code de répétition d'emplacements partagé : Quest Codex et Shops en bénéficient donc sans recompilation.
Shops v1.10
- Troc : prix payés en objets. Le nouveau
priceMode: ITEMSvend un article contre un ou plusieurs objets au lieu d'une monnaie.itemPricesur l'objet liste le coût (objet plus quantité par unité achetée) ;defaultItemPricesur la boutique couvre tous les articlesITEMSqui n'en déclarent aucun. La liste de l'article remplace celle de la boutique, elle ne s'y ajoute jamais. - Un article
ITEMSsans prix nulle part est refusé et consigné, jamais donné. Le paiement est simulé sur tout l'inventaire avant que quoi que ce soit ne soit retiré, et la place pour l'objet acheté est vérifiée en premier, car un troc n'a pas de remboursement. - Nouveau
cannotAffordItemsMessage(jetons{missing},{amount}) et jeton de lore{item_price}, une ligne par objet demandé. Les lignes{buy}et{sell}sont supprimées sur un tel article, et les placeholdersbuy_price/sell_priceaffichent un tiret. - « Buy max » fonctionne sur les articles de troc. Un article
ITEMSne peut pas être revendu contre une monnaie : son prix de vente est nul. - Recompilée avec GUI v0.17.
2026-09-09
Puzzle v0.5
- Correction :
NoClassDefFoundErrorsurPuzzleRenderersaprès un rechargement de l'extension. L'extension enregistrait deux écouteurs Bukkit sur le plugin du moteur sans jamais les retirer ; les anciennes instances continuaient donc de s'exécuter sur un classloader fermé. Les deux sont désormais désenregistrés à l'arrêt de l'extension, ce qui évite aussi qu'une copie supplémentaire ne s'accumule à chaque rechargement. - Un rafraîchissement visuel déjà planifié au moment de l'arrêt de l'extension ne peut plus déclencher un chargement de classe sur le loader mort.
2026-09-08
Shops v1.9
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
- Compilée avec GUI v0.16.
Discord v0.12
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Companion v0.10
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Corpse v0.5
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Custom Biome v0.8
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
InputTracker v0.5
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Numerical Storage v0.13
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Puzzle v0.4
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Vanilla v1.4
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Les textes de progression des objectifs (objectifs de récolte, de comptage et de vérification de fact) sont désormais analysés avec le joueur, de sorte que les placeholders qu'ils contiennent sont résolus pour ce joueur.
Vote System v0.8
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
Enchantment Creator v0.10
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Les actions de mécanique sont désormais planifiées via le dispatcher synchrone propre à Typewriter plutôt que via l'utilitaire de planification privé de l'extension.
MMO Inventory v0.7
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
MythicMobs v0.10
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
GUI v0.16
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Correction des lignes de classement qui décrivaient le spectateur : une ligne pour un joueur classé résout désormais ses
Vard'objet, de nom et de lore par rapport à ce joueur plutôt qu'à celui qui a ouvert le menu, de sorte que chaque ligne n'affiche plus les valeurs du spectateur. Les lignes de monde, de groupe et de joueur hors ligne se rabattent sur le spectateur.
Quest Codex v2.13
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
- Compilée avec GUI v0.16.
Tracking v0.11
- Recompilée avec le moteur Typewriter
0.9.0-beta-177. - Aucun changement de comportement.
2026-09-06
Shops v1.8
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
- Compilée avec GUI v0.15.
Discord v0.11
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Companion v0.9
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Corpse v0.4
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - La nameplate du cadavre utilise désormais la
CustomNamePropertydu moteur. - Compilée avec GUI v0.15.
Custom Biome v0.7
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
InputTracker v0.4
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Numerical Storage v0.12
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Puzzle v0.3
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Vanilla v1.3
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Les activités d'entité (détection de visibilité, suivi, orbite, évitement, ouïe, odorat, patrouille et similaires) sont portées vers le cycle de vie des activités du moteur 0.9. Les noms d'entrées sont inchangés.
Vote System v0.7
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Changement incompatible : champ
vote_actionrenommé.optionest remplacé paroptionIndex, un simple nombre commençant à 0. Resélectionnez l'option sur chaquevote_actionexistant. - Changement incompatible : champ
vote_messagescindé.messageest remplacé parnotVotedMessageetalreadyVotedMessage; laissez le second vide pour n'envoyer aucun message aux joueurs qui ont déjà voté. vote_datadéfinit désormaisartifactIdàvote_storagepar défaut : définissez un nom fixe pour conserver les bulletins entre les rechargements.- De nouvelles entrées
vote_config(avecdebugetcooldownSeconds),vote_factetvote_cast_eventapparaissent dans l'éditeur.
Dialog Menu v0.7
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Enchantment Creator v0.9
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
MMO Inventory v0.6
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
MythicMobs v0.9
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
GUI v0.15
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
Quest Codex v2.12
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
- Compilée avec GUI v0.15.
Protection v1.3
- Obsolète : ceci est la dernière version de Protection. Le système de régions natif de Typewriter est le remplaçant pour les nouveaux déploiements.
- L'extension est conservée pour les serveurs existants et ne recevra plus de nouvelles fonctionnalités.
- Recompilée avec le moteur Typewriter
0.9.0-beta-176.
Tracking v0.10
- Recompilée avec le moteur Typewriter
0.9.0-beta-176. - Aucun changement de comportement.
2026-08-29
GUI v0.14
- Classements de facts. La nouvelle définition
gui_leaderboardclasse des joueurs, des mondes ou des groupes Typewriter sur une ou plusieurs valeurs de fact, rendue par le nouveau layoutleaderboarddans n'importe quel poolopen_gui. Les lignes acceptent{rank},{name},{score},{group},{world}et{score_<fact_id>}. - Le nouvel artifact
gui_leaderboard_populationconserve les dernières valeurs connues des joueurs hors ligne, de sorte qu'un classement ne se limite plus aux joueurs connectés. - Le nouveau
dropOnClosesur les emplacements de stockage fait tomber le contenu restant aux pieds du joueur à la fermeture, avec Échap et à la déconnexion. - Correction des emplacements de stockage
temporaryqui n'étaient jamais vidés, et du Maj + clic droit sur un objet de curseur correspondant qui prélevait au lieu de déposer. - Un
viewPermission/clickPermissionvide n'est plus traité comme une permission : les restrictions non définies enregistrées par l'éditeur web masquaient auparavant l'emplacement ou l'onglet à tout non-opérateur. - La validation au démarrage connaît désormais le layout
leaderboardet signale une zone de rang située en dehors de l'inventaire.
Quest Codex v2.11
- Recompilée avec GUI v0.14.
Shops v1.7
- Recompilée avec GUI v0.14.
Corpse v0.3
- Recompilée avec GUI v0.14.
Numerical Storage v0.11
- Recompilée avec GUI v0.14.
2026-08-24
Shops v1.6
- Nouvelle arborescence de commandes d'opérateur
/tw shop admin: liste des boutiques, inspection des définitions, contrôle des sessions de joueurs, réinitialisation à l'exécution, gestion directe du stock des objets et historique des transactions. - Nouvelle permission
typewriter.shop.admin(opérateurs uniquement).typewriter.shop.openreste disponible pour les joueurs par défaut. - Une réinitialisation manuelle partage le comportement de la réinitialisation automatique et recalcule la prochaine réinitialisation planifiée.
- Correction de l'enregistrement de la permission de la commande publique afin que les non-opérateurs puissent ouvrir les boutiques.
2026-08-16
Discord v0.10
- Webhooks de facts. Le nouveau
webhook_fact_eventpublie un changement de fact vers n'importe quelle destinationwebhook_definition, pour les portées joueur, groupe Typewriter et globale, avec audiences facultatives, conditions de valeur, modèles de message et d'embed, fils de forum et mentions de rôle. Les portées de groupe et globale dédoublonnent les rappels des joueurs qui observent le même fact. - Le lien Discord est entièrement facultatif : sans
discord_link_manifest, l'extension n'initialise plus les ponts Discord ni ne résout les classes JDA. - Un JDA désactivé ou incomplet est signalé par le client au lieu de lever un
NoClassDefFoundErrorsur le thread du serveur. - La version publique embarque désormais JDA 6.5.0 et ses dépendances d'exécution.
2026-08-21
GUI v0.13
- Objets d'emplacement dynamiques.
itemProviderreconstruit l'objet, le nom et le lore d'un emplacement au moment du rendu. Les emplacements d'un layout sont analysés une seule fois et la même liste est renvoyée à chaque rendu : un placeholder ou un compte à rebours dans un lore était donc résolu une fois puis figé —autoRefreshTicksredessinait indéfiniment un inventaire identique. - Une seule ouverture de fenêtre en cours à la fois.
GuiFactory.open()se termine un tick plus tard ; jusque-là, l'inventaire supérieur est donc toujours la vue précédente et chaque rendu décidait de rouvrir. La seconde ouverture fermait la première fenêtre, cette fermeture était interprétée comme une vraie fermeture, et la session était détruite alors que son menu restait à l'écran — tous les boutons étaient alors morts. - Une animation de durée
0n'est plus une animation. Le panneau appose un bloc d'animation par défaut sur chaque emplacement ; les objets décoratifs étaient donc dessinés à l'index 0, et le re-rendu qu'ils planifiaient entrait en course avec l'ouverture en attente. - Un bouton étiqueté conserve les propres interactions de l'auteur. Renseigner
buttonTypesupprimait auparavant toute la liste d'interactions ; un marqueur qu'aucun résolveur ne revendiquait — mauvais préfixe, mauvaise casse, ou extension propriétaire absente de cet écran — devenait donc un objet qui cliquait en silence, sans rien dans la console.
Quest Codex v2.10
- Les menus qui ne peuvent pas s'afficher sont signalés au démarrage, pendant que la console est encore lue, au lieu d'échouer silencieusement au moment du clic. Chaque message indique la solution, pas le symptôme.
- Conversion unique des pages créées avant le châssis
open_gui. Le pool de layouts est passé decategory_menuà une entréeopen_guiréférencée ; une page écrite selon l'ancien schéma conservait donc un layout que le moteur ne lisait plus : entièrement configurée dans le panneau, mais n'affichant rien. - Les titres d'advancements passent par la vraie conversion MiniMessage vers JSON, de sorte que la mise en forme écrite dans un titre de quête survit dans l'advancement qu'il génère.
- Nécessite OmniGUI v0.13.
Puzzle v0.2
- Nouveau
activationRadiussur chaque énigme,16blocs par défaut. Une énigme ne s'affiche et ne s'exécute que pour un joueur se trouvant dans le monde de ses propres positions, à moins de ce rayon de l'une d'elles.0ne désactive que la vérification de distance — la vérification du monde s'applique toujours. - Correction : une énigme était dessinée dans toutes les dimensions. Les blocs et les particules côté client portent des coordonnées mais pas de monde ; une grille de lasers configurée dans l'Overworld était donc peinte devant le joueur dans le Nether, l'End ou tout autre monde qu'il visitait.
- Correction : une énigme démarrait dès que le joueur rejoignait son audience, quelle que soit la distance. Une séquence de mémoire pouvait jouer tout son motif à quelqu'un situé à des milliers de blocs, ou dans un autre monde. La séquence démarre désormais lorsque le joueur atteint le plateau.
- S'éloigner efface le plateau côté client et annule les animations en attente. Le budget de tentatives, le cooldown d'échec,
timeLimitetlifespansont armés à l'arrivée plutôt qu'à l'entrée dans l'audience.
Custom Biome v0.6
- Changement incompatible :
biome_audienceest supprimé. Il répondait à « ce joueur est-il dans ce biome » en lisant le biome propre du monde, qu'une surcouche côté client ne modifie jamais — ainsi, pour chaque biome que cette extension peint, il répondait faux, quoi que le joueur voie à l'écran. Aucune configuration ne le faisait fonctionner. - Deux entrées le remplacent :
biome_overlay_audience(ce joueur porte-t-il cette surcouche) etbiome_region_audience(ce joueur est-il à l'intérieur de cette région, monde compris). Les pages qui utilisentbiome_audiencedoivent être redirigées vers l'une d'elles. - Les audiences de région comparent aussi le monde en plus des coordonnées : une région définie dans un monde ne correspond donc plus aux mêmes coordonnées dans un autre.
ignoreYtransforme une région en colonne infinie. /tw biome region <entry>remplit les deux coins d'une entrée à partir de votre sélection WorldEdit actuelle, au lieu de saisir les coordonnées à la main.- Les surcouches par joueur sont suivies par chunk et par propriétaire : plusieurs surcouches peuvent couvrir un même chunk, l'une l'emporte, et l'effacer restaure le biome réel de ce chunk plutôt que la dernière palette peinte.
Shops v1.5
- Recompilée avec OmniGUI v0.13.
GuiSlota gagné un paramètreitemProviderau moment du rendu, ce qui a modifié le constructeur sur lequel ses appelants se lient ; le JAR v1.4 levait donc unNoSuchMethodErrordès qu'une boutique était ouverte sur le moteur GUI mis à jour — l'inventaire n'apparaissait jamais. - Aucun changement de comportement. Les deux versions vont de pair : la v1.4 ne peut pas fonctionner sur OmniGUI v0.13, et la v1.5 ne peut pas fonctionner sur la v0.12.
Numerical Storage v0.10
- Recompilée avec OmniGUI v0.13, pour le même changement de signature de
GuiSlot: le JAR v0.9 levait unNoSuchMethodErrorà l'ouverture d'un menu de stockage, et le menu n'apparaissait jamais. - Aucun changement de comportement, et aucune seconde migration : le stockage au schéma v2 est relu exactement tel que la v0.9 l'a écrit.
Corpse v0.2
- Recompilée avec OmniGUI v0.13, pour le même changement de signature de
GuiSlot: le JAR v0.1 levait unNoSuchMethodErrorlorsqu'un cadavre était fouillé, de sorte que le menu de butin ne s'ouvrait jamais et que le cadavre restait là avec son inventaire inaccessible. - Aucun changement de comportement. Les cadavres stockés, leurs inventaires et leurs règles de protection sont relus comme avant.
2026-08-12
GUI v0.12
- Menus étendus.
extendToPlayerInventorysuropen_guitransforme les 36 emplacements propres du joueur en quatre lignes de menu supplémentaires, donnant un canevas de 10 lignes. La projection est uniquement côté client : l'inventaire réel n'est jamais modifié, et il est restauré à la fermeture du menu. - Un layout racine dont l'identifiant se termine par
_extendedactive cette projection de lui-même, de sorte qu'un châssis partagé peut fournir une variante normale et une variante étendue sans que chaque menu répète l'option. DynamicMarkerstransforme les marqueurs de contenu répétés en marqueurs indexés (QUEST_SLOT#0,QUEST_SLOT#1, …) avant l'analyse, afin que les extensions cessent de conserver chacune une copie privée de cette sémantique.- La répétition d'emplacements est bornée et signalée : les positions en dehors de la grille sont supprimées et consignées avec l'identifiant du layout et les coordonnées rejetées. L'éditeur avertit lorsque
count/gap/repeatYsont définis sansdirection, et signale une erreur pour une direction inconnue. - Documentation du fait que
gapest un pas (1 = adjacent) et querepeatYrépète sur l'axe perpendiculaire àdirection. - Correction de l'héritage de
mainLayoutId: une valeur vide sur l'enfant l'emportait auparavant sur la valeur héritée ; une page héritant de tout son châssis résolvait donc un layout inexistant et s'affichait vide — sans aucun bouton pour recevoir un clic. - Le masquage d'emplacements a un seul propriétaire : lorsque deux emplacements revendiquent une même cellule, celui qui porte un comportement l'emporte, au rendu et au clic, et la collision est consignée une seule fois.
- La validation au démarrage ne signale désormais que ce qui échoue réellement. Les vérifications qui signalaient l'absence d'éléments facultatifs ont été supprimées —
frame.view.unresolved,slot.outOfFrame,layout.unreferenced— car dans une architecture de modèles, elles décrivent la conception, pas un défaut. Ce qui reste désigne une intention écrite qui a échoué : une vue pointant vers un layout manquant, un emplacement qui sort de l'inventaire, deux emplacements de même nature qui entrent en collision dans un même layout.
Shops v1.4
- Mode onglet.
baseMenuIdfait d'une boutique un onglet d'un menu partagé : son pool de layouts et ses vues fusionnent sous le châssis, avecviews,defaultViewIdet un rectangle de contenu (contentX,contentY,contentColumns,contentRows). Laissé vide, une boutique s'ouvre exactement comme avant. - Prise en charge des châssis étendus : une boutique ouverte dans une coque étendue obtient désormais le canevas de 10 lignes.
- Ajout de
defaultNameFormatetdefaultLoreFormat. Un objet qui ne déclare ni nom ni lore hérite du format de la boutique ; un objet qui déclare le sien le conserve intact — le format de la boutique comble les vides, il ne remplace jamais la formulation d'un auteur. - Les deux acceptent les mêmes jetons :
{item},{buy},{sell},{stock},{stock_max},{currency}. Une ligne de lore demandant un prix indisponible est supprimée plutôt qu'affichée vide. - Ajout de
ShopTransactionEvent, déclenché une fois un achat ou une vente terminé. C'est le point d'accroche auquel se branchent d'autres extensions — un relais Discord, un journal d'audit — sans que Shops ne sache qu'elles existent. Annoncé, jamais annulable. - Ajout de
notificationWebhookId. Shops ne le résout pas et ne sait pas ce qu'est un webhook ; l'identifiant voyage avec l'événement. Un écouteur qui lève une exception est signalé et la transaction est maintenue — rien n'annule un achat payé. - Correction d'un layout vidé de ses marqueurs qui était retiré du pool : un écran de boutique composé uniquement de marqueurs, ou un onglet encore vide, disparaissait en silence.
Quest Codex v2.9
- La promotion en châssis étendu est désormais portée par l'héritage plutôt que par un identifiant de layout littéral. Un châssis dont la racine porte un autre nom que
shell_rootperdait son habillage étendu, et chaque contrôle ancré dans la bande inférieure disparaissait au rendu — donc impossible à cliquer. - L'extension est compilée avec le moteur GUI de la vague de publication au lieu d'un ancien JAR figé. Elle était figée sur la v0.11 du moteur, de sorte que tout ajout postérieur à cette version lui était invisible.
Discord v0.9
- L'extension s'appelle désormais Discord, et non Community. Le répertoire, le package et le nom de l'extension suivent. Les noms d'entrées sont inchangés, car les pages les sérialisent.
DiscordClientServicea quitté la fonctionnalité de liaison pour son propre package : la synchronisation du chat, la console et les rapports de bugs l'utilisent tous, il n'a donc jamais eu sa place dans la liaison de comptes.- Les webhooks sont des entrées.
webhook_definitiondéclare une destination Discord une seule fois et la référence partout. La synchronisation du chat, la liaison de comptes et les rapports de bugs portaient chacune leur propre copie de l'URL, du nom d'utilisateur et de l'avatar — changer de salon obligeait à modifier chaque manifest, sans rien garantir qu'ils pointaient au même endroit. WebhookServiceest un singleton que n'importe quelle extension peut injecter. Le client HTTP était auparavant construit à la main dans l'initialiseur et transmis à chaque service ; rien d'extérieur ne pouvait donc livrer un message.- Les rapports de bugs ont perdu leur second interrupteur : une destination vide est l'état désactivé.
- Migration. Les pages écrites avant cette version sont converties au premier démarrage : une
webhook_definitionpar destination distincte — les manifests configurés de façon identique partagent une seule entrée — et les manifests sont redirigés vers elle. Chaque page réécrite est d'abord sauvegardée, sousbackup/community-webhook-v1/. La conversion est pilotée par la forme et non par un numéro de version ; l'exécuter deux fois ne change donc rien. Un manifest qui était désactivé conserve son URL sur une destination désactivée plutôt que de la perdre. - Annonces de boutique.
shop_notification_manifestdécrit comment une transaction de boutique se présente une fois arrivée sur Discord. La destination en est volontairement absente — elle appartient à la boutique. Une seule présentation sert donc toutes les boutiques tout en laissant chacune publier dans son propre salon. Nécessite l'extension Shops mais n'en dépend pas.
Puzzle v0.1
- Première version.
- Neuf types d'énigmes, chacune étant un objectif Typewriter avec sa propre audience, sa progression et ses triggers : poussée de blocs, offrandes sur piédestal, séquences de mémoire, ordres de leviers, placement de motifs, rotations de cadres d'objets, serrures à combinaison, grilles de lasers et plaques de pression coopératives.
- Tout ce qu'une énigme dessine est côté client — blocs, aperçus fantômes, surbrillances et rayons laser sont envoyés au joueur qui la résout. Deux joueurs peuvent travailler sur le même plateau sans voir la progression de l'autre, et le monde n'est jamais modifié.
- Cycle de vie partagé sur chaque énigme :
timeLimit,maxAttempts,cooldownOnFail,resetOnWrong,lifespan, indices, et triggersonStart/onComplete/onFail/onTimeout/onLifespanExpire. isSharedfait passer une énigme d'une progression privée à un plateau unique que tout le groupe fait avancer ensemble.puzzle_chainenchaîne plusieurs énigmes dans l'ordre et se déclenche une fois la séquence résolue ;resetOnFaildécide si une erreur renvoie le joueur au début.puzzle_artifactconserve l'état des énigmes, de sorte qu'un redémarrage en pleine tentative n'efface pas la progression.puzzle_solved_factetpuzzle_active_factexposent la progression au reste de votre contenu ;puzzle_menuliste les énigmes et leur état dans le chat.- Compatible Folia : chaque lecture et écriture dans le monde s'exécute sur la région qui possède l'énigme.
Corpse v0.1
- Première version.
- Les cadavres sont rendus une fois par spectateur, comme les affichages d'entités du moteur, de sorte que tous les joueurs proches les voient, avec animation du modèle et nameplates mises à jour sur les moteurs BetterModel, PNJ BTC Mob et PNJ MythicMobs.
- Fonctionne sur Folia : toute la planification passe par un scheduler compatible Folia, et les objets lâchés, les orbes d'expérience et les particules s'exécutent sur la région qui possède le cadavre.
- L'inventaire que contient un cadavre survit à un redémarrage, à un plantage ou à un rechargement. Les cadavres sont stockés dans MySQL lorsqu'il est disponible, sinon dans le dossier du plugin, et restaurés au démarrage.
onlyOwnerCanLootest appliqué, et la fouille est associée à l'identifiant d'entité propre du cadavre plutôt qu'à n'importe quel clic droit à moins de quatre blocs.- Une définition de cadavre est choisie à chaque mort selon le monde et la priorité, et sa durée de vie est résolue une seule fois, sur ce cadavre.
- Les événements
on_corpse_spawn,on_corpse_looteton_corpse_expirepassent par le pipeline de triggers du moteur et publient le propriétaire, le butin et la position du cadavre comme contexte. displayName,showDisplayName,dropOnInteract,renderArmor,playDeathAnimationetdeathAnimationNamesont tous pris en compte, et la plupart des paramètres sont des valeurs dynamiques, ils peuvent donc être pilotés par des placeholders et des facts.- Un contour lumineux rendu côté client avec une couleur configurable, et des sons de cadavre envoyés à chaque joueur proche plutôt qu'à l'ensemble du monde.
- Facts
has_corpseetcorpse_count, audiencecorpse_owner_audience,corpse_waypointaffichant la distance et la direction vers le cadavre du joueur,corpse_recovery_objective, etcorpse_admin_commandavec les sous-commandeslistetclear. - Une fenêtre de protection du butin, après laquelle un cadavre s'ouvre à tout le monde.
- Le menu de butin est un menu de l'extension GUI plutôt qu'un simple inventaire avec son propre écouteur de clics ; il hérite donc du routage des clics, de l'historique des menus et de la projection d'inventaire étendu du moteur. L'extension GUI est par conséquent requise.
Custom Biome v0.5
- Les biomes personnalisés existent immédiatement. Une définition est enregistrée dans le registre actif dès qu'elle est sauvegardée, et non plus seulement après un redémarrage du serveur. Le datapack généré est désormais la couche de persistance plutôt que l'unique chemin.
- Correction du datapack généré qui était ignoré par le serveur : son format de pack était codé en dur sur une ancienne valeur, et il était écrit dans un dossier que le serveur ne lit jamais.
- Correction de
baseBiomequi n'avait d'effet que pour les plaines. Les biomes sont désormais construits à partir du biome de base détenu par le serveur et encodés avec son propre codec, de sorte que les apparitions de mobs, les features et les carvers sont hérités au lieu d'être perdus. - Correction des changements de biome qui perçaient des trous dans le monde : le rafraîchissement envoyait des paquets de déchargement de chunk, que le serveur ne faisait jamais suivre d'un renvoi. Les clients reçoivent désormais une mise à jour de biome construite à partir des vraies données du chunk.
- Correction de
leave_biome_eventqui ne se déclenchait jamais. Les écouteurs d'entrée et de sortie écrasaient l'état l'un de l'autre, de sorte que le résultat dépendait de l'ordre d'enregistrement. - Correction de la peinture qui écrivait chaque bloc d'une colonne au lieu d'un par cellule de 4x4x4, et le faisait depuis le thread appelant. Les écritures sont désormais planifiées sur la région qui possède chaque chunk.
- Un biome que le serveur refuserait de sérialiser est désormais rejeté à l'enregistrement, avec la valeur fautive nommée. Auparavant, il était accepté puis faisait planter la connexion de chaque joueur.
- Surcouches de biome par joueur (
player_biome_overlay_action) : montrez à un joueur un biome différent sans toucher au monde ni affecter qui que ce soit d'autre. - Peinture de région (
paint_biome_region_action) avec instantanés, etrestore_biome_actionpour remettre une région en place. biome_transition_cinematic: changez le biome que voit un joueur au fil d'une cinématique.custom_biome_preset: partagez des couleurs et des attributs visuels entre biomes, surchargés par définition.explore_biome_objectiveetbiome_discovery_fact: des quêtes accomplies en visitant des biomes.- Chaque entrée de lecture a gagné une option
source, permettant de choisir entre ce qui est montré au joueur et ce que contient le monde. - Suppression de
/tw biome setcolor, qui créait des biomes jetables jamais persistés, et du mode de factHASH, dont la valeur n'était pas stable d'un redémarrage à l'autre. - Le JAR de l'extension est passé de 2,6 Mo à 230 Ko : il n'embarque plus les bibliothèques que le serveur fournit déjà.
Enchantment Creator v0.8
levelModesur une mécanique comparerunOnLevelcomme un niveau exact, un minimum (AT_LEAST) ou un maximum (AT_MOST). Auparavant, seule une correspondance exacte était possible.eventPhaseexécute les actions d'une mécanique pendant l'événement Bukkit en cours, de sorte qu'annuler l'événement ou modifier les dégâts prend effectivement effet. Définissez-le sur false pour les interactions Typewriter mises en file d'attente.clientSideEffectsest devenu conscient du client, avec une actionclient_particle_effect: l'artifact BTC personnalisé utilise le moteur de rendu basé sur PacketEvents lorsqu'il est disponible, l'artifact Paper public un repli Bukkit limité au joueur.- Les clés de registre sont désormais dérivées de
id. L'anciennameest conservé comme alias historique lors du chargement des pages et des objets existants, de sorte que rien n'a à être recréé. - L'artifact public ne porte volontairement aucune dépendance à BTC-CORE ni à BTC Velocity : il fonctionne sur Paper 1.21.x avec Java 21, compilé depuis JDK 25 en ciblant le bytecode Java 21.
Numerical Storage v0.9
transactionModedans la configuration de transaction :INTERNALconserve le chemin PlaceholderAPI plus commande console,VAULTpasse directement par l'API Vault Economy et ignoreamountPlaceholderet les champs de commande.addCommandetremoveCommandétaient documentés à l'envers.addCommandtermine un dépôt dans le stockage et est vérifié avant la modification persistante ;removeCommandtermine un retrait.- La persistance est désormais asynchrone, avec des verrous de modification par artifact et un cache de courte durée, de sorte que des dépôts concurrents ne peuvent plus entrer en course les uns avec les autres.
- Les fichiers de stockage passent à la version 2 du schéma JSON sous un chemin d'artifact technique. Un ancien fichier basé sur l'
artifactIdsémantique d'origine est sauvegardé sousbackups/numericalstorage/et migré au premier accès — sauvegardez le dossierassets/de Typewriter avant la mise à jour. artifactIdest un identifiant technique généré : laissez-le vide et Typewriter le renseigne.- Les placeholders prennent un argument de définition explicite (
%typewriter_ns_balance_bank%), ce qui supprime l'ancienne ambiguïté de découpage par tirets bas lorsqu'un identifiant de définition contient lui-même des tirets bas. - Clés facultatives tenant compte des profils lorsque l'intégration Profiles est installée.
2026-08-07
Quest Codex v2.8
- De vrais advancements Minecraft. La nouvelle entrée
advancement_definitionécrit de véritables advancements dans un datapack que possède l'extension, de sorte qu'ils apparaissent dans l'écran d'advancements vanilla avec leur propre onglet, leur arbre, leurs cadres et leurs toasts.parentréférence une autre définition, de sorte que l'arbre est dessiné dans l'éditeur de nœuds. grant_advancementattribue un advancement ou le retire, et parcourt la chaîne des parents afin qu'un enfant ne soit jamais obtenu sous un parent non obtenu.autoGrantfait obtenir un advancement dès le premier tick du joueur. Sur une racine, c'est ce qui donne une existence à son onglet avant que quoi que ce soit n'ait été obtenu.- Correction de l'ordre des quêtes : une quête imbriquée lit son ordre depuis sa propre sous-catégorie, les quêtes sans ordre explicite ne se confondent plus, et l'ajout d'une quête n'efface plus l'ordre qu'elle avait déjà.
- Les marqueurs de quêtes sont paginés, le mode de tri est propre à chaque joueur, et le suivi multiple survit à une reconnexion dans l'ordre choisi par le joueur.
GUI v0.11
- Infobulles d'objets, avec un interrupteur
hideVanillaItemStatssur l'entrée de configuration GUI. - Un layout paginé peut porter un indicateur de page, grâce au nouveau rôle
INDICATOR. - Les menus sont validés au démarrage du serveur : un emplacement hors limites, un modèle manquant ou un type de bouton inconnu est nommé dans la console avant qu'un joueur n'ouvre le menu.
<shift:N>se résout sans CraftEngine, grâce à la police Magic Digit fournie.countetrepeatYsont documentés comme des nombres de répétitions d'emplacements, et non comme des tailles de pile.
Shops v1.3
- Une boutique ne peut plus faire tomber un joueur sous zéro. Trois chemins indépendants le permettaient.
- Un solde illisible n'est plus lu comme zéro, et les soldes formatés tels que
12.5ksont analysés.
2026-08-03
Quest Codex v2.7
- Ajout de modes d'affichage des waypoints :
WORLD_DIRECTIONALprojette les marqueurs sur une sphère autour des yeux du joueur selon la vraie direction de sa destination,TARGET_ANCHOREDles place sur la cible, etADAPTIVEfait la transition entre les deux.HUD_LOCKEDreste la valeur par défaut, les pages existantes sont donc inchangées. - Ajout d'une taille apparente constante et d'un désencombrement angulaire pour que plusieurs marqueurs restent lisibles lorsque leurs destinations partagent une même ligne de vue.
- Ajout du rendu multi-cibles dans une seule entrée de waypoint, avec les nouvelles sélections d'objectifs suivis
ALLetONE_PER_QUESTet un plafondmaxTargets. - Correction du suivi multiple ignoré par les waypoints : les objectifs des quêtes suivies secondaires n'étaient jamais résolus, de sorte que seule la quête principale produisait un marqueur.
- Ajout de
quest_codex_locator_bar, qui affiche les mêmes cibles résolues sous forme de points de la barre de localisation vanilla sur Minecraft 1.21.6+ sans faire apparaître aucune entité.
2026-08-02
Quest Codex v2.6
- Ajout de la récupération persistante des dialogues et cinématiques Typewriter interrompus, y compris la dernière image de cinématique. La récupération conserve désormais l'instantané capturé lorsque Typewriter émet des événements de démontage après la déconnexion d'un joueur.
- Ajout du suivi multi-quêtes persistant avec un menu des quêtes suivies, des placeholders dédiés et une fixture publique de waypoint à deux quêtes.
- Ajout de waypoints côté client en texte seul avec texte d'icône configurable, affichages de blocs centrés, rotation de balise centrée, alignement de la cible au niveau, interpolation fluide, placement près de la cible, et un cône de visibilité horizontal configurable.
- Suppression des anciennes couches de waypoint à affichage d'objet et à flèche directionnelle avant leur premier déploiement public.
GUI v0.10
- Ajout des moteurs de layout Flex et Composite pour un placement d'emplacements adaptatif et des couches de menu composées.
- Ajout de vues adressables réutilisables avec pools de layouts hérités, vues par défaut, fils d'Ariane, étiquettes de vues et intégration facultative de l'historique.
- Ajout de la migration de schéma tenant compte des vues et de l'intégration QuestCodex, ainsi que des métadonnées de publication Maven.
- Correction des changements de vue pour reconstruire les menus sans scintillement de fermeture/réouverture, et fermeture d'inventaire rendue compatible Folia.
Shops v1.2
- Recompilation et validation de l'extension Shop publique avec OmniGUI v0.10.
- Conservation des layouts de boutique dynamiques existants, de l'historique de navigation, de la gestion des objets de remplissage, des règles de stock et de limites, et des gestionnaires de boutons de boutique personnalisés.
- Aucune migration n'est nécessaire depuis Shop Extension v1.1.
MythicMobsNPC Extension v0.4.6
- Correction d'un changement d'échelle ignoré sur un modèle livré sans aucune animation, de la même façon que pour l'extension BetterModel.
- Les variantes de mobs vanilla (chat, renard, loup, villageois et similaires) sont signalées une seule fois dans la console plutôt qu'ignorées en silence : elles relèvent de la configuration MythicMobs, qui possède l'identité du mob et les écraserait à chaque réapparition.
- Correction d'une seule entrée de données en échec qui annulait toutes les autres entrées envoyées dans le même lot, ce qui pouvait laisser un PNJ sans aucune de ses données configurées appliquée.
- L'effet de lueur et l'équipement sont désormais appliqués sur le modèle, et pas seulement sur le mob. Le corps du mob est masqué derrière le modèle ; les définir sur le mob seul ne laissait donc rien de visible.
- L'équipement signale désormais dans la console lorsque le modèle n'a pas d'os d'objet, au lieu de ne rien faire en silence.
- Le feu est réaffirmé chaque seconde afin de ne plus s'éteindre de lui-même, et il indique désormais quand BetterModel masque le corps sur lequel les flammes sont dessinées.
- Correction de la nameplate qui saccadait lorsque le PNJ marche ou suit un réseau de routes : l'affichage de texte interpole désormais entre les mises à jour au lieu de se téléporter par à-coups.
BetterModel Extension v1.3
- Correction de l'échelle du modèle ignorée sur les modèles livrés sans aucune animation. BetterModel ne recalcule la transformation d'un modèle que pendant qu'une animation s'exécute ; un changement d'échelle appliqué à l'exécution n'atteignait donc jamais un modèle statique. L'extension force désormais elle-même le recalcul.
- Le même correctif s'applique au décalage du modèle, qui passait par le même chemin de code.
- Les entrées de données d'entité atteignent désormais réellement le modèle au lieu d'être abandonnées. Pris en charge : effet de lueur, couleur d'effet de potion (rendue comme une teinte d'objet), luminosité, contrainte de billboard, durée d'interpolation, translation, échelle 3D, taille de boîte, équipement et feu.
- Ajout de
bettermodel_bone_appearance, une version par os des paramètres de lueur, de teinte, de brillance d'enchantement et de luminosité, avec le même système de critères quebettermodel_bone_visibility. - L'équipement est associé aux os d'objet de main et de tête de BetterModel. Les emplacements d'armure sont signalés une seule fois dans la console plutôt qu'ignorés en silence, car le torse et les jambes d'un modèle portent leur propre géométrie.
- Une échelle 3D non uniforme avertit désormais au lieu d'utiliser silencieusement un seul axe : BetterModel ne prend en charge qu'une échelle uniforme.
- Toute entrée de données sans signification sur un modèle 3D (poses, variantes de mobs, état de reproduction...) est désormais signalée une seule fois dans la console au lieu d'être écartée en silence.
- La lueur, la teinte, la luminosité, le billboard, la translation et l'équipement survivent désormais à un rechargement du resource pack ou à une réapparition au lieu de revenir à l'apparence par défaut du modèle.
- L'équipement signale désormais dans la console lorsque le modèle n'a aucun os étiqueté
ri,liouph, au lieu de ne rien faire en silence — c'est la raison habituelle pour laquelle un objet n'apparaît pas. - Le feu est désormais dessiné sur l'entité d'interaction du PNJ plutôt que sur les os du modèle : le client met la flamme à l'échelle de la boîte englobante de l'entité, et une entité d'affichage n'en a pas ; les flammes étaient donc rendues à une taille nulle.
Nexo Extension v1.0
- Ajout de facts pour vérifier ce que le joueur tient, porte dans son inventaire, regarde ou sur quoi il se tient.
- Ajout de variables donnant l'identifiant et les propriétés de l'objet, du bloc et du meuble ciblés.
- Ajout d'une action pour donner et d'une pour retirer un objet, toutes deux fonctionnant à partir de l'identifiant d'objet Nexo.
- Ajout d'événements de ramassage, de lâcher et de consommation d'objets.
- Ajout d'événements d'interaction et de dégâts pour les blocs et meubles personnalisés, ainsi qu'un événement de butin lâché.
- Les événements transmettent désormais leurs données (identifiant de bloc, position, objet en main) à ce qui s'exécute ensuite, de sorte qu'un dialogue ou une action peut les utiliser directement.
CraftEngine Extension v1.0
- Les objectifs de quête fonctionnent désormais. Ils peuvent être attachés à une quête, ils sauvegardent leur progression, et ils peuvent déclencher une séquence à leur achèvement.
- Ajout de facts pour les cooldowns, pour les objets tenus et portés, et pour le bloc ou le meuble ciblé par le joueur.
- Ajout de variables donnant des identifiants, des propriétés d'objets et la liste du contenu chargé.
- Ajout d'une action pour donner et d'une pour retirer un objet, toutes deux fonctionnant à partir de l'identifiant d'objet CraftEngine.
- Ajout d'événements de ramassage, de lâcher et de consommation d'objets.
- Ajout d'événements pour les tentatives de placement et pour les coups portés aux meubles.
- Les événements transmettent désormais leurs données à ce qui s'exécute ensuite.
ItemsAdder Extension v1.0
- Les événements de blocs et de meubles lisent désormais directement ItemsAdder au lieu de deviner à partir des événements vanilla, ce qui les rend fiables et supprime un court délai qui pouvait faire manquer ou répéter un trigger.
- Ajout de facts pour les objets tenus et portés, les utilisations restantes, la durabilité personnalisée, la visibilité du HUD et la croissance des cultures.
- Ajout de variables donnant des identifiants, des propriétés d'objets et des images de police.
- Ajout d'une action pour donner et d'une pour retirer un objet, toutes deux fonctionnant à partir de l'identifiant d'objet ItemsAdder.
- Ajout d'événements de ramassage, de lâcher et de consommation d'objets.
- Ajout d'événements d'interaction, d'un événement de pré-placement pour les meubles et d'un événement de mort d'entité personnalisée.
- Les événements transmettent désormais leurs données à ce qui s'exécute ensuite.
2026-07-26
Quest Codex v2.5
- Ajout du suivi multi-quêtes persistant via l'entrée
quest_codex_tracking_artifact. - Ajout du mode de menu de catégorie
@trackedet des marqueurs dynamiquesTRACKED_QUEST_SLOT. - Ajout de
/tw codex trackedet de la commande GUI internecodex:tracked. - Ajout de placeholders PlaceholderAPI pour le nombre de quêtes suivies, la limite, la quête principale, les quêtes suivies indexées, les statuts, les objectifs et les priorités.
- Documentation de la disposition du bundle de pages publiques : manifest principal, artifact statique de suivi, définitions de quêtes et paramètres GUI.
GUI v0.9
- Ajout de la migration automatique du schéma des pages publiques pour le stockage en ligne et les anciens champs de pagination.
- Documentation du schéma compact
storagePool/storageIdetnavigationButtonsutilisé pour réduire les blocages de l'éditeur Typewriter lors de la publication. - Clarification du modèle recommandé de menu référencé pour les grands menus QuestCodex.