LPX
WHY LPX?
UNIQUE FIX FOR NETTY CRASHERS, one type of exploit that doesn't affect the server's TPS but Netty's threads. A NettyCrasher makes Netty's threads busy when a packet gets decoded, so the server can't handle future packets for a bit not allowing new players to join and timeoutting a few online players.Smooth Packet Limiter, Usually, anti-exploits don't encourage the use of packet limiters because it could cause issues with players having bad connections. LPX has an accurate way to count spam packets and has a fully working VL system to prevent false flags when players lag. If any false is detected, the config can be easily edited to fix false flags.
Printer/Schematica Compatibility, usually packet limiters plugins causes incompatibility issues with this mods, LPX has a very useful automatic system that detects when a player started using printer mode and that guarantees no false kicks. There is also the option to use the API.
Advanced Packet Logger, if your server is attacked with a packet exploit you can log every packet sent from any player to understand what type of exploit did he use and we can fix it in a few days. Packet Logger can be disabled and configured.
Easy and detailed configuration, you can edit almost everything while you detect false-flags, you can choose to enable/disable kicks for every check, enable/disable specific checks and change EVERY VALUE used in the code.
| license: "null" | |
| # Use this if you live in China | |
| force-fallback: false | |
| messages: | |
| main-color: "&5" | |
| second-color: "&d" | |
| prefix: "%main-color%LPX >>" | |
| kick: "&cYou are sending suspicious packets." | |
| kick-alert: "%prefix% %second-color%%player% &7was kicked" | |
| no-permission: "%prefix% &cInsufficient permissions &7(%permission%)" | |
| invalid-arguments: "%prefix% &cInvalid arguments!" | |
| injection-failure: "%prefix% &cInjection failure!" | |
| update-found: "%prefix% &aAn update was found!" | |
| null-address: "%prefix% &cYou are joining with an invalid address!" | |
| alerts: | |
| permission: "lpx.alerts" | |
| format: "%prefix% %second-color%%player% &7failed %main-color%%check% %type% &7(%vl%/%max-vl%)" | |
| hover: | |
| - "%main-color%Description:" | |
| - "%second-color%%description%" | |
| - "" | |
| - "%main-color%Infos: %infos%" | |
| - "" | |
| enabled: "%prefix% &aAlerts enabled" | |
| disabled: "%prefix% &cAlerts disabled" | |
| options: | |
| # Enable this only if you have fake players who cause errors during the injection | |
| # WARNING: Enabling this will allow players to join even during injection failures | |
| silent-failures: false | |
| # Whether LPX should kick players when an exception in their handlers occurs | |
| kick-on-exception: true | |
| # LPX will prevent any type of item exploit that slows Netty threads | |
| # Available options: | |
| # ALL (disable decoding for every item) | |
| # BOOKS (disable only for books) (DEFAULT) | |
| # NONE (vanilla behavior) | |
| disable-item-decoding: BOOKS | |
| # If this option is set to true, players won't be able to see the output of /lpx | |
| hidden-command: false | |
| # If activated, players with "lpx.bypass" permission will ignore checks | |
| bypass-permission: false | |
| # Add support for Geyser players (Bedrock Edition) | |
| geyser: false | |
| # Check if the plugin can be updated. | |
| # Permission: "lpx.update" | |
| check-updates: true | |
| # Whether bStats should be loaded (https://bstats.org/plugin/bukkit/LPX/9156) | |
| bstats: true | |
| # Whether task that resets VL should be enabled | |
| clear-task: | |
| enabled: true | |
| # Repeat delay in seconds | |
| delay: 300 | |
| printer: | |
| # Enable this if your server allows the use of printer/schematic mod, and you are not using our Printer's APIs | |
| automatic: false | |
| # Lower this value if players don't enter in printer mode correctly | |
| place-threshold: 10 | |
| # Idle time after exiting printer mode | |
| disable-delay: 3000 | |
| # Whether players with the permission should receive printer's alerts | |
| alerts: true | |
| # Permission to receive printer's alerts | |
| permission: "lpx.alerts.printer" | |
| join: "%prefix% %second-color%%player% &7joined printer mode (%mode%)" | |
| leave: "%prefix% %second-color%%player% &7left printer mode" | |
| mechanics: | |
| # Sets a minimum time to reuse the nether portal. You can set it to -1 to disable. | |
| # WARNING: If you are using Intave put this to -1 to disable | |
| nether-portal-delay: 1000 | |
| # Prevents the oneshot bow. -1 to disable | |
| max-arrow-velocity: 15 | |
| # Prevents sheep extinction. -1 to disable | |
| shears-cooldown: 500 | |
| # Prevents players to interact with the inventory on block break | |
| break-close-inventory: false | |
| # Prevents a strange crash exploit using redstone with trapdoors, rails and comparator (BETA) | |
| trapdoor-rail-redstone: true | |
| # Prevents players to open containers too fast (time in milliseconds. -1 to disable) | |
| interact-container-delay: 100 | |
| alerts: | |
| # Whether alerts should be stored in a file | |
| store: true | |
| # Amount of days to keep the alerts | |
| days: 14 | |
| # Server name, used for API integrations | |
| server: unnamed | |
| # Delay in milliseconds to wait before sending new alerts after a punishment | |
| punish-delay: 1000 | |
| debug: false | |
| # If set to true LPX will look for the config.yml in ../config/config.yml | |
| external-config: false | |
| packet-logger: | |
| # If a packet requires more than this amount of time (in nanoseconds) to be processed, it will be logged | |
| # Example: 5000000ns = 5ms, -1 to disable | |
| heavy-packet-threshold: 5000000 | |
| enabled: false | |
| # MODES: whitelist, blacklist | |
| # Whitelist mode: only players in the list will be logged | |
| # Blacklist mode: only players not in the list will be logged | |
| player-mode: whitelist | |
| players: | |
| - Ytnoos | |
| # MODES: whitelist, blacklist | |
| # Whitelist mode: only packets in the list will be logged | |
| # Blacklist mode: only packet not in the list will be logged | |
| packet-mode: blacklist | |
| # To find out correct names, https://github.com/retrooper/packet...ents/protocol/packettype/PacketType.java#L510 | |
| packets: | |
| - PLAYER_FLYING | |
| - PLAYER_POSITION | |
| - PLAYER_POSITION_AND_ROTATION | |
| - PLAYER_ROTATION | |
| - KEEP_ALIVE | |
| - ANIMATION | |
| - WINDOW_CONFIRMATION | |
| checks: | |
| netty: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| # If this is set to automatic, then the max value below will assume one of these values based on your server version | |
| # 1.8 = 8448 | |
| # 1.12 = 24576 | |
| # >=1.13 = 98304 | |
| automatic: true | |
| # You can put this value to lower numbers (4096, 8192, 12228) to have much stricter protections | |
| max: 98304 | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| resolved: true | |
| max: 15 | |
| max-characters: 255 | |
| resolved-multiplier: 3 | |
| resize: true | |
| window: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 5 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| buffer: | |
| max: 3 | |
| multiply: 0.25 | |
| decay: 1 | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 5 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| buffer: | |
| max: 3 | |
| multiply: 0.25 | |
| decay: 1 | |
| c: | |
| enabled: true | |
| punish: true | |
| max-vl: 5 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| d: | |
| enabled: true | |
| punish: true | |
| max-vl: 2 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| creative: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 127 | |
| min: 0 | |
| c: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 1500 | |
| d: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 16384 | |
| e: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| blacklist: | |
| - "run_command" | |
| - "translation.test.invalid" | |
| f: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 64 | |
| g: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| place: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 10 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| buffer: | |
| max: 5 | |
| multiply: 0.5 | |
| decay: 1 | |
| options: | |
| max: 100 | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 70 | |
| c: | |
| enabled: true | |
| punish: true | |
| max-vl: 5 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| buffer: | |
| max: 5 | |
| multiply: 0.5 | |
| decay: 1 | |
| options: | |
| max: 50 | |
| flood: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending too many packets. :<' | |
| options: | |
| max: 1100 | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 6 | |
| min-vl: 2 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending too many packets. >:' | |
| options: | |
| # The following strings are represented by 2 or 3 parameters: | |
| # PacketName | Max packets | Interval(ms) | Periods | Warnings | |
| # "ANIMATION,50,500,5,2" Means this check will flag when a player sends 50 ANIMATION packets in an interval of 500ms for 2 times in a period of (5*500ms) | |
| limits: | |
| - "ANIMATION,50,500,5,2" | |
| - "USE_ITEM,60,1000,5,2" | |
| - "PLAYER_BLOCK_PLACEMENT,14,100,6,3" | |
| - "CLICK_WINDOW,20,200,10,4" | |
| - "CREATIVE_INVENTORY_ACTION,20,200,10,4" | |
| - "PLAYER_POSITION,40,100,5,3" | |
| - "PLAYER_ROTATION,40,100,5,3" | |
| - "PLAYER_POSITION_AND_ROTATION,40,100,5,3" | |
| - "CRAFT_RECIPE_REQUEST,15,1000,2,1" | |
| - "TAB_COMPLETE,40,1000,2,1" | |
| - "INTERACT_ENTITY,20,600,5,2" | |
| - "CHAT_COMMAND,5,500,5,2" | |
| - "PLAYER_DIGGING,40,500,6,3" | |
| - "UPDATE_SIGN,2,300,6,2" | |
| c: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending too many packets. | |
| options: | |
| max: 10 | |
| reset-interval: 100 | |
| max-periods: 6 | |
| max-warnings: 3 | |
| big-threshold: 2048 | |
| d: | |
| enabled: true | |
| punish: true | |
| max-vl: 4 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending too many packets. o:' | |
| options: | |
| max: 10 | |
| big-threshold: 2048 | |
| max-big: 6 | |
| f: | |
| enabled: true | |
| punish: true | |
| max-vl: 2 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending too many packets. :$' | |
| options: | |
| max: 8 | |
| position: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 1 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 6 | |
| min-vl: 1 | |
| buffer: | |
| max: 2 | |
| multiply: 0.5 | |
| decay: 0.05 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| delay: 2000 | |
| hard: false | |
| ignore-fly: true | |
| c: | |
| enabled: true | |
| punish: true | |
| max-vl: 1 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 15000 | |
| d: | |
| enabled: true | |
| punish: true | |
| max-vl: 1 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max: 100000 | |
| payload: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| b: | |
| enabled: true | |
| punish: true | |
| max-vl: 2 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| delay: 1000 | |
| max: 15 | |
| c: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| d: | |
| enabled: true | |
| punish: true | |
| max-vl: 5 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| e: | |
| enabled: true | |
| punish: true | |
| max-vl: 1 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| f: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| tab: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 10 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| starts: | |
| - "/to " | |
| - "//to" | |
| - "/calc " | |
| - "//calc" | |
| contains: | |
| - "while" | |
| - "targetoffset" | |
| - "for(" | |
| - "^(." | |
| - "*." | |
| b: | |
| enabled: true | |
| punish: false | |
| max-vl: 1 | |
| min-vl: -1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| max-length: 256 | |
| characters: | |
| - "[" | |
| - "]" | |
| - "{" | |
| - "}" | |
| - "@" | |
| - "=" | |
| - "nbt" | |
| command: | |
| a: | |
| enabled: true | |
| punish: true | |
| max-vl: 3 | |
| min-vl: 1 | |
| punish-commands: | |
| - 'lpx kick %player% &cYou are sending suspicious packets.' | |
| options: | |
| commands: #CREDITS TO: https://github.com/2lstudios-mc/ExploitFixer | |
| # WorldEdit exploit | |
| - "//calc" | |
| - "//calculate" | |
| - "//eval" | |
| - "//evaluate" | |
| - "//solve" | |
| # HolographicDisplays exploit | |
| - "/hd readtext" | |
| - "/holo readtext" | |
| - "/hologram readtext" | |
| - "/holograms readtext" | |
| - "/holographicdisplays readtext" | |
| # PermissionsEx exploit | |
| - "/pex promote" | |
| - "/pex demote" | |
| - "/promote" | |
| - "/demote" | |
| - "/execute" | |
| # Multiverse exploit | |
| - "/mv ^" | |
| - "/mv help ^" | |
| - "/mvhelp ^" | |
| - "/$" |
PERMISSIONS - COMMANDS:
- /lpx alerts - lpx.alerts - Receive alerts
- lpx.alerts.printer - Receive printer alerts
- /lpx reload - lpx.reload - Reload the configuration
- /lpx gui- lpx.gui - Open the GUI
- /lpx clear - lpx.clear - Clear old packet logs
- /lpx kick <player> <message> - lpx.kick - Force close player connection
KNOWN INCOMPATIBILITIES:
- ProtocolLib < 5.0.0
- Images and Denizen on certain situations
- Arclight
DISCLAIMER: