Changelog
1.2
- Dungeon Mob Spawn:
lootTable,spawnParticle, scaling with the number of players (perExtraPlayer,maxCount,playerCountSource),maxSimultaneous,waves, and the triggersonWaveClearedandonCleared. - New Dungeon Loot Table: one loot table shared by chests and mobs.
- Dungeon Loot Chest:
lootTableRef, andadditionalLocationsto place several chests from one entry (ignored in a generated dungeon). - Loot Chest Trigger:
particleEffect, with separate X, Y and Z axes and a centre. The fourtriggerParticlefields are legacy: they apply only whenparticleEffectnames no particle. - New event On Dungeon Mobs Cleared.
- New Dungeon Restrictions entry, set with
restrictionson a Dungeon Instance or a Dungeon Room: no elytra, boat or minecart, ender pearl, chorus fruit or riptide, blocked commands, a refusal message and a bypass permission. - Requires GUI (OmniGUI) 0.20. The new Dungeon Leaderboard Source uses the leaderboard source contract of GUI 0.20: with an older GUI the dungeon leaderboard does not load. Update GUI first.
- API break for addons:
DungeonArtifactData,DungeonStatsandPlayerDungeonStatsmoved to the packagebtcrenaud.dungeons.core, andDungeonArtifactEntry.getPlayerStatsandDungeonArtifactEntry.updatechanged signature. An addon compiled against Dungeon 1.1.x must be recompiled. Dungeons built in the web panel are not affected. - Statistics: 22 statistics per player (damage dealt and taken, mob kills, deaths, time played, rooms and waves cleared, records, solo and flawless completions...). They are counted during the run and paid out once per member, by artifact, with a total across artifacts. Damage is the damage that really took health, capped at the health of the target.
- Dungeon Instance:
statsMobScopechooses which mobs count in the statistics,MARKED_ONLY(default, the mobs made by the run) orANY_MOB_IN_RUN_WORLD. - New fact Player Dungeon Statistic, and the placeholders
dungeon_stat_<key>(with_rawfor the bare number),dungeon_total_<key>anddungeon_inst_<id>_<key>. The snippetscontent.dungeon_stats.duration_formatandcontent.dungeon_stats.missing_valueword them. - New entry Dungeon Leaderboard Source, to plug into the
sourcefield of a GUI leaderboard (GUI 0.20): artifacts,scope(LIFETIMEorCURRENT_RUN),rankBy,values,durationFormat,decimals,missingValueandunknownName. Row tokens:{value_<key>},{value_<key>_raw}and{score_raw}. - Dungeon Instance:
reconnectGrace(2 minutes by default). A member who disconnects keeps their place for that delay and, back in time, resumes with their sidebar, hidden slots and game mode. Afterwards they leave the run and return to their entry point when they reconnect. See Disconnections. - Dungeon Restrictions:
gameMode(optional, for exampleADVENTURE; the player's own mode comes back on exit;CREATIVEandSPECTATORswitch the combat statistics off),limitInteractionswithallowedInteractions(CHEST,TRAPPED_CHESTandBARRELby default) andprotectedEntities(item frames, armor stands, paintings), andmessageRepeatDelay(2 seconds).limitInteractionsalso refuses placing blocks, buckets, vehicles, spawn eggs, fire, bone meal and tools used on blocks. - Dungeon Restrictions: riptide and chorus fruit are now refused at the click, not only their effect. Only the bypass permission exempts a player: an operator has it unless the node is explicitly set to
false. - Dungeon Category: the slot fields
unlockedLoreandlockedLoreare nowunlockLoreandlockLore. Pages saved with the old names still read; if both are present, the new one wins. - MMOProfiles: once the player has chosen a profile, the return to the entry point and the original game mode are applied again.
- Fixes:
runs_leftno longer counts a death that takes the player out of the run (it stays indeaths);waves_clearedcounts only the groups that definewaves;%typewriter_dungeon_stat_current_health%shows the live health during a run; the statistics writer no longer stops saving after an error; a run closed at a reload because none of its members is online counts the time played for its absent members. - Nothing changes for an existing dungeon until it uses one of these fields. For a chest that appears when every mob is defeated, see Entities in dungeons.
1.1.1
- Paper 26.x: a
WORLD_PER_RUNrun could fail withThe server did not create world 'dungeon_classic_...'. The copy of the template kept the template's world ID (data/paper/metadata.dat), so the server refused it as a duplicate. The copy now gets its own ID.
1.1
- Public release of the rework below. Fix since the 1.0 build:
WORLD_PER_RUNnow copies a template world stored the Paper 26.x way (dimensions/minecraft/<name>).
1.0
This is a rework of the extension, built around a run model. See the migration note before updating a server that used 0.10.
Runs and worlds
- A run now has its own state machine, registry and journal. Starting a run is all-or-nothing: if a step fails, nothing is kept and the entry cost is refunded.
- Three isolation modes, set per dungeon with
isolation:SLIME_CLONE,WORLD_PER_RUN,SHARED_WORLD_SLOTS, andAUTO(default). A mode that cannot run refuses the run. See Runs and world isolation. - Worlds stored the Paper 26.x way (
dimensions/minecraft/<name>) are found forSHARED_WORLD_SLOTSand copied forWORLD_PER_RUN; a world setup problem is logged on one line instead of a full stack trace. - A
typewriter reloador a Publish adopts the running runs again. A server restart ends them cleanly. cooldownSecondsis a real time limit:0or empty means no limit.- Orphaned run worlds are purged at start-up with guards (name, marker file, never a loaded world).
- Statistics are written: attempts, completions and best time, per dungeon and per player.
damageMultiplierand the dungeoncriteriaare applied.
Generated dungeons
- New entries: Dungeon Room Template, Dungeon Connector Type, Dungeon Room Pool, Dungeon Generator, Dungeon Affix, and an in-game editor for doors and markers. A dungeon with a
generatoris assembled for each run. The same seed gives the same dungeon. See Generated dungeons.
Rooms, events and facts
- Room
onEnterandonLeavetriggers,enterOnce,leaveOnce,priority,criteriaandmodifiersnow work. A newverticalMarginfield. - New events: on_dungeon_start, on_dungeon_complete, on_dungeon_room_enter, on_dungeon_room_leave, on_dungeon_mob_death.
- The facts
indungeonandindungeon_instancenow work. New fact dungeon_mobs_alive. - New actions: Dungeon Complete, Dungeon Clear Room, Dungeon Spawn Mobs.
- New Dungeon Run Audience and Dungeon Run Group.
Menus and lobbies
- Menus refresh live (
autoRefreshTicks) and when any lobby changes. - The waiting scoreboard works.
DUNGEON_LOBBY_SLOTmarkers place lobbies. The slotcriteriaare evaluated for each player. - A party menu can name its dungeon (
dungeonInstance); an empty one serves every dungeon no other menu names. - Parties of MMOCore, Parties and the Typewriter party extension are read only.
Chests
- One roll per player and chest,
visibility(AUTO,PER_PLAYER,SHARED),onDisappear,lootSelectionandweightedPicks, chest animation, facing from the yaw, CraftEngine and Nexo blocks, chests restored after a reload.
Entities in dungeons
- Dungeon NPC Instance: a per-run NPC from any entity definition, now shown to the members of its run.
- Dungeon Mob Spawn: vanilla combat mobs, once per run, with a cap (
maxAliveMobs). See Entities in dungeons.
Player texts and new fields
- The texts of the menus, lobbies, run sidebar, loot chests and launch refusals are snippets (
content.dungeon_menu.,content.dungeon_lobby.,content.dungeon_run.sidebar.,content.dungeon_chest.,content.dungeon_launch.). Defaults are unchanged. The replies of the/typewriter dungeon ...commands are snippets too (content.dungeon_command.). - New field
lobbyIdleKickSecondson the Dungeon Instance (default120). - New fields on Loot Chest Trigger:
triggerSoundVolume,triggerSoundPitch,triggerParticleCount,triggerParticleSpread,triggerParticleSpeed.broadcastMessageaccepts colour codes.
Commands
- Removed the
startsub-command, which never worked. Commands are documented in the index.
Known limits
- Paper only. Folia is not supported right now.
- Generated dungeons use
WORLD_PER_RUNonly.
0.10
The standalone build. Room triggers, the two "in dungeon" facts, the NPC instance and the statistics were declared but not active.