ExploitShield [Lite] icon

ExploitShield [Lite] -----

Lightweight, configurable and high-performance exploit protection for modern Minecraft servers.



⚡️ ExploitShieldLite
✨ This is the lightweight edition of ExploitShield, built for maximum performance + rock-solid stability.

It delivers core exploit & crash protection in a streamlined design, reducing server load while also keeping false positives significantly lower compared to the full version of ExploitShield.

ExploitShieldLite is a lightweight, high-performance packet-based security plugin designed to protect your Minecraft server from common exploits, packet abuse, and crash attempts — without sacrificing performance.

Built on PacketEvents, it intercepts malicious packets before they reach the server, adding a powerful extra layer of protection against exploit clients and packet-based attacks.

⚡ Features
Advanced Book Exploit Protection
Protect your server from malicious book packets and crash attempts.

✔ Maximum pages limit
✔ Maximum characters per page limit
✔ Maximum total characters limit
✔ JSON depth protection
✔ Excessive color-code detection
✔ Malicious “extra” component detection
✔ Unicode normalization checks
✔ Hard packet size limits

Chat Crash Protection
Prevent oversized chat packets and chat-based exploits.

✔ Configurable message length limits
✔ Instant packet cancellation
✔ Optional automatic kick system

⌨️ Tab Complete Protection
Stop tab-complete abuse used for lag or crash attacks.

✔ Configurable input limits
✔ Packet-level filtering
✔ Optional kick action

Item NBT Protection
Detect and block malicious or invalid creative items.

✔ Oversized display names
✔ Excessive enchantments
✔ Invalid enchantment levels
✔ Oversized lore detection
✔ Full creative inventory validation

Client Brand & Version Detection
Get useful player client information on join.

✔ Client brand detection
✔ Client version detection
✔ Permission-based alerts
✔ Console logging support

Smart Alert System
A smart violation system that prevents spam while keeping staff informed.

✔ Violation buffering
✔ Alert aggregation system
✔ Console + staff notifications
✔ Toggle per player

Example:
[ExploitShieldLite] Player → MAX_JSON_DEPTH [KICK] x15

Instead of spam, alerts are grouped intelligently.

⚙️ Fully Configurable
Everything can be customized directly from the config file.

✔ Enable/disable protections
✔ Adjust limits & thresholds
✔ Customize messages & prefixes
✔ In-game reload support

Performance Focused
Designed with optimization in mind:

✔ Early packet validation
✔ Thread-local optimizations
✔ Minimal memory allocation
✔ Low CPU overhead
✔ Safe JSON parsing
✔ Optimized packet scanning

Perfect for:
Survival • Factions • Minigames • Networks • Large Communities

Permissions
  • exploitshieldlite.commands → Access commands
  • exploitshieldlite.alert → Receive alerts
  • exploitshieldlite.joininfo → Join notifications
Commands
  • /exploitshieldlite help → Show help menu
  • /exploitshieldlite reload → Reload config
  • /exploitshieldlite alerts → Toggle alerts
  • /esl help
  • /esl reload
  • /esl alerts
Dependencies
  • PacketEvents
❓ Why ExploitShieldLite?
Unlike traditional anti-crash plugins that react after the server processes dangerous data, ExploitShieldLite blocks malicious packets before they become a problem.

⚡ Lightweight • Fast • Configurable • Effective

Keep your server protected with ExploitShieldLite.

Code (Java):

package dev.Its_Rango.ExploitShieldLite ;

import com.github.retrooper.packetevents.PacketEvents ;
import dev.Its_Rango.ExploitShieldLite.AlertManager.AlertManager ;
import dev.Its_Rango.ExploitShieldLite.Checks.Packet.Book.BookPacketListener ;
import dev.Its_Rango.ExploitShieldLite.Checks.Packet.Chat.ChatPacketListener ;
import dev.Its_Rango.ExploitShieldLite.Checks.Packet.Join.JoinPacketListener ;
import dev.Its_Rango.ExploitShieldLite.Checks.Packet.NBT.ItemNBT ;
import dev.Its_Rango.ExploitShieldLite.Checks.Packet.TabException.TabCompletePacketListener ;
import dev.Its_Rango.ExploitShieldLite.Commands.MainCommand ;
import dev.Its_Rango.ExploitShieldLite.Commands.ShortMainCommand ;
import dev.Its_Rango.ExploitShieldLite.Utils.ReloadConfig ;
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder ;
import org.bukkit.Bukkit ;
import org.bukkit.ChatColor ;
import org.bukkit.command.CommandExecutor ;
import org.bukkit.plugin.java.JavaPlugin ;

public final class ExploitShieldLite extends JavaPlugin {

    private static ExploitShieldLite instance ;

    @Override
    public void onLoad ( ) {

        logStartup ( ) ;

        PacketEvents. setAPI (SpigotPacketEventsBuilder. build ( this ) ) ;
        PacketEvents. getAPI ( ). load ( ) ;

        logStartupDone ( ) ;
    }

