Skip to content

xGinko/AnarchyExploitFixes

Repository files navigation

Discord Mine GitHub All Releases

AnarchyExploitFixes

Fix exploits on a Minecraft Anarchy Server

bstats

Requirements

  • PacketEvents - This is for preventing packet exploits. Without it, the plugin will not enable.

Prebuilt jar

Go to releases, download the latest jar

If you wish to have a prebuilt BETA jar with the latest code, click Actions at the top of the page, click the latest build, and download the artifact.

Building from source

git clone https://github.com/xGinko/AnarchyExploitFixes.git

Run ./gradlew clean build

Servers using AEF:

Add your server in a pull request

constantiam.net (70-80), 5b5t.org (50-150), 6b6t.org (50-150), openanarchy.org (40-150), endcrystal.me (10-50), 6g6s.org (10-50), play.mcvpg.org (20-60), scfanarchy.ggs.gg (0-3), aetheranarchy.net (1-8), 22b22t.tk (8-40), 2b2t.com.ar (10-50), f3f5.org (5-24), alacity.net (5-20), oldmate.sydney (5-20), play.basedmc.club (5-16), 2b2t.pl (5-15), mc.zedanarchy.org (5-15)

Commands

These commands can only be executed from console or by opped players.

  • /aef reload - Reload the config
  • /aef datavalue - (1.12 Relevant) Get the data value for the item you're holding to add it to the remove list
  • /aef elytra - See who is flying on an elytra.
  • /aef geared - See how many players have armor or are new.
  • /aef lag - artificially lag the server for testing. Every time you run the command the server freezes for 1 second by default, add milliseconds to the end of the command for custom time.
  • /aef version - Plugin version.

Donate

You can send donations via KoFi: https://ko-fi.com/xginko

Contact

Need to let us know of any exploits in private? Contact us on discord: xginko

Notice

Please note that some exploits have already been patched by LPX AntiPacketExploit or Panilla, meaning they are most likely not included in AEF. I recommend using those alongside AEF to patch the majority of exploits.

Features

This list does not include all features, check the config for all features!

All features listed here can be disabled or enabled in the config.

  • Prevent NoCom exploit. - Prevent the 'NoCom' coordinate exploit
  • Prevent a new lag exploit where fireworks can bring tps down to single digits.
  • Prevent BowBomb exploit. - Prevent an exploit where bows can instantly kill a player.
  • Prevent Burrow hack - Where you step inside a block so crystals can't do any damage.
  • Prevent BoatFly exploit - Prevent the Futureclient / Rusherhack BoatFly exploit.
  • Prevent Book-ban - All characters still work! The size of each page is just limited to 255 bytes (customizable). This allows to fill the whole page with latin characters. Characters that use more bytes such as Chinese may be limited in length.
  • Prevent unbreakable Packet elytra fly.
  • Prevent PacketFly exploit.
  • Prevent end gateway crash exploit. - https://www.youtube.com/watch?v=c5nVBQeYo-I
  • Patch end portal dupe. - https://www.youtube.com/watch?v=n-fN6txZNgc
  • Prevent Y256 dispenser crash exploit. - https://www.youtube.com/watch?v=XL17P87O6xA
  • Anti-Illegal system:
    • Remove/revert illegal items: banned items, overstacked items, higher enchanted items, items with illegal datavalues, incompatible enchanted items (eg Silk Touch & Fortune on the same item), inapplicable enchanted items (unenchantables), Spawneggs and unbreakable items and all shulkers containing them.
    • Remove illegal blocks that have been placed in the world. Supports removal of non-natural spawners too!
  • Limit speed of snowballs to prevent clientside lag.
  • Limit crafting table autorecipe speed to prevent a lag exploit.
  • Prevent all coordinate exploits related to teleporting by vanishing a player right before they are teleported.
  • Prevent destroying end portal frames.
  • Prevent multiple end dragons from being created.
  • Prevent portal traps - Teleport a player back to the original portal if they're trapped for too long.
  • Automatically fill in the bedrock floor/roof if the bedrock has been broken.
  • Prevent players from going below the bedrock floor by teleporting them up. - Useful so people can't elytra fly below the world.
  • Remove wither heads automatically to prevent lag. - Removes on chunk load, unload or after a customizable alive time
  • Option to disable wither spawning at spawn. - Disabled by default.
  • Prevent chunk ban exploit. - Checks how much of each block is in a chunk.
  • Prevent chat spam. - Delay between messages, Max messages per a certain time, separate link delay, character limit, and more!
  • Prevent god mode exploit. - Prevent most godmode exploits, please note, there could still be bypasses.
  • Prevent invalid names. - Disallow login from players with invalid characters/too long of a name.
  • Prevent command signs. - Prevent players from right-clicking signs that have been placed with a command attached. For example, from a backdoor.
  • Limit falling blocks per chunk to prevent lag.
  • Limit exp bottles per chunk to prevent lag.
  • Prevent projectiles from going through portals, shooting projectiles through portals can get them stuck in the same place on the other side, once they are loaded the server can crash.
  • Prevent too many vehicles (eg. minecarts, boats) in chunks.
  • Prevent bed-traps. - Disabled by default. Teleports players back to original location when they have been standing in a portal for too long.
  • Prevent nether roof access. - Disabled by default.
  • Prevent placing blocks on nether roof
  • Option to disable chests on donkeys. - This is unlike IllegalStack's, no items will drop if the chest is broken. Useful to prevent many dupe exploits, Disabled by default.
  • Option to prevent donkeys from going through portals. - Useful to prevent many dupe exploits, disabled by default.
  • Option to mask all kick messages. - Change every kick message to "You have lost connection to the server", or whichever you specify. Disabled by default.
  • Option to enable first join message. - Disabled by default.
  • Command whitelist - Useful for only allowing commands that you want to be allowed, so players can't find your plugins. Disabled by default.
  • Elytra speed limits for old and new chunks, and bursting settings for when tps is high.
  • Elytra action bar to show players the speed they are going and speed limit.
  • Rate-limit levers - Disabled by default. Prevent lag by spamming levers.
  • Options to disable certain game features at specific TPS. Redstone, Elytra, Explosions, Falling Blocks.
  • Bedrock Filler - Option to automatically fill overworld bedrock floor, nether bedrock floor and nether bedrock ceiling.

