Senzu beans, saibaman pets, the shrine, hoverbikes, prestige, character slots, and the two switches that change DragonMineZ itself.
This page covers the suite's own added content, the two switches that change DragonMineZ itself, and the diagnostic tooling.
Things that are true of everything on this page:
Content.*) are the names these modules had in the old operator switchboard
(config/dmz_ragnarok/modules.cfg). That file is no longer read: a module runs when its jar is installed and, if it is private, when the Ragnarok Key is present.
takes effect on the next server restart.
<gamedir>/ShuruisUtilities/<Name>.toml, NOT under config/. The file name is
the config's registered name (SUModConfig appends .toml and redirects the path to the SU directory).
dmz_ragnarok_key), and no tiers: a feature is public (any server running
the mods) or needs the Ragnarok Key. Gating notes are given per module where they matter.
The umbrella switch for all of the suite's own added content. It is a plain group parent (not a module of its own): turning Content off in the switchboard disables every Content.* child at once (senzu, saibaman pets, shrine, hoverbikes, space pod, nimbus, form cosmetics, NPC regions, sparring, TP boost, mini clone, prestige, character slots, CustomNPCs economy).
None. (Content itself registers nothing; see each child module.)
None of its own.
None of its own.
None of its own; see each child module.
@SUModule named "Content"; it exists purely so an operator can
flip the whole content half in one line. Leave it ON unless you want to strip all added content.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/senzu/ (module SenzuModule.java).
Adds the senzu-bean farming system: growable bean pots, a range of restorative beans (senzu, health, ki, stamina, plus cracked/burnt/death variants), the golden "death totem" bean that revives you on a lethal blow, a senzu bean bag, and Korin's weekly senzu handout.
None. (Beans are used by right-click; the bag has keybinds, see below.)
None registered by this module.
File: <gamedir>/ShuruisUtilities/Senzu.toml, section [Senzu].
| Key | Default | Effect | |---|---|---| | growthTicks | 287000 | Server ticks for a bean plant to grow stage 0 to stage 3 (split evenly over 3 advances). ~10x vanilla wheat, roughly 4 real hours. Range 20 to 20000000. | | crackedChance | 0.25 | Chance (0.0 to 1.0) a normal pot harvest yields the weaker cracked variant instead of the full bean. Burnt and Death pots ignore it. | | goldenCooldownMinutes | 30 | Minutes between golden-bean death saves, per player. While on cooldown a carried golden bean does not fire. 0 = no cooldown. Range 0 to 1440. | | cooldownTicks | 200 | Shared reuse cooldown in ticks (20/sec) for click-to-eat beans; eating any bean locks out every bean kind. Default 200 = 10s. 0 = none. Range 0 to 72000. | | korinBeanCount | 4 | How many bean_senzu Korin hands a player per claim. Range 1 to 64. | | korinCooldownDays | 7 | Real-life days between Korin handouts per player (wall clock, counts downtime). 0 = a claim every interaction. Range 0 to 365. |
Registry ids are dmz_ragnarok: namespaced. In-game names from the lang file:
Edible beans: bean_senzu "Senzu Bean", bean_hp "Health Bean", bean_ki "Ki Bean", bean_stamina "Stamina Bean", bean_cracked "Cracked Senzu Bean", bean_cracked_hp "Cracked Health Bean", bean_cracked_ki "Cracked Ki Bean", bean_cracked_stamina "Cracked Stamina Bean", bean_burnt "Burnt Bean", bean_death "Death Bean", bean_cracked_death "Cracked Death Bean".
Non-edible totem beans: bean_golden "Golden Bean", bean_cracked_golden "Cracked Golden Bean".
Seeds: seed_senzu "Senzu Bean Seed", seed_hp "Health Bean Seed", seed_ki "Ki Bean Seed", seed_stamina "Stamina Bean Seed", seed_golden "Golden Bean Seed", seed_burnt "Burnt Bean Seed", seed_death "Death Bean Seed".
Blocks (pots): bean_pot "Bean Pot" (blank), plus typed pots bean_pot_senzu "Senzu Bean Pot", bean_pot_hp, bean_pot_ki, bean_pot_stamina, bean_pot_golden, bean_pot_burnt, bean_pot_death, bean_pot_cracked.
Bag: senzubag "Senzu Bean Bag" (SenzuBagItem) with a menu; keybinds "Open bean bag" and "Pull a bean from the bag".
are off cooldown, the death is cancelled and you are fully restored (fires at HIGHEST priority, so it beats the grave handler). A full golden bean is a guaranteed save; a cracked golden bean is a 75% gamble that still consumes the bean and stamps the cooldown even on a failed roll. Cooldown is stored on persisted NBT (survives relog and death) and measured in game ticks, so a stopped server does not burn it.
cooldownTicks knob is shared across ALL bean kinds by design; there is no per-kind pacing.
without the Ragnarok Key.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/saibaman/ (module ModuleSaibamanPet.java).
Adds growable, tamed Saibaman companion pets. You plant a saibaman seed; the longer you charge ki beside the growing plant, the higher the pet's tier (and colour) when it hatches. Pets fight for you and self-destruct in an explosion when near death.
None. (Seeds are placed and pets managed by interaction; the growth rod is admin-only, see below.)
None registered by this module.
File: <gamedir>/ShuruisUtilities/SaibamanPets.toml, section [SaibamanPets]. Also editable in-game from the SU admin GUI ("Saibaman Pets" editor), which writes and re-bakes live onto loaded pets.
| Key | Default | Effect | |---|---|---| | maxHealth | 20.0 | Fallback max health of a tamed pet (used when the owner has no readable DMZ character). Floor 1.0, no ceiling. | | attackDamage | 4.0 | Fallback melee attack damage. Floor 0.0, no ceiling. | | moveSpeed | 0.3 | Movement-speed attribute. Floor 0.0, no ceiling. | | explosionThreshold | 0.2 | Fraction of max health at or below which the pet self-destructs (0.0 to 1.0). | | explosionRadius | 3.0 | Radius (blocks) of the near-death explosion; breaks no blocks. Range 0.0 to 32.0. | | explosionDamage | 6.0 | Peak explosion damage at the centre (falls to 0 at the edge); never harms the owner or the owner's other pets. Floor 0.0, no ceiling. | | maxPetsPerPlayer | 3 | Most live pets one player may have on THIS server (per shard, not network-wide). Growing a new one is refused at the cap. Range 1 to 256. |
Note: a harvested pet actually scales to a PERCENTAGE of its OWNER's live DMZ stats (max health tracks owner max health, melee tracks owner melee), by tier: tier 1 = 50% of the owner, +10% per tier, so tier 6 is about 81%. The tier is set by the FRACTION of the plant's growth spent charging ki beside it (floors 0.0 / 0.20 / 0.40 / 0.60 / 0.80 / 0.95). Those tier percentages and the growth-quality curve are hard-coded design constants, NOT toml knobs; the flat maxHealth/attackDamage above are only the fallback.
saibaman_seed "Saibaman Seed" (planted to grow a pet).
saibaman_grow_tool "Saibaman Growth Rod" (admin: right-click a growing plant to finish it instantly).
saibaman_crop "Saibaman Plant".
saibaman_pet "Saibaman". Six tier names shown per colour: Feeble, Scrappy, Sturdy, Fierce, Savage,
Elite (tiers 1 to 6).
maxPetsPerPlayer is per-shard and deliberately NOT synced across the shard network (it is excluded from the
shard state snapshot); the other six stats DO sync network-wide (last-write-wins).
admin tuning need the Ragnarok Key.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/shrine/ (module ModuleShrine.java).
A "place of power" system. Admins define named shrines, each granting a timed buff to one DMZ stat OR a personal TP-gain boost, and bind them to physical world blocks. A player right-clicks a bound block to get the buff, with a per-player per-shrine cooldown.
/shrine (admin, OP). Player-usable is only "right-click a bound block"; there is no player subcommand.
/shrine create <name> create a shrine.
/shrine delete <name> delete one.
/shrine list list shrines with type/percent/duration/cooldown.
/shrine info <name> show one shrine's settings.
/shrine settype <name> <STAT|TP> set the shrine type.
/shrine setstat <name> <stat> set which DMZ stat a STAT shrine buffs (valid: STR, SKP, RES, STM, VIT, PWR, ENE).
/shrine setpercent <name> <percent> set the buff percent (clamped to maxPercent).
/shrine setduration <name> <seconds> set buff duration (>= 1).
/shrine setcooldown <name> <seconds> set per-player per-shrine cooldown (>= 0).
/shrine setname <name> <display...> set the display name (supports & colour codes).
/shrine bind <name> bind the block you are looking at to a shrine.
/shrine unbind unbind the shrine block you are looking at.
Console cannot use /shrine (canConsoleUseCommand = false).
su.shrine - ALL - "Use shrines (right-click a bound block)".
su.shrine.admin - OP - "Manage shrines (/shrine)".
File: <gamedir>/ShuruisUtilities/Shrine.toml. (This file is shared with Content.TpBoost.)
Section [Shrine]:
| Key | Default | Effect | |---|---|---| | defaultPercent | 25.0 | Percent boost a newly-created shrine starts with (25.0 = +25%). | | defaultDuration | 300 | Default buff duration in seconds for a new shrine. | | defaultCooldown | 3600 | Default per-player per-shrine cooldown in seconds. | | allowedStats | ["STR","SKP","RES","STM","VIT","PWR","ENE"] | Stat keys a STAT shrine may buff. | | maxPercent | 500.0 | Hard cap on any shrine's percent boost. |
None. Shrines bind to EXISTING world blocks; the module adds no block or item of its own. Shrine definitions and their bound blocks are stored by ShrineManager; buff timers live on the player's persisted NBT (survive relog and death).
BonusStats have no expiry.
/shrine in the dispatcher.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/hoverbike/ (module ModuleHoverbikes.java).
Adds four ridable hoverbikes as Curios "chips": equip a chip, then use the summon keybind to deploy/dismiss the bike. Speeds and sprint boost are configurable.
None. Uses the keybind "Summon/Dismiss Hoverbike" (key.dmz_ragnarok.core.hoverbike) and a toggle packet.
None registered by this module.
File: <gamedir>/ShuruisUtilities/Hoverbikes.toml, section [Hoverbikes]. Also editable in the SU admin GUI.
| Key | Default | Effect | |---|---|---| | speed_1 | 0.35 | Base ground speed of hoverbike 1 (Mk. I), blocks/tick scalar on forward input. Floor 0.0, no ceiling. | | speed_2 | 0.40 | Base ground speed of hoverbike 2 (Mk. II). | | speed_3 | 0.45 | Base ground speed of hoverbike 3 (Mk. III). | | speed_4 | 0.50 | Base ground speed of hoverbike 4 (Mk. IV). | | sprintMultiplier | 1.6 | Speed multiplier while the rider holds sprint. Floor 1.0, no ceiling. | | soundEnabled | true | Play the looping engine sound while a bike is driven. |
hoverbike_1 "Hoverbike Mk. I", hoverbike_2 "Hoverbike Mk. II", hoverbike_3 "Hoverbike Mk. III",
hoverbike_4 "Hoverbike Mk. IV" - Curios chip items sharing the hoverbike Curios slot.
hoverbike "Hoverbike"; Curios identifier hoverbike "Hoverbike".
hoverbike Curios slot and the
same summon keybind, so exactly one vehicle (bike OR pod OR nimbus) can be worn/deployed at a time.
speeds).
(see below).
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/spacepod/ (PodChipItem.java).
Adds a Curios chip that summons DragonMineZ's own space pod vehicle. Split out of Content.Hoverbikes on 2026-08-30 into its own switch.
None. Uses the shared hoverbike summon keybind and toggle packet.
None.
None of its own.
space_pod_chip "Space Pod Chip" - a Curios chip (no cosmetic variants). Right-click auto-equips into the
hoverbike slot.
hoverbike Curios slot and summon keybind with the hoverbikes and the nimbus: only one vehicle at
a time.
use() (and the toggle packet's pod branch) is gated on BOTH PublicContent.FEATURE_SPACE_POD
AND SuiteModules.on("Content.SpacePod"). If the switch is off the chip equips but never summons.
Content.SpacePod is a plain
switchboard entry (not an @SUModule); its runtime sites read it by key.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/nimbus/ (NimbusChipItem.java).
Adds a Curios chip that summons DragonMineZ's flying nimbus (the black nimbus for an evil alignment). Split out of Content.Hoverbikes on 2026-08-30 into its own switch.
None. Uses the shared hoverbike summon keybind and toggle packet.
None.
None of its own.
nimbus_chip "Nimbus Chip" - a single Curios chip (no cosmetic variants). Which nimbus ENTITY spawns (flying
vs black) is decided at summon time from the player's DMZ alignment, not from the chip.
hoverbike Curios slot and summon keybind with the hoverbikes and the space pod: only one vehicle
at a time.
PublicContent.FEATURE_NIMBUS AND SuiteModules.on("Content.Nimbus"); off = equips but never
summons.
Content.Nimbus is a plain switchboard entry (not an @SUModule).
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/cosmetics/form/ (module ModuleFormCosmetic.java).
A Patreon supporter cosmetic: it lets an entitled player override how one of their DMZ forms looks (and the aura cosmetic), styling that is synced so everyone renders it the same.
None. The module is only a login hook (ModuleFormCosmetic.onLogin); editing is done through the in-game form appearance GUI, which sends the choice to FormCosmeticManager.
None. Entitlement is decided server-side through PatreonAPI.hasReward(uuid, REWARD_FORM_COSMETIC), never a client claim or a permission node.
None.
None.
the wire while the player is CURRENTLY entitled. A lapsed supporter can no longer edit (save is refused) and their styling stops rendering for everyone until they resubscribe.
tier as above, so being "public" means it is not key-locked, not that everyone gets the cosmetic.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/npcregion/ (module ModuleNpcRegion.java).
Admin tool: define box regions in the world in which custom NPCs spawn (populations, drops, aggro behaviour). Regions are usually drawn by shift-dragging on Xaero's world map, but every action is also a command.
/npcregion (admin, OP). Cannot be used from console.
/npcregion define <name> define a region from your current WorldEdit//pos1+/pos2 selection.
/npcregion define <name> <x1> <z1> <x2> <z2> define by explicit XZ (full world height).
/npcregion create <x1> <z1> <x2> <z2> create with an auto name (npcregion1, npcregion2, ...); used by the map drag.
/npcregion addbox <name> <x1> <z1> <x2> <z2> add another box to an existing region.
/npcregion removebox <name> <index> delete one box (1-based); refuses if only one box remains.
/npcregion remove <name> delete a region.
/npcregion rename <name> <newname> rename a region.
/npcregion list list region names.
/npcregion info <name> show a region's dimension, volume, boxes and NPC configs.
/npcregion tp <name> teleport to a region.
/npcregion edit <name> open the region editor GUI.
su.npcregion.admin - OP - "Manage NPC regions (/npcregion, editor saves, map outlines)".
su.npcregion.create - OP - "Create new NPC regions (map drag / define / create)". Checked separately
from .admin so a server can grant edit-existing without grant-new.
su.gui.npcregions - OP - "Open the NPC Regions editor GUI".
su.npcregion is the parent description node.)
File: <gamedir>/ShuruisUtilities/main.toml, section [Misc].
| Key | Default | Effect | |---|---|---| | NpcRegionAutoAggroBpFraction | 0.10 | How far (either way) a player's DMZ battle power may be from a hostile region NPC's own and still be attacked on sight, as a fraction (0.10 = a +/-10% band). A weaker player questing nearby or one who far outclasses the NPC is left alone. Never affects retaliation. 0 = only an exact BP match engages; 1 = engage every player in range (old behaviour). Range 0.0 to 1.0. |
None of its own. Region NPCs are spawned from the DMZ/CustomNPCs entity types the region config points at.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/sparring/ (module ModuleSparring.java).
A consensual, non-lethal training bout between two guild OR party members. Damage is capped/non-lethal, and the spar awards DMZ Training Points scaled by how long and hard it was fought and how close the two are in power, so it is a group alternative to DMZ's solo training minigames.
/spar (player, ALL). Cannot be used from console.
/spar <player> send a spar invite.
/spar accept accept a pending invite.
/spar deny deny a pending invite.
/spar cancel clear your invite, or forfeit the spar you are in.
su.spar.use - ALL - "Start and accept spars".
su.gui.sparringsettings - OP - "Edit the sparring settings".
su.spar is the parent description node.)
File: <gamedir>/ShuruisUtilities/sparring/config.json (this is a JSON via the SU DataManager, NOT a TOML), edited in-game from the sparring settings GUI. Defaults from SparConfig.java:
| Key | Default | Effect | |---|---|---| | enabled | true | Master switch for the feature. | | allowGuildSpar | true | Allow spars between two members of the same guild. | | allowPartySpar | true | Allow spars between two members of the same DMZ party. | | requireGuildBaseForGuildSpar | true | A guild spar may only start while both fighters stand in a chunk claimed by their shared guild. Party spars never require a base. | | maxSeparationBlocks | 64.0 | Max blocks the fighters may drift apart before the spar ends as a draw (no TP). Leaving the dimension ends it the same way. | | inviteExpireSeconds | 30 | Seconds a pending invite stays open. | | cooldownSeconds | 600 | Per-player cooldown before starting another spar (default 10 min). | | idleTimeoutSeconds | 20 | No blow landed for this many seconds ends the spar as a draw (no TP). | | maxDurationSeconds | 300 | Hard cap on a single spar's length; on reaching it, draw (no TP). | | blockHealingItems | true | Block healing items for both fighters during a spar. | | blockAllFood | false | Block ALL edible items, not just healing ones. | | extraBlockedHealingItemIds | ["dragonminez:senzu_bean","minecraft:golden_apple","minecraft:enchanted_golden_apple"] | Extra item ids blocked during a spar (on top of SU's own healing beans). | | tpPointsPerHealthBar | 3.0 | "Training points" per full bar of damage dealt (relative to opponent max health). | | tpPointsPerMinute | 2.0 | Training points per minute the spar lasts. | | winnerTpTransferPercent | 25.0 | Winner takes this percent (0 to 100) of the loser's earned TP (zero-sum transfer). 0 disables the transfer. | | perSparPointCap | 40.0 | Cap on effort points a single spar can earn. | | globalTpMultiplier | 1.0 | Global multiplier on every spar payout. | | closenessExponent | 2.0 | Power-closeness curve exponent (higher punishes mismatches harder). Uses BASE battle power. | | minClosenessRatio | 0.34 | If the weaker fighter's base BP is below this fraction of the stronger's, the spar pays ZERO (anti-farm floor, ~3:1 gap). | | scaleByProgression | true | Convert points to TP with DMZ's own progression curve so the reward tracks growth. | | rewardBaseCoefficient | 3.4 | DMZ reward coefficient (matches DMZ training.json). | | rewardCostExponent | 0.6 | DMZ reward cost exponent (matches DMZ training.json). | | flatTpPerPoint | 5000 | Flat TP per reward point when scaleByProgression is off. |
None.
sparring/, not a TOML in the SU root, so it is the exception to the "SU config is
TOML" rule for this group.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/tpboost/ (module ModuleTpBoost.java).
Lets an admin start a server-wide DMZ Training-Point gain boost for a set time (an "XP weekend" style event switch). It stacks with prestige and permission TP bonuses.
/tpboost (admin, OP). Usable from console.
/tpboost <percent> <seconds> start a +percent% global TP boost for seconds (clamped to config caps; broadcasts).
/tpboost off end the current boost immediately (broadcasts).
/tpboost status show the active boost's percent and remaining time.
su.tpboost.admin - OP - "Manage the global TP boost (/tpboost)".
su.tpboost is the parent description node.)
File: <gamedir>/ShuruisUtilities/Shrine.toml, section [Shrine_TpBoost] (the caps live in the shrine config file).
| Key | Default | Effect | |---|---|---| | tpBoostMaxPercent | 1000.0 | Maximum percent /tpboost may set. 0 = uncapped. | | tpBoostMaxDuration | 86400 | Maximum duration in seconds /tpboost may set. 0 = uncapped. |
None.
Shrine.toml, not a TpBoost.toml.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/clone/ (MiniClone.java), feature key MiniClone in core/config/Features.java.
A quest-earned DMZ technique (su_mini_clone) that, when charged and cast, summons miniature clones of the caster to fight alongside them. A full charge spawns one clone; overcharging to ~175% spawns a second. Majin casters get a tinted Buu, bio-androids a tinted Cell Jr., everyone else a green-outlined copy of themselves.
None. It is a technique cast in DMZ (dispatched via a mixin on DMZ's technique dispatcher), not a command.
None. This is a Features toggle, not a permission-gated command.
None. The only operator switch is the switchboard key Content.MiniClone.
mini_clone "Mini Clone". Variants: player copy (green-outlined), Buu (majin), Cell Jr. (bio-android).
membership is cleaned up on death (leaving it would leak permanent rows into scoreboard.dat).
mini-clone in PUBLIC_FEATURES) and can be cast on any server
running the mods, with or without the Ragnarok Key.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/prestige/, feature key Prestige in core/config/Features.java. Kit gating in shuruisutilities/src/main/java/net/shurui/shuruisutilities/commands/item/CommandKit.java.
Lets a maxed character reset for a permanent reward. At a prestige NPC (or /prestige), a character with all six DMZ stats maxed can prestige: its DMZ progress (stats, skills/abilities, mastery, techniques, bonus stats, quest data, dynamic growth) and beyond-cap Z-Soul progress are wiped, and each prestige level grants permanent bonuses (a TP-gain bonus, a wider stat cap, an optional name colour, and an optional reward kit). Prestige is per character slot, so each character climbs independently.
/prestige (player, ALL). Cannot be used from console.
/prestige open the prestige screen (needs su.prestige.use).
/prestige npc [entityType] [name] (OP) turn a spawned entity into a right-clickable prestige master.
/prestige delete (OP) delete the nearest prestige NPC within 8 blocks.
/prestige delete all (OP) delete all prestige NPCs in this dimension.
/prestige forceall <level> (OP) set a server-wide prestige FLOOR (see gotchas). 0 clears it.
/prestige forceall (OP) report the current floor.
/prestige kit set <level> <kit> (OP) set which existing kit a prestige level unlocks.
/prestige kit clear <level> (OP) clear a level's kit.
/prestige kit list (OP) list level-to-kit mappings.
/prestige colour set <level> <colour> / color ... (OP) set the name colour a level (and up) paints.
/prestige colour clear <level> / color ... (OP) clear a level's colour (it then inherits the highest below it).
/prestige colour list / color list (OP) list colours.
/prestige questgate set <quest> <level> (OP) require a minimum prestige to do a quest.
/prestige questgate clear <quest> (OP) clear a quest gate.
/prestige questgate list (OP) list quest gates.
(Both colour and color spellings are registered.)
su.prestige.use - ALL - "Use the prestige system".
su.prestige.admin - OP - "Spawn prestige NPCs" (and all admin subcommands: npc, delete, forceall, kit, colour, questgate).
su.tpgain - value-permission, default "0" - "Extra TP gain in percent (stacks with the prestige bonus)".
su.prestige.rewarded - value-permission, default "0", registered OP-only/hidden - internal reward
ledger: the highest prestige level this player was ever rewarded for (do not edit by hand).
Kit permission nodes (deny-by-default for prestige kits). The per-kit node is su.commands.kit.<kitName> (PERM = su.commands.kit, from CommandKit). The default levels differ by kit:
su.commands.kit.<name> is never registered, and an unset SU
permission node resolves as ALLOW, so ordinary kits are claimable by everyone until an operator explicitly denies the node. (This is SU's long-standing allow-by-default behaviour.)
/prestige kit set): it is deny-by-default. A player may
only /kit <name> it if EITHER they have earned it (crossed the prestige level, recorded as an unlock in their PlayerInfo) OR su.commands.kit.<name> has been explicitly SET to true for them or one of their groups (an explicit grant, su.commands.kit.*, or * all pass). An unset node is NOT enough. So handing a server prestige level 1 no longer leaks every level's kit at prestige 0.
su.commands.admin - OP - "Administer kits"; su.commands.kit.bypasscooldown - OP -
"Bypass kit cooldown".
File: <gamedir>/ShuruisUtilities/main.toml, section [Misc]:
| Key | Default | Effect | |---|---|---| | PrestigeMaxLevel | 3 | Highest prestige level a character can reach. No ceiling. | | PrestigeTpBonusPercentPerLevel | 10 | Bonus TP gain in percent per prestige level (additive; 10 => +30% at prestige 3). Range 0 to 100000. | | PrestigeCapBonusPercentPerLevel | 25 | Bonus to the DMZ per-stat max cap in percent per prestige level (additive; 25 => +100% = double the max at prestige 4). Range 0 to 100000. |
Per-world settings NOT in the TOML (stored as PrestigeSettings SavedData, seeded from the config defaults the first time the world is created): the level-to-kit map, level colours, quest gates, the prestige floor and its "set at" timestamp, and the NPC model. These are edited only through /prestige and the prestige admin GUI.
No items or blocks. Prestige NPCs are ordinary entities turned into masters by /prestige npc (any entity type; default model comes from PrestigeSettings).
character slot: su.prestige.rewarded tracks the highest level ever rewarded, and when any of a player's characters climbs above it, one slot is granted per newly-crossed level and the ledger bumps. The ledger is seeded once on first encounter to the current highest prestige, so existing players get no retroactive slots. Both the ledger and the slot grant live in per-UUID player data (via PrestigeLedger), so they travel with the player across the shard network and survive character deletion.
and gives the kit once immediately (starting the kit's own cooldown); afterwards the player re-claims it with /kit <name> whenever that kit's cooldown is up. Prestige keeps no timer of its own.
/prestige forceall <level> sets a FLOOR, it does not rewrite playerdata. It reaches everyone online now
and everyone who had already played before it was set, the first time they next log in; every character it raises is RESET to scratch. It stamps the moment it is set, so players whose first login is after that are left alone. Running it twice does nothing twice. 0 clears it (nobody is demoted).
/prestige kit set to a kit that does not exist is refused at the command; a kit deleted later is
logged as a warning at grant time and skipped.
level x PrestigeTpBonusPercentPerLevel) + the
su.tpgain value-perm.
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/character/, feature key CharacterSlots in core/config/Features.java.
Lets a player keep multiple separate DMZ characters on one account and switch between them. Each slot has its own DMZ character, inventory, Curios, XP, food and effects; the ender chest is shared.
/character (aliases /characters, /char) (player, ALL). Cannot be used from console.
/character or /character gui open the character selection GUI.
/character list list your characters and which is active.
/character switch <slot> switch to slot number (1-based).
/character new [name] create a new character (optionally named).
/character rename <slot> <name> rename a slot.
/character delete <slot> delete a slot.
su.character.use - ALL - "Use character slots".
su.character.slots - value-permission, default "1" - "How many character slots a player may have".
Clamped to HARD_CAP = 20. On a network this grant lives in player data (via PrestigeLedger) so it travels with the prestige that earned it.
su.character.swap_cooldown - value-permission, default "600" - seconds between character swaps (0 = no cooldown).
su.character.combat_lock - value-permission, default "120" - seconds after combat during which swaps are blocked (0 = off).
No TOML. The tunables are the value-permissions above (defaults set at registration).
None.
Content.Prestige reward ledger).
are a separate system and were never key-gated.)
Source: shuruisutilities/src/main/java/net/shurui/shuruisutilities/economy/ModuleEconomy.java + compat/customnpcs/ZeniShopHandler.java, compat/customnpcs/TransporterFeeHandler.java. Feature key CustomNpcsEconomy in core/config/Features.java.
Pays CustomNPCs shops and transporter (fast-travel) fees out of the suite's Zeni economy, so CustomNPCs commerce uses your server currency instead of vanilla emeralds/items.
None of its own (uses the existing economy and CustomNPCs interfaces).
su.economy.fasttravel_zeni_per_10 - value-permission, default "1" - "Zeni charged per 10 blocks of
CustomNPCs fast travel (0 = free)". Distance is rounded up per started 10 blocks; too little Zeni cancels the transport.
su.economy.shop_shiftclick_stacks - value-permission, default "1" - shift-click stack buying behaviour
in Zeni shops.
None (behaviour is driven by the value-permissions above and the CustomNPCs shop setups).
None.
customnpcs to be loaded; the handlers only initialise when
ModList.isLoaded("customnpcs") AND the CustomNpcsEconomy feature is enabled.
public.
Source: four mixins in shuruisutilities/src/main/java/net/shurui/shuruisutilities/core/mixin/dmz/: MixinDmzMutantStats, MixinDmzMutantForms, MixinDmzMutantMastery, MixinDmzMutantAnnounce.
DEFAULT OFF. When turned on, it strips the mechanical payoff of DragonMineZ's mutant trait so a mutant's numbers are exactly a non-mutant's. Specifically, while on:
StatsData.getMutantTpMultiplier is forced to 1.0, so a mutant no longer earns training points
faster (and the client TP tooltip drops its mutant line automatically).
TransformationsHelper.hasMutantLegendaryAccess is forced false (the real skill level
is required, no one-level shortcut), and the mutant preference in getGroupWithFirstAvailableForm is suppressed so a mutant's auto-picked first form matches a non-mutant's.
applyMutantFormPowerModifier returns the multiplier unchanged, so a legendary form is worth what
it is worth to a non-mutant.
PotionEffectHelper.getMutantMasteryMultiplier is forced to 1.0, so a mutant masters forms at the
normal rate.
The trait itself is left in place: the mutant lottery still runs, the player is still flagged (isMutant still returns true), and the effect icon still shows. Only the four bonuses above are removed.
None.
None.
None beyond the switchboard key MutantNerf in config/dmz_ragnarok/modules.cfg (default false).
None.
exactly as DMZ wrote it, which is what someone who installed the suite for its content expects. Only this network wants the nerf; it ADDS a change rather than removing something.
SuiteModules.onHere(...)): these mixins apply on client and server,
and the client asks the set the SERVER synced on login, not its own file, so a client cannot draw a bonus the server does not grant.
some other module.
DEFAULT ON (but only ever seen when MutantNerf is on). Replaces the line a newly-created mutant sees. Instead of DMZ's congratulations (message.dragonminez.mutant.gained), the player gets the suite's line message.dmz_ragnarok.mutant.gained: "Congratulations, you are a mutant. Do you feel special?". With this child off, DMZ's own congratulation message is shown again.
None.
None.
None beyond the switchboard key MutantNerf.Joke (default true).
None.
MutantNerf. SuiteModules.on walks the ancestor chain, so if MutantNerf is off (the
default) this line is NEVER shown whatever MutantNerf.Joke says: a joke about an inert trait would be a lie on a server where the trait still pays.
changes.
Source: sdu/src/main/java/net/shurui/dev/sdu/diagnostics/HitDiagnostics.java (passive log) + shuruisutilities/src/main/java/net/shurui/shuruisutilities/diagnostics/HitCheckCommand.java (/rg hitcheck).
DEFAULT OFF. An instrument for chasing "I cannot damage this NPC" reports. When on:
[hitdiag] log
line naming the exact gate that refused it (protection permission, guild claim, region flag, jail, freeze, spar, dungeon, raid, tournament, or DMZ stun), at most once per attacker per 5 seconds.
/rg hitcheck command (below) evaluates every deterministic gate in pipeline order for the
entity you are looking at and prints an ALLOW/DENY verdict per gate, plus notes for stochastic gates (dodge rolls) it cannot decide from state.
It is strictly read-only: it changes NOTHING about what any gate decides. Its whole body is wrapped so a bug in it cannot suppress a hit.
/rg hitcheck - run as a player, looking at the NPC you cannot hit. Prints the per-gate verdict and the first gate to refuse. Registered ONLY while HitDiagnostics is on (a command cannot be removed from the dispatcher after registration, so the switch is checked at RegisterCommandsEvent).
None registered. Access is gated by the raw operator level: /rg hitcheck requires permission level 2 (op); .requires(src -> src.hasPermission(2)) gates the tab suggestion and the run.
None beyond the switchboard key HitDiagnostics in config/dmz_ragnarok/modules.cfg (default false).
None.
needs. The intended workflow is: turn it on, RESTART, reproduce the report, read the [hitdiag] line (or run /rg hitcheck), then turn it off again.
/rg hitcheck
registration happens at command-registration time.
hitcheck under a /rg root that Brigadier merges with the sdu switchboard's own /rg
subcommands, so both coexist.
forge:entity_reach attribute (a hit that never lands, not a gate that refused it), which is why relogging can clear it. That is not a gate and the passive log stays silent for it, so the probe calls it out explicitly.