Перейти к содержимому
Mineforgian

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:

  • null or duplicate UUIDs (even across attributes)
  • NaN or Infinity values
  • ❌ 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 attemptFixInvalidUUIDs setting 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 logUUIDLikeNames is enabled, but does not treat them as removal criteria.
    • Removes modifiers whose name equals their UUID (likely injected debug values).
  • 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.yml for 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.

Комментарии

Загружаем…