Config options

Missing config options will now automatically add themselves with every update without the config resetting.

This config was created on a 1.20.1 Folia server, default entries will vary based on server type and version.

config.yml
config-version: 1.0

##############
#  Language  #
##############
language:
  # The default language that will be used if auto-language is false or no matching language file was found.
  default-language: en_us
  # If set to true, will display messages based on client language
  auto-language: true

#############
#  General  #
#############
general:
  # How long a checked tps is cached to save resources in ticks (1 sec = 20 ticks)
  max-tps-check-interval-in-ticks: 20
  # Use only if you are having problems with ProtocolLib when starting the plugin.
  disable-all-ProtocolLib: false
  # The Y-level at which the nether ceiling generates the last layer of bedrock on your server.
  nether-ceiling-y: 127
  # A server restart is required when changing a command's enable status!
  commands:
    say:
      enable: false
      # Uses MiniMessage formatting.
      format: '<gray>SERVER: <gold>%message%'
    help:
      # Help command that shows a small command overview for players.
      enable: false
    toggleconnectionmsgs:
      # If you don't use join leave/messages, you can set this to false.
      enable: true

#############
#  Patches  #
#############
patches:
  anti-book-ban:
    enable: true
    # If set to false, will use UTF-8. 
    # Charset to use to encode the result of ItemMeta#toString into a sequence of bytes. 
    # The length of that sequence is then used to get the approximate Byte-size of an ItemStack.
    use-UTF-16: false
    max-book-size: 9000
    # Kicks players when they try to create a book bigger than the limit.
    kick-on-too-large-book-edit: true
    max-author-chars: 32
    max-title-chars: 32
    max-pages: 100
    max-item-size: 8260
    max-inventory-size: 50674
    # How long in ticks a dropped item's size should be cached after checking.
    dropped-items-size-cache-ticks: 120
    # How long in ticks a player's inventory size should be cached after checking.
    player-inventory-size-cache-ticks: 20
  map-cursor-lag-patch:
    # Patches 2b2t stacked map cursor lag that causes both client and server crashes.
    enable: false
  # Will have the side effect of players being unable to dye signs.
  prevent-command-sign: false
  # Removes entities or players if they are "invalid". Not sure if this works.
  experimental-godmode-patch: false
  prevent-teleport-coordinate-exploit:
    # Patches coordinate exploit for teleportation commands such as /tpa, /home AS WELL as respawn exploits
    # such as finding location from bed respawn point.
    # This is done by vanishing the player for x ticks before teleporting.
    enable: false
    min-distance-to-vanish-player: 100
    teleport-vanish-time-in-ticks: 10
  remove-beehive-coordinates:
    log: false
    beehive-types-to-check:
    - BEEHIVE
    - BEE_NEST
    # Patches a coordinate exploit by looking at Beehive NBT data using hacked clients.
    enable: true
  crash-exploits:
    prevent-fast-world-teleport-crash:
      # Prevents crash methods that involve very fast teleporting between different worlds in a short time.
      enable: false
      # Time in milliseconds until an entity can teleport to another world again.
      teleport-delay-millis: 1000
      log: false
  boatfly-patch:
    log: true
    max-entity-packets-per-10s: 15
    kick-player-if-boatflying: false
    # Patches Futureclient / Rusherhack boat fly exploit.
    enable: false
  window-click-crash-patch:
    # Patches Container click / Window click crash exploit.
    enable: true
  tag-parser-crash-patch:
    # Patches TagParser crash exploit.
    enable: true
    log: true
    kick-player: false

#################
#  Preventions  #
#################
preventions:
  anti-bed-trap:
    # Resets Bed Respawn when a player dies too many times within a certain timeframe.
    enable: false
    log: false
    # Amount of times player can die until he is determined as bed-trapped.
    max-deaths-per-time: 7
    # Time until death counter will be reset again
    time-in-seconds: 5
  prevent-nether-roof:
    # Prevent players from going above the nether roof.
    enable: true
    safely-teleport-players: true
  prevent-non-survival-players:
    # Checks if player is in survival and puts him back into survival if not, Useful if you had a backdoor incident.
    enable: false
    log: true
    whitelisted-players:
    - Notch
  prevent-opped-players:
    # Useful if you suspect a backdoor has happened.
    enable: false
    log: true
    whitelisted-players:
    - Notch
  permanent-block-breaking:
    by-exploding-pistons:
      enable: true
      whitelisted-worlds:
      - example_world_name
      # If enabled, will only protect portals and end gateways
      only-for-portals-and-gateways: false
    by-placing-piston-on-retract:
      enable: true
      whitelisted-worlds:
      - example_world_name
    by-growing-structures:
      # Prevents removal of permanent blocks by growing structures like mushrooms into them.
      enable: true
  portals:
    prevent-destroying-end-portals:
      enable: true
      log: true
      end:
        bedrock-protection-radius-blocks: 8
        # Add block locations that should be protected as well.
        # Format: <worldname>:<x>:<y>:<z>
        # If you don't want to use this, just configure an empty list using: pillar-blocks: []
        pillar-blocks:
        - world_the_end:143:140:-50
        - world_the_end:112:90:-90
    # CAUTION: Will kill the entity on folia due to broken portal event. There is sadly no other efficient way. 
    # Only enable if you must. Does not affect players.
    prevent-all-entities-in-portals: false
    prevent-portal-traps:
      # Teleports a player back to the original location if they stand in a portal for too long.
      enable: false
      wait-time-until-tp-back-in-seconds: 10
    # Prevents a lag exploit. Might disable some chunk loader designs.
    prevent-projectiles-in-portals: false
    prevent-specific-types:
      enable: true
      # CAUTION: Will kill the entity on folia due to broken portal event. There is sadly no other efficient way.
      # Defaults prevent common lag methods.
      entities:
      - DROPPED_ITEM
      - FIREWORK
      - PRIMED_TNT
      - THROWN_EXP_BOTTLE
      - EXPERIENCE_ORB
      - ARMOR_STAND
  withers:
    # Prevents wither skulls from being shot.
    disable-withers-from-shooting-skulls: false
    rate-limit-wither-skulls:
      # This can help combat lag caused by a ton of witherskulls spawning but weakens withers.
      enable: false
      # Cooldown until another skull will be shot at a player
      player-target-cooldown-in-ticks: 20
      # Cooldown until another skull can be shot at anything else other than a player
      other-target-cooldown-in-ticks: 40
      # Cooldown when wither has no target
      no-target-cooldown-in-ticks: 100
    remove-flying-wither-skulls:
      remove-all-flying-skulls: false
      # Enable if a lot of wither skulls at spawn are causing lag.
      periodically-remove-all-flying-skulls:
        check-period-in-ticks: 80
      if-lived-longer-than-x-ticks:
        # Remove wither skulls that have been flying for too long to prevent them from causing lag.
        enable: true
        # 200 Ticks = 10 Seconds
        max-age-in-ticks: 200
        # The delay in ticks until all skulls are checked for their alive time again.
        check-period-in-ticks: 40
      # Removes wither skulls when the chunk gets loaded. Use if you have a ton of them at spawn and they are causing lag.
      on-chunk-load: true
      # Removes wither skulls when the chunk gets unloaded. Use if you have a ton of them at spawn and they are causing lag.
      on-chunk-unload: true
    disable-wither-spawning-at-spawn:
      # Only enable if you must.
      enable: false
      inform-players: true
      worlds:
        world: 5000
        world_the_end: 5000
        world_nether: 5000

#####################
#  Lag Preventions  #
#####################
lag-preventions:
  prevent-lever-spam:
    # Rate Limit levers to prevent a lag exploit.
    enable: false
    show-actionbar: true
    kick-player: false
    max-lever-usages-per-time: 15
    lever-time-in-ticks: 40
  prevent-snowball-exploit:
    # Patches a lag exploit.
    enable: false
    # (20 ticks = 1 second) Will not touch Ender Pearls
    projectiles-max-alive-time-in-ticks: 300
    # How frequently we should check for all projectile's alive time
    check-period-in-seconds: 20
  prevent-falling-block-stasis-exploit:
    # Patches a lag exploit using falling blocks and glitched piston heads: https://www.youtube.com/watch?v=y2CjPlvtj58
    enable: true
    log: false
    # (20 ticks = 1 second)
    falling-blocks-max-alive-time-in-ticks: 300
    # How frequently we should check for all projectile's alive time
    check-period-in-seconds: 12
  prevent-inventory-action-lag:
    # Prevent lag generated by players quickly moving big items back and forth between inventories. 
    # Uses cached counters that auto-reset after the configurable time in milliseconds.
    enable: false
    log: true
    # The amount of time in milliseconds an entry is kept after writing.
    cache-time-millis: 2000
    # Use correct enums from: https://jd.papermc.io/paper/1.20/org/bukkit/event/inventory/InventoryAction.html. 
    # Format is: InventoryClickAction: AllowedClicksPerTime
    click-action-limits:
      COLLECT_TO_CURSOR: 15
      HOTBAR_SWAP: 30
      MOVE_TO_OTHER_INVENTORY: 8
  prevent-liquid-update-lag:
    enable: false
    # amount of liquid source blocks * sides it can spread to * block spread length
    max-liquid-events-in-same-chunk-per-time: 1200
    # Record time after first liquid spread. 
    # When this time runs out, the spread counter resets
    time-in-ticks: 100
    # Very spammy, use for testing/debugging only
    log: false
  pathfinding-limits:
    enable: false
    # Only meant for debug.
    log: false
    global-limit:
      enable: false
      # The max distance no mob pathfinding should exceed.
      # You want this to be higher than your highest max distance for a specific mob.
      max-target-distance: 20.0
    custom-limits:
      enable: true
      entities:
        WITHER: 8.0
        ZOMBIE_VILLAGER: 10.0
        ZOMBIE: 6.0
        ZOMBIFIED_PIGLIN: 8.0
        SKELETON: 6.0
        WITHER_SKELETON: 8.0
  prevent-flooding-machines:
    enable: false
    delete-waterlogged-blocks: true
  target-distance-limits:
    enable: false
    log: false
    global-limit:
      enable: false
      # The max distance no target should exceed. 
      # You want this to be higher than your highest max distance for a specific mob.
      max-target-distance: 20.0
    custom-limits:
      enable: true
      entities:
        WITHER: 8.0
        ZOMBIE_VILLAGER: 10.0
        ZOMBIE: 6.0
        ZOMBIFIED_PIGLIN: 8.0
        SKELETON: 6.0
        WITHER_SKELETON: 8.0
  disable-physics-during-low-tps:
    explosions:
      # Disable explosions during low tps to combat lag.
      enable: false
      disable-TPS: 14.0
      log: false
    block-physics:
      # Stop block physics (like falling blocks) when the TPS gets below a certain value.
      enable: false
      disable-TPS: 16.0
      log: false
    liquid-spread:
      enable: false
      disable-TPS: 16.0
      log: false
    melting-blocks:
      enable: false
      disable-TPS: 16.0
      log: false
    redstone:
      # Disable redstone during low TPS to prevent some lag machines.
      enable: false
      disable-TPS: 16.0
      log: false
    noteblocks:
      # Some lag machines use noteblocks to work around redstone limitations.
      enable: false
      disable-TPS: 16.0
      log: false
    fire-spread:
      enable: false
      disable-TPS: 14.0
      log: false
    grass-spread:
      enable: false
      disable-TPS: 14.0
      log: false
    leave-decay:
      enable: false
      disable-TPS: 14.0
      log: false