    @Override
    public void onEnable ( ) {

        logEnable ( ) ;

        instance = this ;

        saveDefaultConfig ( ) ;
        ReloadConfig. reload ( this ) ;

        PacketEvents. getAPI ( ). init ( ) ;
        registerPacketListeners ( ) ;

        AlertManager. init ( ) ;

        registerCommands ( ) ;

        logEnabled ( ) ;
    }

    @Override
    public void onDisable ( ) {

        logDisable ( ) ;

        PacketEvents. getAPI ( ). terminate ( ) ;

        logDisabled ( ) ;
    }

    private void registerPacketListeners ( ) {

        var manager = PacketEvents. getAPI ( ). getEventManager ( ) ;

        manager. registerListener ( new BookPacketListener ( ) ) ;
        manager. registerListener ( new TabCompletePacketListener ( ) ) ;
        manager. registerListener ( new ItemNBT ( ) ) ;
        manager. registerListener ( new ChatPacketListener ( ) ) ;
        manager. registerListener ( new JoinPacketListener ( ) ) ;
    }

    private void registerCommands ( ) {
        registerCommand ( "exploitshieldlite", new MainCommand ( ) ) ;
        registerCommand ( "esl", new ShortMainCommand ( ) ) ;
    }

    private void logStartup ( ) {
        log ( "&2Loading..." ) ;
    }

    private void logStartupDone ( ) {
        log ( "&2Loaded." ) ;
    }

    private void logEnable ( ) {
        log ( "&aEnabling..." ) ;
    }

    private void logEnabled ( ) {
        log ( "&aEnabled." ) ;
    }

    private void logDisable ( ) {
        log ( "&cDisabling..." ) ;
    }

    private void logDisabled ( ) {
        log ( "&cDisabled." ) ;
    }

    private void log ( String text ) {
        getServer ( ). getConsoleSender ( ). sendMessage (color (text ) ) ;
    }

    private void registerCommand ( String command, CommandExecutor executor ) {
        if (command == null || executor == null ) return ;

        var cmd = getCommand (command ) ;
        if (cmd == null ) {
            getLogger ( ). warning ( "Command not found in plugin.yml: " + command ) ;
            return ;
        }

        cmd. setExecutor (executor ) ;
    }

    public String color ( String str ) {
        return ChatColor. translateAlternateColorCodes ( '&', str ) ;
    }

    public static ExploitShieldLite getInstance ( ) {
        return instance ;
    }
}
 

Code (YAML):

# ====================
# ExploitShieldLite
# Version 1.0.0
# By Its_Rango
# ====================

# ====================
# PLUGIN MESSAGES
# ====================

plugin-messages
:
  reloading
: "&bExploitShieldLite &7» &aReloading..."
  reloaded
: "&bExploitShieldLite &7» &aReloaded."
  player-join-message
: "&bExploitShieldLite &7» &a{player} &fjoined using &a{brand} &fand version &a{version}"

# ====================
# ALERT MANAGER
# ====================

alerts
:
  prefix
: "&7[&bExploitShieldLite&7]"
  message
: "{prefix} &a{player} &b→ {exploit} &7[{action}] &8x{amount}"
  on
: "{prefix} &7» &aAlerts enabled."
  off
: "{prefix} &7» &cAlerts disabled."

# ====================
# BOOK CRASH
# ====================

book-crash
:
  # KICK: KICK, CANCEL AND ALERT
  # CANCEL: CANCEL AND ALERT
  action
: KICK # KICK/CANCEL
  max-pages
: 75
  max-chars-per-page
: 1023
  max-total-chars
: 76725 # 1023 * 75
  max-json-depth
: 10
  max-color-codes
: 60
  max-extra
: 30

# ====================
# CHAT CRASH
# ====================

chat
:
  # KICK: KICK, CANCEL AND ALERT
  # CANCEL: CANCEL AND ALERT
  action
: KICK # KICK/CANCEL
  max-length
: 256

# ====================
# TAB-COMPLETE CRASH
# ====================

tab-complete
:
  # KICK: KICK, CANCEL AND ALERT
  # CANCEL: CANCEL AND ALERT
  action
: KICK # KICK/CANCEL
  max-length
: 450

# ====================
# Item-NBT CRASH
# ====================

item-nbt
:
  # KICK: KICK, CANCEL AND ALERT
  # CANCEL: CANCEL AND ALERT
  action
: KICK # KICK/CANCEL
  max-display-length
: 256
  max-lore-line-length
: 256
  max-enchants-count
: 15

# ====================
# PACKET-RATE-LIMIT
# ====================

packet-rate-limit
:
  # KICK: KICK, CANCEL AND ALERT
  # CANCEL: CANCEL AND ALERT
  action
: CANCEL # KICK/CANCEL
 
Resource Information
Author:
----------
Total Downloads: 7
First Release: Jun 10, 2026
Last Update: Jun 10, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings