Security settings

Input limits, rejection actions, placement policy, and warnings you can investigate.

On this page

Start with the defaults

All six guards are independently enabled by default. Packet action defaults to SKIP. For recognized invalid input this rejects before handling; for the main player-work budget it defers gameplay in a bounded queue before overflow. DISCONNECT closes the connection; KICK is a legacy alias.

Test legitimate items/plugins before lowering limits. Follow false-positive diagnosis and make one narrow change. Internal guards do not replace hosting network protection.

Option reference

All options below belong in nusa-global.yml and require a full restart. Missing keys use defaults. Ranges include both ends unless marked >.

Complete keyType / defaultRange / unitPurpose, effects, and when to change
security.warning-interval-ticksinteger2001..72000 tick nominalPacket-guard log interval measured with monotonic time; 20 nominal ticks equals a second. Changes log volume, not detection.Applies when: the corresponding security guard is enabled
security.max-warnings-per-intervalinteger321..4096 warningWarning output cap per interval. Suppressed log messages do not mean rejection accounting stops.Applies when: the corresponding security guard is enabled
security.max-log-value-lengthinteger12816..1024 charactersMaximum sanitized untrusted log-value length. Still review/redact logs before sharing.Applies when: the corresponding security guard is enabled
security.nbt-packet-validation.actionstringSKIPSKIP / DISCONNECT; KICK = legacy aliasSKIP rejects recognized input before its handler; DISCONNECT closes the sender. Native malformed-protocol handling remains.Applies when: feature-flags.nbt-packet-validation
security.nbt-packet-validation.max-bytesinteger20971521024..2097152 byteStructural wire/input cap, separate from native NBT heap quotas. Lower values can reject legitimate plugin items.Applies when: feature-flags.nbt-packet-validation
security.nbt-packet-validation.max-depthinteger5121..512 levelsNesting cap; the default matches this native version. Test legitimate data before lowering it.Applies when: feature-flags.nbt-packet-validation
security.nbt-packet-validation.max-nodesinteger20971521..2097152 node/elemenCounts containers and list/array cardinality. Textual SNBT scanning can be more conservative than a materialized tree.Applies when: feature-flags.nbt-packet-validation
security.crash-pattern-guard.actionstringSKIPSKIP / DISCONNECT; KICK = legacy aliasAction for payload caps, literal matches, or scan-budget exhaustion. Incorrect rules can reject valid packets.Applies when: feature-flags.crash-pattern-guard
security.crash-pattern-guard.max-payload-bytesinteger20971521024..2097152 byteChecked PLAY input size cap. An empty pattern list still retains it.Applies when: feature-flags.crash-pattern-guard
security.crash-pattern-guard.patternslist[]0..128 rule objectsObjects with id/channel/substring/max-bytes. Every installed condition must match. No regex; see the literal-rule guide.Applies when: feature-flags.crash-pattern-guard
security.packet-flood-detection.actionstringSKIPSKIP / DISCONNECT; KICK = legacy aliasSKIP discards excess frames; DISCONNECT closes the connection. This is a count guard, not network bandwidth protection.Applies when: feature-flags.packet-flood-detection
security.packet-flood-detection.rate-per-secondinteger3001..1000000 packets/secondsPer-connection PLAY token refill. Increase only for reproduced legitimate bursts.Applies when: feature-flags.packet-flood-detection
security.packet-flood-detection.burstinteger6001..1000000 tokenPer-connection token capacity. A larger burst admits more frames to decoding.Applies when: feature-flags.packet-flood-detection
security.tick-starvation-guard.actionstringSKIPSKIP / DISCONNECT; KICK = legacy aliasSKIP defers gameplay in FIFO order; overflow rejects newest packets. DISCONNECT closes on exhaustion, including expensive legitimate plugin handling.Applies when: feature-flags.tick-starvation-guard
security.tick-starvation-guard.max-packets-per-tickinteger641..65536 packets/players/tickHandler admission budget. FIFO capacity is clamp(4 × value, 16, 256); connection acknowledgements keep their bypass.Applies when: feature-flags.tick-starvation-guard
security.tick-starvation-guard.max-processing-microsinteger20001..50000 µs/players/tickCooperative work budget; 2000 µs equals 2 ms. It cannot interrupt an already running handler.Applies when: feature-flags.tick-starvation-guard
security.redstone-abuse-limiter.max-updates-per-chunk-per-tickinteger40961..1048576 updatePer-chunk/tick redstone admission. Dense valid circuits can be deferred.Applies when: feature-flags.redstone-abuse-limiter
security.redstone-abuse-limiter.max-deferred-per-chunkinteger81921..1048576 entriesChunk FIFO capacity. Overflow drops newest work; queues are not saved across restart.Applies when: feature-flags.redstone-abuse-limiter
security.redstone-abuse-limiter.max-deferred-totalinteger655361..16777216 entries/worldPer-world retained-entry cap; must be at least the per-chunk bound. Higher limits can retain more memory.Applies when: feature-flags.redstone-abuse-limiter
security.redstone-abuse-limiter.warning-interval-ticksinteger2001..72000 tickRedstone warning interval, not a replay/admission rate control.Applies when: feature-flags.redstone-abuse-limiter
security.miscellaneous-security.disable-placed-block-nbt-readingbooleanfalsetrue / falseTrue blocks raw BLOCK_ENTITY_DATA application on placement. Modern name/container components have separate handling; test plugin items.Applies when: feature-flags.miscellaneous-security
security.miscellaneous-security.downloader-request-channelslist["wdl:request"]0..128 channel namespacedUnique namespaced IDs without wildcards, up to 128 characters each. Only recognized request shapes spend tokens. Empty disables detection; names do not add recognizers.Applies when: feature-flags.miscellaneous-security
security.miscellaneous-security.downloader-request-rate-per-secondinteger21..10000 request/secondsRefill for recognized per-connection downloader requests. Normal requests inside budget are allowed.Applies when: feature-flags.miscellaneous-security
security.miscellaneous-security.downloader-request-burstinteger81..1000000 tokenRecognized-request burst capacity, not detection of every world download.Applies when: feature-flags.miscellaneous-security
security.miscellaneous-security.downloader-actionstringSKIPSKIP / DISCONNECT; KICK = legacy aliasAction when recognized requests exceed budget. The channel name alone does not trigger rejection.Applies when: feature-flags.miscellaneous-security

Pattern format and aliases

See the literal-rule guide for pattern fields. An empty list still retains the payload-size limit. No attack payload is needed for configuration.

Legacy security.miscellaneous-security.read-placed-block-nbt defaults true and is the inverse of disable-placed-block-nbt-reading. When both are explicit they must be opposite. Prefer the primary key for clarity.

Loading the index…