######################
#  Dupe Preventions  #
######################
dupe-preventions:
  # CAUTION: Will remove chests and their contents from a chested entity if it touches a portal on Folia! 
  # Prevents entities that can carry chests from using portals.
  prevent-chested-living-entities-in-portals: true
  # Prevents a dupe exploit involving donkeys.
  prevent-chests-on-living-entities: false
  # Closes open inventories of entities that disappeared when the player riding it disconnected.
  close-entity-inventories-on-player-disconnect: false
  # Closes open inventories of all entities that are in a chunk that will be unloaded.
  close-entity-inventories-on-chunk-unload: false
  # Patches https://www.youtube.com/watch?v=RLvErqzeK3Y
  prevent-end-portal-dupe: true

############
#  Combat  #
############
combat:
  prevent-burrow:
    enable: false
    # 1.0 = Half a heart of damage every time you move.
    damage-when-moving: 1.0
    teleport-above-block: true
    # Prevent burrow even if there is a block above the block they are burrowing in. 
    # Please note this may allow creating an "elevator", players will keep teleporting up until they hit air
    prevent-if-block-above-burrow: false
    break-anvil-instead-of-teleport: true
    # Needs to be enabled to prevent a bug where players are teleported above a slab when the slab is underwater, only happens in newer versions.
    allow-slabs-in-burrow: true
  crystal-aura:
    regular-delay:
      enable: false
      # Can help with desync in some cases but recommended to leave off unless needed.
      update-inventory-on-cancel: false
      # Set to -1 to disable.
      break-delay-in-ticks: 4
      place-delay-in-ticks: -1
    piston-aura-delay:
      # Rate-limits pistons that extend into crystals
      enable: false
      piston-extend-delay-in-ticks: 40
    hotbar-switch-delay:
      enable: false
      # Delay between switching from an end crystal to other items in hotbar
      delay-in-ticks: 2
      # Only delay when switched to specific materials
      only-delay-specific-materials: true
      delayed-specific-materials:
      - BOW
      - DIAMOND_SWORD
      - DIAMOND_AXE
      - TRIDENT
      - GOLDEN_SWORD
      - GOLDEN_AXE
      - IRON_SWORD
      - IRON_AXE
      - STONE_SWORD
      - STONE_AXE
      - WOODEN_SWORD
      - WOODEN_AXE
      - BLACK_BED
      - BLUE_BED
      - BROWN_BED
      - CYAN_BED
      - GRAY_BED
      - GREEN_BED
      - LIGHT_BLUE_BED
      - LIGHT_GRAY_BED
      - LIME_BED
      - MAGENTA_BED
      - ORANGE_BED
      - PINK_BED
      - PURPLE_BED
      - RED_BED
      - WHITE_BED
      - YELLOW_BED
      - CROSSBOW
      - NETHERITE_SWORD
      - NETHERITE_AXE
  anchor-aura-delay:
    enable: false
    # Can help with desync in some cases but recommended to leave off unless needed.
    update-inventory-on-cancel: false
    place-delay-in-ticks: 8
    break-delay-in-ticks: -1
  bed-aura-delay:
    enable: false
    # Set to -1 to disable.
    break-delay-in-ticks: 5
    place-delay-in-ticks: -1
  prevent-bow-bomb:
    enable: false
    # Fully pulled bow is ~9-10. 15 is default just to be safe.
    max-bow-squared-velocity: 15

