
Null Attribute Remover
A plugin to remove null attributes from player NBTs on join. Made to prevent specific crashes!
- Загрузки
- 183
- Подписчики
- 0
- Обновлён
- 5 августа 2025 г.
- Лицензия
- MIT
Опубликован 4 августа 2025 г.
NullAttributeRemover
A lightweight Bukkit/Spigot plugin that scans and removes broken or invalid attribute modifiers from players to prevent crashes and instability.
Originally created to fix java.lang.NullPointerException in corrupted player data.
🔍 What It Does
This plugin scans player attributes for:
- ❌
nullor duplicate UUIDs (even across attributes) - ❌
NaNorInfinityvalues - ❌ Invalid or missing operations
- ❌
null, blank, or UUID-looking modifier names - ❌ Fully broken modifiers (null entries)
If any are found, they’re removed automatically.
The scan can be triggered manually or on events like teleport, respawn, world change, etc.
⚙️ How It Works
- Checks every attribute on a player (
GENERIC_MAX_HEALTH, etc.) - Inspects each modifier’s:
- UUID validity and uniqueness
- Name validity (including if it looks like a UUID)
- Value sanity (no
NaN,Infinity, or zero junk) - Operation type
- If any part is broken or suspicious, it’s removed
- If a modifier’s UUID is reused in multiple places, all duplicates are removed
- Optional logs and messages are configurable
🔧 Configuration
# config.yml
silent: false # Suppresses player chat messages
kickOnFailure: true # Kick player if bad modifiers can’t be removed
log-to-console: true # Show scan results in console
log-to-file: true # Save scan logs to plugins/NullAttributeRemover/nar.log
logUUIDLikeNames: true # Warn if modifier name looks like a UUID
log-invalid-uuid-names: true # If false, suppress logs like "Skipped bad UUID: armor.boots"
debugLogs: true # Enable detailed internal debug logs
📦 Commands
| Command | Description |
|---|---|
/nar scan [player] |
Scan a specific player or all online players |
/nar debug <player> |
Injects broken modifiers for testing purposes |
/nar reset <player> |
Clears all attributes and resets them to vanilla |
The plugin uses tab completion for all commands.
🧪 Compatibility
- Requires Java 17 or newer
- Works with Minecraft 1.17+
- Designed for Paper, may also work on Spigot and forks
Ченджлог
v1.5Релиз1.21.8, 1.21.9, 1.21.10 · 5 августа 2025 г.
Version 1.5 – UUID Validation Fixes & Smarter Filtering
Highlights:
Improved detection logic for attribute modifier UUIDs
Prevents false positives from vanilla attribute names
Adds new configuration option to control global UUID deduplication
Fixes & Improvements:
Fixed: Vanilla attribute names like minecraft:armor.boots or base_attack_damage were incorrectly flagged as invalid UUIDs.
The plugin now skips UUID parsing unless the modifier name looks like a real UUID (36 characters, 4 dashes).
Improved: Safer handling of non-UUID-like names. These are no longer treated as errors and won’t be removed unless truly broken.
Cleaned up logging for skipped UUID parsing — now clearly says when something was intentionally ignored due to being a vanilla name.
New Config Option:
ignoreDuplicateUUIDsAcrossAttributes:Allows modifiers to share UUIDs across different attributes, preventing false-positive removal of legit modifiers (e.g., damage and toughness sharing a UUID).
ignoreDuplicateUUIDsAcrossAttributes: true
v1.4.1Релиз1.21.6, 1.21.7, 1.21.8 · 4 августа 2025 г.
v1.4.1 - Logging Tweaks & Sanity Preservation
Added log-invalid-uuid-names config optionYou can now suppress log spam from UUID-like modifier names (e.g. "armor.boots") that previously cluttered the console with lines like:Skipped bad UUID: armor.helmet.
These logs are still detected and cleaned — they just no longer scream about it unless you want them to.
Minor config cleanup and prep for quieter deployment environments.
v1.4Релиз1.21.6, 1.21.7, 1.21.8 · 4 августа 2025 г.
NullAttributeRemover v1.4
Removed
- Entire UUID-fixing mechanism — no more
attemptFixInvalidUUIDssetting or code paths. - Config option:
attemptFixInvalidUUIDs - Any logic invoking
UUID.nameUUIDFromBytes(...)or generating replacement modifiers. - Deferred fix queues, replacement-runner code blocks.
- All references to replacing invalid UUID entries with newly generated ones.
Changed
Simplified
cleanAttributes()method:- Now strictly removes invalid modifiers (blank name, null UUID, invalid amounts, duplicate UUIDs).
- Removed attempts to patch or "fix" invalid UUID values.
Validation logic now:
- Issues warnings for UUID-like names when
logUUIDLikeNamesis enabled, but does not treat them as removal criteria. - Removes modifiers whose name equals their UUID (likely injected debug values).
- Issues warnings for UUID-like names when
Removed all code paths using
deferredFixes,fixQueue, or replacement fallback logic.
Log Behavior Updates
Core clean-up logs:
- Only logs removal events (e.g. “Removed X invalid modifiers”).
Warnings for invalid UUID strings are still configurable via
debugLogs.No more log entries indicating “Fixed X modifiers” — only removal summaries.
v1.3Релиз1.21.6, 1.21.7, 1.21.8 · 4 августа 2025 г.
Fixed Multiple bugs
v1.2Релиз1.21.6, 1.21.7, 1.21.8 · 4 августа 2025 г.
🔧 v1.2 Changelog (since v1.1)
- Added
/nar scan [player]and/nar debug <player>commands - Replaced timer with event-based scanning (world change, teleport, etc.)
- Added
config.ymlfor logging and silent mode options - Improved console log formatting with colors
- Fixed duplicate UUID detection across multiple attributes
- Fixed blank name checks (now catches whitespace-only names too)
- Added detection for NaN, Infinity, null UUIDs, invalid operations, UUID-like names, and zero-amount junk modifiers
v1.1Релиз1.21.6, 1.21.7, 1.21.8 · 4 августа 2025 г.
Initial Upload.
Комментарии
Загружаем…