
VillagerLobotimizer
A plugin to lobotomize villagers stuck in a trading hall. Perfect for SMPs looking to increase performance without sacrificing gameplay!
Обновлён 22 июня 2026 г. · опубликован 31 марта 2025 г.
VillagerLobotimizer
A Minecraft Paper plugin that improves server performance by turning off villagers' AI when they're confined to trading halls.
Features
- Automatically detects when villagers are trapped in trading halls
- Disables AI for trapped villagers to improve server performance
- Maintains villager trading functionality while AI is disabled
- Automatically refreshes villager trades on a configurable schedule with randomization support
- Profession-specific restock sounds and level-up celebrations
- Optimized job site detection for better performance
- Night-time trade refresh functionality
- Allows naming villagers to control their behavior ("nobrain", "alwaysbrain")
- Debug mode for troubleshooting
- Command system for checking villager status and managing the plugin
Commands
/lobotomy info- Shows statistics about lobotomized and active villagers/lobotomy debug- Shows detailed information about the villager you're looking at/lobotomy debug <entity>- Shows detailed information about a specific villager/lobotomy debug toggle- Toggles debug mode/lobotomy wake- Manually restores AI to the villager you're looking at/lobotomy reload- Reloads the configuration and applies changes to all villagers

Note: I do not make any money off this link. It's fully non-monetized.
Configuration
#Configuration version - DO NOT MODIFY MANUALLY
config-version: 4
#List of names that will always keep villagers active (case-insensitive)
always-active-names:
- "alwaysbrain"
#Interval between trapped checks, in ticks, for active villagers
check-interval: 150
#Interval between trapped checks, in ticks, for inactive villagers
inactive-check-interval: 150
#Interval between villager trade restocks, in milliseconds
restock-interval: 540000
#Range (in milliseconds) before restock-interval to start random restock checks. If set to 0, restocking is not randomized. If equal to or greater than restock-interval, restock will always occur.
restock-random-range: 0
#Whether to only lobotomize villagers with jobs
only-lobotomize-villagers-with-professions: false
#Whether to only lobotomize villagers that have been traded at least once
only-lobotomize-villagers-with-experience: false
#Whether to lobotomize villagers in boats/minecarts. Does not apply to villagers riding on non-vehicle entities like horses.
always-lobotomize-villagers-in-vehicles: false
#Whether to make lobotomized villagers silent. When enabled, villagers will be muted when their AI is disabled.
silent-lobotomized-villagers: false
#The sound to play when a villager restocks. Leave empty ("") for default sounds.
#A list of sounds can be found at https://jd.papermc.io/paper/1.21.6/io/papermc/paper/registry/keys/SoundEventKeys.html
#Use the name found in the description column, e.g. "entity.villager.celebrate" for the sound played when a villager restocks.
restock-sound: ""
#The sound played when a villager is leveled up. Leave empty ("") for no sound.
level-up-sound: "entity.villager.celebrate"
#Debug mode. Prints debug messages to the console.
debug: false
#Chunk debug mode. Prints debug messages related to chunks
chunk-debug: false
#To ignore villagers stuck in doors, set this to true.
ignore-villagers-stuck-in-doors: false
#To not lobotomize villagers surrounded by non-solid blocks, set this to true.
ignore-non-solid-blocks: false
#To check if there is a roof above a villager before lobotomizing, set this to true
check-roof: true
#Create teams for debugging purposes. This will create colored teams for inactive and active villagers. We use this to color their glowing effect.
create-debug-teams: false
#Disable the update checker. You can disable this if you don't want to be notified about updates.
disable-update-checker: false
#Disable chunk forced Villager updating. This'll disable changes to blocks in a chunk from triggering Villagers in the chunk to be updated.
disable-chunk-villager-updates: false
#Prevent trading with unlobotomized villagers. When enabled, players can only trade with villagers that have been lobotomized.
prevent-trading-with-unlobotomized-villagers: false
#Persist lobotomized state across chunk unloads. When enabled, villagers that are lobotomized will remain lobotomized when their chunk is unloaded and reloaded.
#This prevents lag spikes from villagers needing to be re-evaluated and re-lobotomized after chunk loads.
persist-lobotomized-state: true
#Enable Sentry error tracking to help developers identify and fix bugs. See "Privacy & Telemetry" section below for details.
enable-sentry: true
Special Villager Names
- Name a villager with "nobrain" to force it to always be lobotomized
- Name a villager with "alwaysbrain" to prevent it from ever being lobotomized (configurable in
always-active-names)
Sound System
The plugin features an enhanced sound system:
- Default restock sounds: When
restock-soundis left empty, villagers will play default sounds when restocking - Customizable sounds: You can override the default sounds by specifying a custom sound in the configuration
- Sound reference: A complete list of available sounds can be found in the Paper API documentation
- Level-up celebrations: Villagers play celebration sounds when they level up their trades
Requirements
- Paper (or its forks) 1.21.6+
- Java Development Kit (JDK) 21 for development
Installation
- Download the latest release from Modrinth or Hangar
- Place the .jar file in your server's plugins folder
- Restart your server or use a plugin manager to load the plugin
- Configure the plugin settings in
plugins/VillagerLobotimizer/config.ymlif needed
Development
Prerequisites
- Java Development Kit (JDK) 21
- Gradle (wrapper included)
Building
Clone the repository
git clone https://github.com/mja00/VillagerLobotimizer.git cd VillagerLobotimizerBuild the plugin
./gradlew buildThe built plugin will be in
build/libs/VillagerLobotimizer-<version>.jar
Running a test server
The project uses the run-paper plugin to easily test changes:
./gradlew runServer
This will download a Paper server for Minecraft 1.21.5 and start it with the plugin installed.
Publishing
The project uses Hangar for publishing:
./gradlew publishPluginPublicationToHangar
This requires the HANGAR_API_KEY environment variable to be set. The plugin will be published as:
- A release version if the current commit is tagged with a version matching the project version
- A snapshot version if there's no matching tag
Support
If you encounter any issues, please report them on GitHub.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Центр версий
68 версийЧенджлог
1.15.1Релиз26.1.1, 26.1.2, 26.2 · 22 июня 2026 г.
fix: clamp block lookups
1.15.1-snapshot-92a06b8Бета26.1.1, 26.1.2, 26.2 · 22 июня 2026 г.
fix: clamp block lookups
1.15.0Релиз26.1.1, 26.1.2, 26.2 · 19 июня 2026 г.
Code review remediation: Folia safety, correctness, performance + activity-policy extraction (#72)
Co-authored-by: Copilot Autofix powered by AI 175728472+Copilot@users.noreply.github.com Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1.15.0-snapshot-7da589bБета26.1.1, 26.1.2, 26.2 · 19 июня 2026 г.
Code review remediation: Folia safety, correctness, performance + activity-policy extraction (#72)
Co-authored-by: Copilot Autofix powered by AI 175728472+Copilot@users.noreply.github.com Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1.14.2-snapshot-4333e2aБета26.1, 26.1.1, 26.1.2 · 31 мая 2026 г.
refactor: use InventoryOpenEvent to prevent trading with unlobotomized villagers (#71)
Co-authored-by: Akiranya 14846342+Akiranya@users.noreply.github.com
1.14.2Релиз26.1.1, 26.1.2, 26.2 · 10 мая 2026 г.
fix: make villager sets atomic (#70)
1.14.2-snapshot-a9dd0d1Бета26.1, 26.1.1, 26.1.2 · 10 мая 2026 г.
fix: make villager sets atomic (#70)
1.14.2-snapshot-cacd6bcБета26.1, 26.1.1, 26.1.2 · 9 мая 2026 г.
ci: migrate all workflows to arc-villager self-hosted runners (#68)
- ci: migrate all workflows from ubuntu-latest to arc-villager
self-hosted runner scale set arc-villager backs builds with java 21
- dind on the cluster's gemini node. covers test, pr-build, publish (both jobs), claude, and close-default-branch-prs.
publish.yml's publish job was previously pinned to ubuntu-24.04; that distinction goes away on arc since the runner image is fixed.
before merging confirm Settings → Actions → 'Approval for first-time contributors' is set so fork PRs can't auto-trigger jobs on the self-hosted runner.
- ci: address copilot security review on PR #68
- test.yml + pr-build.yml: conditional runs-on so fork PRs fall back to ubuntu-latest. arc-villager only runs trusted gradle builds.
- close-default-branch-prs.yml: revert to ubuntu-latest. it's a pull_request_target workflow that any fork PR can trigger; pure github API calls, zero need for self-hosted, all DoS surface.
- claude.yml: gate on github.actor == github.repository_owner so only the repo owner can spend the CLAUDE_CODE_OAUTH_TOKEN secret via @claude mentions.
co-authored-by: copilot-pull-request-reviewer copilot-pull-request-reviewer@users.noreply.github.com
Co-authored-by: Matt Artist claude@mart.fyi Co-authored-by: copilot-pull-request-reviewer copilot-pull-request-reviewer@users.noreply.github.com
Комментарии
Загружаем…