##############
#  Illegals  #
##############
illegals:
  remove-placed-blocks:
    on-chunkload:
      # Remove illegally placed blocks on chunkload.
      enable: false
      # Enter PLAYER_HEAD here if you want to remove placed playerheads.
      blocks-to-remove:
      - PLAYER_HEAD
      - CHAIN_COMMAND_BLOCK
      - COMMAND_BLOCK
      - COMMAND_BLOCK_MINECART
      - REPEATING_COMMAND_BLOCK
      - BEDROCK
      - BARRIER
      exempted-worlds:
      - exampleworld1
      - exampleworld2
      pause-on-low-TPS: false
      pause-TPS: 14.0
    periodically:
      enable: false
      # Enter PLAYER_HEAD here if you want to remove placed playerheads.
      blocks-to-remove:
      - PLAYER_HEAD
      - CHAIN_COMMAND_BLOCK
      - COMMAND_BLOCK
      - COMMAND_BLOCK_MINECART
      - REPEATING_COMMAND_BLOCK
      - BEDROCK
      - BARRIER
      exempted-worlds:
      - exampleworld1
      - exampleworld2
      check-period-in-seconds: 10
      pause-on-low-TPS: false
      pause-TPS: 14.0
  remove-unnatural-spawners-on-chunkload:
    enable: false
    pause-on-low-TPS: false
    pause-TPS: 14.0
    # You can add or remove as much world names here as you want.
    natural-spawner-types-per-world:
      world:
      - SKELETON
      - ZOMBIE
      - SILVERFISH
      - SPIDER
      - CAVE_SPIDER
      world_the_end:
      - SKELETON
      - SPIDER
      world_nether:
      - BLAZE
      - MAGMA_CUBE
  remove-specific-item-names:
    # Resets an item's name if configured in the config.
    enable: false
    color-insensitive-item-names:
    - Super Insane Mega Sussy Item
    color-sensitive-item-names:
    - <bold><aqua>PvP KIT V2
  revert-overstacked-items:
    # Revert illegally high stacked items.
    enable: false
    item-whitelist-enabled: false
    use-as-blacklist-instead: true
    whitelisted-items:
    - TOTEM_OF_UNDYING
    # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
    # out of the hoppers inventory. 
    # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
    prevent-hopper32k-mechanic: false
    delete-shulker-if-contains-overstacked: false
    bundles-cant-unbundle-if-contains-overstacked: false
    periodically-check-player-inventories:
      enable: false
      check-period-in-ticks: 20
  revert-unbreakables:
    enable: false
    item-whitelist-enabled: false
    use-as-blacklist-instead: false
    whitelisted-items:
    - DIAMOND_CHESTPLATE
    # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
    # out of the hoppers inventory. 
    # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
    prevent-hopper32k-mechanic: true
    delete-shulker-if-contains-unbreakable: false
    bundles-cant-unbundle-if-contains-unbreakable: true
    periodically-check-player-inventories:
      enable: false
      check-period-in-ticks: 20
  ban-specific-materials:
    enable: false
    delete-illegals: false
    check-stored-items: false
    banned-materials:
    - CHAIN_COMMAND_BLOCK
    - COMMAND_BLOCK
    - COMMAND_BLOCK_MINECART
    - REPEATING_COMMAND_BLOCK
    - BEDROCK
    - BARRIER
    - STRUCTURE_BLOCK
    - STRUCTURE_VOID
    - END_PORTAL_FRAME
    - END_PORTAL
    - NETHER_PORTAL
    - LIGHT
  enchantments:
    revert-incompatible-enchants:
      # Reverts items like Armor with all Protection enchantments.
      enable: true
      item-whitelist-enabled: true
      use-as-blacklist-instead: false
      whitelisted-items:
      - BOW
      periodically-check-player-inventories:
        enable: false
        check-period-in-ticks: 20
    revert-higher-enchants:
      # Reverts 32ks / 255s
      enable: true
      item-whitelist-enabled: true
      use-as-blacklist-instead: false
      whitelisted-items:
      - GOLDEN_APPLE
      # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
      # out of the hoppers inventory. 
      # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
      prevent-hopper32k-mechanic: true
      delete-shulker-if-contains-higher-enchant: false
      bundles-cant-unbundle-if-contains-higher-enchant: true
      periodically-check-player-inventories:
        enable: false
        check-period-in-ticks: 20
    revert-specific-higher-enchants:
      enable: false
      enchantments:
      - DIG_SPEED
      item-whitelist-enabled: true
      use-as-blacklist-instead: false
      whitelisted-items:
      - GOLDEN_APPLE
      # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
      # out of the hoppers inventory. 
      # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
      prevent-hopper32k-mechanic: true
      delete-shulker-if-contains-specific-higher-enchanted: false
      bundles-cant-unbundle-if-contains-higher-enchant: true
      periodically-check-player-inventories:
        enable: false
        check-period-in-ticks: 20
    revert-inapplicable-enchants:
      enable: true
      item-whitelist-enabled: true
      use-as-blacklist-instead: false
      whitelisted-items:
      - GOLDEN_APPLE
      # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
      # out of the hoppers inventory. 
      # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
      prevent-hopper32k-mechanic: false
      delete-shulker-if-contains-inapplicable-enchant: false
      periodically-check-player-inventories:
        enable: false
        check-period-in-ticks: 20
  nbt:
    revert-illegal-damage-modifiers:
      # Reverts 32ks / 255s that have been created using nbt tags instead of illegal enchants.
      enable: false
      # The exact name of the damage nbt tag
      tag: dmg
      log: false
      item-whitelist-enabled: false
      use-as-blacklist-instead: false
      whitelisted-items:
      - GOLDEN_APPLE
      # Deletes the item instead of clearing the tag
      delete-item-instead: false
      # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
      # out of the hoppers inventory. 
      # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
      prevent-hopper32k-mechanic: true
      delete-shulker-if-contains-damage-modifier: false
      bundles-cant-unbundle-if-contains-damage-modifier: true
      periodically-check-player-inventories:
        enable: false
        check-period-in-ticks: 20
    revert-impossibly-stored-items:
      enable: false
      # The exact name of the nbt tag that signals items are stored inside.
      tag: BlockEntityTag
      # Deletes the item instead of clearing data
      delete-item-instead: false
      log: false
      delete-shulker-if-contains-storage-items: false
      materials-to-check:
      - CHEST
      - TRAPPED_CHEST
      - DISPENSER
      - DROPPER
  player-heads:
    remove-items:
      # This deletes playerheads with and without owners
      enable: false
      # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
      # out of the hoppers inventory. 
      # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
      prevent-hopper32k-mechanic: false
      delete-shulker-if-contains-player-head: false
      periodically-check-player-inventories:
        enable: false
        check-period-in-ticks: 20
    prevent-placing: false
  spawn-eggs:
    # Also prevents them from being used in combination with dispensers.
    prevent-using: false
    remove-spawn-eggs:
      enable: false
      delete-shulker-if-contains-spawn-egg: false
      # Prevents Hopper32k mechanic of placing a shulker containing illegals on top of a hopper and using the illegal 
      # out of the hoppers inventory. 
      # WARNING: Hooks into InventoryMoveItemEvent, which can become resource intense. Enable only if you need to.
      prevent-hopper32k-mechanic: false

