HomeJavaModsExploitShield [Lite]
ExploitShield [Lite]
⚡️ 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
Commands
Dependencies
❓ 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.

Spoiler: Main Class
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 ;
    }
}
 

Spoiler: Config
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
 

Commands

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

ExploitShield [Lite] is a free Minecraft Java mod. Compatible with Minecraft 1.17, 1.18, 1.19, 1.20 and newer. Downloaded 18 times (via Spigot). Download it and open it directly in the game.

Explore more