##################
#  Chunk Limits  #
##################
chunk-limits:
  block-limit:
    enable: false
    # Attempt to prevent ChunkBan / Client FPS Lag
    max-blocks-per-chunk:
      ZOMBIE_WALL_HEAD: 16
      CREEPER_HEAD: 16
      PIGLIN_HEAD: 16
      ACACIA_HANGING_SIGN: 8
      JUNGLE_WALL_HANGING_SIGN: 8
      BIRCH_WALL_HANGING_SIGN: 8
      ACACIA_WALL_SIGN: 8
      BLACK_BANNER: 12
      GREEN_WALL_BANNER: 12
      MAGENTA_BANNER: 12
      DRAGON_HEAD: 16
      BIRCH_WALL_SIGN: 8
      PURPLE_WALL_BANNER: 12
      SPRUCE_WALL_HANGING_SIGN: 8
      PINK_BANNER: 12
      TRAPPED_CHEST: 200
      CRIMSON_HANGING_SIGN: 8
      PISTON_HEAD: 32
      PLAYER_WALL_HEAD: 16
      CRIMSON_WALL_SIGN: 8
      ENDER_CHEST: 64
      BLACK_WALL_BANNER: 12
      ENCHANTING_TABLE: 16
      BIRCH_SIGN: 8
      BAMBOO_WALL_HANGING_SIGN: 8
      BIRCH_HANGING_SIGN: 8
      SPRUCE_HANGING_SIGN: 8
      PINK_WALL_BANNER: 12
      OAK_WALL_HANGING_SIGN: 8
      WARPED_WALL_HANGING_SIGN: 8
      STICKY_PISTON: 32
      OAK_WALL_SIGN: 8
      BROWN_BANNER: 12
      RED_BANNER: 12
      ZOMBIE_HEAD: 16
      BLUE_WALL_BANNER: 12
      ACACIA_WALL_HANGING_SIGN: 8
      GREEN_BANNER: 12
      LIGHT_GRAY_BANNER: 12
      CHEST: 500
      SPRUCE_SIGN: 8
      MANGROVE_SIGN: 8
      GRAY_WALL_BANNER: 12
      LIME_BANNER: 12
      SLIME_BLOCK: 128
      PLAYER_HEAD: 16
      JUNGLE_SIGN: 8
      WARPED_HANGING_SIGN: 8
      PIGLIN_WALL_HEAD: 16
      CREEPER_WALL_HEAD: 16
      BLUE_BANNER: 12
      BAMBOO_WALL_SIGN: 8
      OAK_HANGING_SIGN: 8
      LIGHT_BLUE_BANNER: 12
      DRAGON_WALL_HEAD: 16
      CYAN_WALL_BANNER: 12
      ACACIA_SIGN: 8
      OAK_SIGN: 8
      BEACON: 32
      BAMBOO_HANGING_SIGN: 8
      DARK_OAK_SIGN: 8
      LIGHT_GRAY_WALL_BANNER: 12
      YELLOW_WALL_BANNER: 12
      MAGENTA_WALL_BANNER: 12
      ORANGE_WALL_BANNER: 12
      BAMBOO_SIGN: 8
      DARK_OAK_HANGING_SIGN: 8
      PISTON: 32
      DARK_OAK_WALL_SIGN: 8
      GLOWSTONE: 5000
      MANGROVE_HANGING_SIGN: 8
      YELLOW_BANNER: 12
      BROWN_WALL_BANNER: 12
      CRIMSON_WALL_HANGING_SIGN: 8
      MANGROVE_WALL_HANGING_SIGN: 8
      ORANGE_BANNER: 12
      PURPLE_BANNER: 12
      MOVING_PISTON: 32
      DISPENSER: 100
      RED_WALL_BANNER: 12
      GRAY_BANNER: 12
      CYAN_BANNER: 12
      SPRUCE_WALL_SIGN: 8
      CRIMSON_SIGN: 8
      LIGHT_BLUE_WALL_BANNER: 12
      WARPED_SIGN: 8
      LIME_WALL_BANNER: 12
      DARK_OAK_WALL_HANGING_SIGN: 8
      JUNGLE_HANGING_SIGN: 8
      MANGROVE_WALL_SIGN: 8
      JUNGLE_WALL_SIGN: 8
      WARPED_WALL_SIGN: 8
  entity-limits:
    custom-limit:
      # Limit specific entity types per chunk.
      enable: false
      log-removals: true
      # Check all chunks every x ticks.
      check-period-in-ticks: 1200
      chunk-age-skip:
        enable: true
        # How long a chunk has to have been inhabited for it to be checked
        min-age-in-ticks: 800
      # When a chunk is loaded, entities inside of it are not necessarily loaded as well.
      # Force loading is worse for performance but could help in some scenarios.
      forceload-entities: false
      # Google EntityType Spigot for the correct names. They have to match your minecraft version.
      limited-types:
        MAGMA_CUBE: 10
        SILVERFISH: 3
        MULE: 10
        FROG: 20
        HOGLIN: 10
        HUSK: 10
        SHEEP: 10
        VEX: 15
        VINDICATOR: 15
        PILLAGER: 15
        PIGLIN_BRUTE: 10
        POLAR_BEAR: 5
        TURTLE: 20
        TRADER_LLAMA: 10
        SLIME: 10
        CAVE_SPIDER: 10
        DROWNED: 10
        EVOKER: 15
        SQUID: 20
        HORSE: 10
        PARROT: 10
        ENDERMITE: 3
        FOX: 10
        AXOLOTL: 10
        STRAY: 10
        ZOMBIE: 10
        CAT: 10
        SALMON: 6
        GOAT: 10
        RABBIT: 5
        DONKEY: 10
        STRIDER: 3
        PANDA: 5
        OCELOT: 3
        ENDERMAN: 10
        ZOMBIE_VILLAGER: 25
        LLAMA: 10
        WITCH: 15
        TROPICAL_FISH: 6
        SPIDER: 10
        ALLAY: 20
        SKELETON: 10
        WITHER_SKELETON: 10
        WITHER: 16
        CREEPER: 10
        MUSHROOM_COW: 10
        CHICKEN: 10
        ZOMBIFIED_PIGLIN: 10
        COD: 6
        ZOMBIE_HORSE: 10
        WITHER_SKULL: 10
        RAVAGER: 15
        GLOW_SQUID: 20
        PUFFERFISH: 3
        GUARDIAN: 20
        BEE: 15
        PHANTOM: 10
        BLAZE: 10
        SKELETON_HORSE: 10
        COW: 10
        PIGLIN: 25
        WANDERING_TRADER: 10
        PIG: 10
        ZOGLIN: 10
        BAT: 3
        DOLPHIN: 4
        TADPOLE: 20
        WOLF: 10
        IRON_GOLEM: 15
    non-living-limit:
      # Limit the amount of non living entities in a chunk to prevent lag (does not affect items).
      enable: false
      log-removals: true
      max-non-living-per-chunk: 100
      # 20 ticks = 1 second
      check-period-in-ticks: 20
    dropped-item-limit:
      # Limit the amount of dropped items in a chunk to combat lag. 
      # Be aware this does not prioritize items by value or anything, just whatever gets over the counter.
      enable: false
      log-removals: true
      max-dropped-items-per-chunk: 200
      # 20 ticks = 1 second
      check-period-in-ticks: 800
      whitelist-specific-item-types: false
      # You need to use correct Material enums for your minecraft version here.
      whitelisted-types:
      - BLACK_SHULKER_BOX
      - BLUE_SHULKER_BOX
      - BROWN_SHULKER_BOX
      - CYAN_SHULKER_BOX
      - GRAY_SHULKER_BOX
      - GREEN_SHULKER_BOX
      - LIGHT_BLUE_SHULKER_BOX
      - LIGHT_GRAY_SHULKER_BOX
      - LIME_SHULKER_BOX
      - MAGENTA_SHULKER_BOX
      - ORANGE_SHULKER_BOX
      - PINK_SHULKER_BOX
      - PURPLE_SHULKER_BOX
      - RED_SHULKER_BOX
      - SHULKER_BOX
      - WHITE_SHULKER_BOX
      - YELLOW_SHULKER_BOX
    villager-limit:
      enable: false
      max-villagers-per-chunk: 25
      log-removals: false
      # check all chunks every x ticks.
      check-period-in-ticks: 600
      # Professions that are in the top of the list are going to be scheduled for removal first.
      removal-priority:
      - NONE
      - NITWIT
      - SHEPHERD
      - FISHERMAN
      - BUTCHER
      - CARTOGRAPHER
      - LEATHERWORKER
      - FLETCHER
      - MASON
      - FARMER
      - ARMORER
      - TOOLSMITH
      - WEAPONSMITH
      - CLERIC
      - LIBRARIAN
  exp-bottle-limit:
    # Prevent having a shitton of exp bottles in one chunk then loading it to kill the server.
    enable: true
    log: false
    # Max in a chunk, doesn't limit the actual xp orbs.
    max-exp-bottle-per-chunk: 25
    # 20 ticks = 1 second
    check-period-in-ticks: 800
  falling-block-limit:
    # Prevent players from placing massive sand chunks and killing the server.
    enable: true
    log: false
    # Removes any falling block if there is more than x blocks (actively) falling in a chunk.
    max-falling-gravitiy-blocks-per-chunk: 60
    # Delay in ticks until the same chunk can be checked again. 
    # Prevents overchecking, because a physics event can be called multiple times for the same chunk.
    chunk-check-delay-in-ticks: 20
  minecart-limit:
    # Limit the amount of minecarts to prevent lag.
    enable: false
    log-removals: false
    max-minecarts-per-chunk: 25
    # 200 ticks = 10 seconds.
    check-period-in-ticks: 400
  vehicle-limit:
    # Limit the amount of vehicles to prevent some lag machines involving boats and a dispenser.
    enable: false
    log-removals: false
    max-vehicles-per-chunk: 25
    # 200 ticks = 10 seconds.
    check-period-in-ticks: 400

#############
#  Bedrock  #
#############
bedrock:
  fill-in-bedrock:
    nether-ceiling:
      fill-on-chunkload:
        enable: false
        # Recommended to leave off. Only useful if world generation is broken for some reason.
        also-check-new-chunks: false
        pause-on-low-tps: true
        # The TPS at which bedrock filling will pause to avoid lag.
        pause-tps: 16.0
      # Case sensitive!
      exempted-worlds:
      - exampleworld
      - exampleworld2
      periodically-check-and-fill:
        enable: false
        check-period-in-seconds: 10
        pause-on-low-tps: true
        pause-tps: 16.0
    nether-floor:
      fill-on-chunkload:
        enable: false
        also-check-new-chunks: false
        pause-on-low-tps: true
        pause-tps: 16.0
      # Case sensitive!
      exempted-worlds:
      - exampleworld
      - exampleworld2
      periodically-check-and-fill:
        enable: false
        check-period-in-seconds: 10
        pause-on-low-tps: true
        pause-tps: 16.0
    overworld-floor:
      fill-on-chunkload:
        enable: false
        # Recommended to leave off. Only useful if world generation is broken for some reason.
        also-check-new-chunks: false
        # Pauses the task during low tps to avoid lag.
        pause-on-low-tps: true
        # The TPS at which bedrock filling will pause.
        pause-tps: 16.0
      # Case sensitive!
      exempted-worlds:
      - exampleworld
      - exampleworld2
      periodically-check-and-fill:
        # only checks loaded chunks
        enable: false
        check-period-in-seconds: 10
        pause-on-low-tps: true
        pause-tps: 16.0
  prevent-going-below-bedrock-floor:
    # Prevents players from going below bedrock the bedrock floor.
    enable: true
    # Teleports the player above the bedrock
    teleport: true
    # Eject player from the vehicle
    eject-player: true
    # Disables a player's elytra flight
    stop-elytra: true
    # Whether the bedrock hole should be filled or not
    fill-bedrock-hole: true
    exempted-worlds:
    - world_the_end
    - skyblock_world
    filler-material: BEDROCK

############
#  Elytra  #
############
elytra:
  # NOTE: Set nocheatplus horizontal elytra settings to 500 or higher.
  elytra-speed:
    # If set to false, will only calculate 2-Dimensional speed without taking height changes into consideration.
    calculate-3D-speed: true
    # Display info in Actionbar while flying.
    display-actionbar: true
    # Inform flying player if they are in old or new chunks.
    display-chunk-info-in-actionbar: true
    # Plays XP pickup sound to alert players when theyre going above the limit.
    play-sound-when-too-fast: true
    sound: ENTITY_EXPERIENCE_ORB_PICKUP
    # Recommended to leave false if you dont experience any issues.
    teleport-instead-of-canceling-movement: false
    Global-Settings:
      # Global settings. If nothing else is enabled, this will be used for all environments.
      enable: true
      # Can be slow with a lot of players. Enable only if needed.
      use-bypass-permission: false
      deny-elytra-usage: false
      speed-old-chunks: 1.81
      speed-new-chunks: 1.81
      enable-bursting: true
      burst-speed-old-chunks: 5.0
      burst-speed-old-chunk-TPS: 18.0
      burst-speed-new-chunks: 3.12
      burst-speed-new-chunk-TPS: 19.0
      deny-elytra-on-low-TPS: true
      deny-elytra-TPS: 12.0
      also-remove-elytra-on-low-TPS: true
    At-Spawn:
      # Use separate values for players at spawn.
      enable: false
      # Radius in blocks around 00 that should count as spawn.
      radius: 3000
      # Can be slow with a lot of players. Enable only if needed.
      use-bypass-permission: false
      deny-elytra-usage: false
      speed-old-chunks: 1.0
      speed-new-chunks: 0.8
      deny-elytra-on-low-TPS: true
      deny-elytra-TPS: 10.0
      also-remove-elytra-on-low-TPS: true
    Nether-Ceiling:
      # Use separate values for players above the nether ceiling.
      enable: true
      # Can be slow with a lot of players. Enable only if needed.
      use-bypass-permission: false
      deny-elytra-usage: false
      speed-old-chunks: 0.5
      speed-new-chunks: 0.5
      enable-bursting: true
      burst-speed-old-chunks: 1.0
      burst-speed-old-chunk-TPS: 18.0
      burst-speed-new-chunks: 1.0
      burst-speed-new-chunk-TPS: 18.0
      deny-elytra-on-low-TPS: true
      deny-elytra-TPS: 12.0
      also-remove-elytra-on-low-TPS: true
  patch-generic-speedhacks:
    # Patches speed-limit bypass using generic speedhacks (Timer) by additionally checking player position every x ticks
    enable: true
    # Lower value means more accuracy but also more overhead.
    check-interval-in-ticks: 10
  packet-elytra-fly:
    # Patches the future/rusherhack/kamiblue 2b2t elytra fly exploit
    patch-packet-elytra-fly: false
    use-bypass-permission: false
    # The fly exploit causes the player to constantly toggle gliding. 
    # If too many glide toggles occur within a timeframe, they are most likely using PacketFly. 
    # Still triggers false positives when players are jump sprinting with elytras, so play around with the values.
    max-elytra-opens-per-time: 25
    # Will only allow players to go about 85km/h.
    time-in-seconds: 8
    # Configure message in lang folder.
    notify-player-to-disable-packetfly: true
    # If enabled, player will be kicked instead of dropping their elytra.
    kick-instead-of-remove-elytra: false

##########
#  Chat  #
##########
chat:
  command-whitelist:
    # This will make it pretty much impossible to find your plugins as only the commands you specify will be able to work. 
    # Allow bypass using permission: anarchyexploitfixes.commandwhitelistbypass
    enable: false
    # Will show logs when a command was denied.
    log: false
    # Enable only if you have problems with the regular commandwhitelist. Otherwise not recommended to use.
    use-protocollib: false
    # Add all commands you want your players to be able to access (without the '/'). Not case sensitive.
    whitelisted-commands:
    - help
    - vote
    - kill
    - discord
    - togglechat
    - toggleconnectionmsgs
    - toggletells
    - togglewhispering
    - toggleprivatemsgs
    - ignore
    - ignorelist
    - ignorehard
    - toggledeathmsg
    - dmt
    - worldstats
    - stats
    - tps
    - msg
    - whisper
    - w
    - m
    - t
    - pm
    - tell
    - r
    - reply
    - last
    blacklisted-subcommands:
    - help about
    - vote List
    - vote Best
    - vote Total
    - worldstats reload
    - stats reload
  prevent-scanning-server-plugins:
    # Prevents hacked clients running .plugins to find out what plugins the server is using
    enable: true

###################
#  Miscellaneous  #
###################
misc:
  join-leave-messages:
    # If you want to hide yourself or someone else when logging into the game,
    # use these permissions: anarchyexploitfixes.silentJoin, anarchyexploitfixes.silentLeave
    enable: true
    # default mode of /toggleconnectionmsgs
    connection-messages-on-by-default: true
    show-in-console: false
    first-join-messages:
      # Configure messages in lang folder.
      enable: false
      show-in-console: true
  kicks:
    # Configure mask message in lang folder.
    mask-kick-messages: false
    prevent-message-kick:
      # Cancels the kick for specific kick messages.
      enable: false
      kick-messages-to-listen-to:
      - Kicked for spamming
      - Stop spamming!

Optimization Guide

You can find an optimization guide at the file GUIDE.md

Probably won't be added

  • Auto-updater, because you shouldn't trust me and instead read the code yourself.

Stars over time

Stargazers over time