Villager Trade Preview「村民交易预览」

### **Villager Trade Preview Datapack Introduction**

**Still frustrated by the hidden trades of those shady villager merchants?**
Wish you could preview the treasures they’ll offer before leveling them up? The **Villager Trade Preview** datapack is the pure vanilla solution you’ve been waiting for!

#### **📖 Overview**
Inspired by the popular mod Visible Traders, this datapack has been redesigned specifically for **pure vanilla environments** (such as Vanilla, Paper, Spigot servers, and single-player worlds). It allows all players (without needing to install any mods) to directly preview **all future trades (levels 2-5)** that a villager will unlock, simply by interacting with them at **level 1**.

#### **✨ Key Features**
* **🔮 Trade Preview**: When interacting with a level 1 villager, their trading interface will directly display all the trades they will unlock upon leveling up (shown in a locked/unavailable state).
* **⚙️ Server-Side Only**: **Requires no mods or resource packs on the player’s side.** Simply install this datapack on your server (or in your single-player world), and all players using the vanilla client can enjoy the preview function. Perfectly compatible with major server software like Vanilla, Paper, Spigot, and single-player worlds.
* **🌿 Fully Compatible**: Works with all vanilla villager professions and biome variants.
* **🔄 Plug and Play**: Both existing villagers and newly generated ones in your server/world will automatically gain the trade preview feature after installation.

#### **🎯 Compatible Versions**
* **Minecraft Java Edition: 26.1+**

#### **💡 Difference from the Mod**
Unlike the `Visible Traders` mod, which requires installation on both client and server, this datapack is designed specifically for **pure vanilla server-side environments** (or single-player) where mods cannot be installed. It achieves the core functionality through the datapack system, allowing vanilla players to enjoy the convenience of previewing future trades. It’s perfect for survival or commercial servers that primarily rely on plugins and datapacks.

#### **📥 Installation Guide**
1. Download the datapack file (`.zip`).
2. Place the file into the `world/datapacks` folder of your server or single-player world save.
3. Restart the server.
4. Done! Your villagers’ trades are now more transparent and engaging!

## ⚠️ Important Note
This datapack is **not directly associated with** the `Visible Traders` mod. It is an independent project inspired by it and developed specifically for vanilla environments.

### **「村民交易预览」数据包介绍**

**还在为奸商村民的隐藏交易而烦恼吗?**
想在升级村民前,就能预览他们未来会提供哪些宝藏吗?「**村民交易预览**」数据包正是为你准备的纯原版解决方案!

#### **📖 概述**
本数据包灵感来源于知名模组 Visible Traders,但针对**纯原版环境**(如 Vanilla、Paper、Spigot 服务器和单人游戏)进行了重新设计。它允许所有玩家(无需安装任何模组)在查看**等级为1的村民**时,直接预览该村民在后续所有等级(2-5级)将会解锁的全部交易项目。

#### **✨ 主要特性**
* **🔮 交易预览**:与等级1的村民互动时,其交易界面会直接显示他未来升级后才会解锁的交易选项(以锁定状态呈现)。
* **⚙️ 纯服务端运行**:**无需玩家安装任何模组或资源包**。只需在服务器端(或单人游戏)安装此数据包,所有使用原版客户端的玩家即可享受预览功能。完美兼容 Vanilla、Paper、Spigot 等主流服务端和单人游戏。
* **🌿 完全兼容**:适用于所有原版村民职业和生物群系变种。
* **🔄 即装即用**:安装后服务器中已有的村民和新生成的村民都会自动获得交易预览功能。

#### **🎯 适用版本**
* **Minecraft Java 版:26.1+**

#### **💡 与模组的区别**
与需要客户端和服务端同时安装的 `Visible Traders` 模组不同,本数据包专为无法安装模组的**纯原版服务端**(或单人游戏)打造。它通过数据包机制实现核心功能,让原版玩家也能享受到查看未来交易的便利,非常适合插件、数据包为主的生存或商业服务器。

#### **📥 安装方法**
1. 下载数据包文件(`.zip`)。
2. 将文件放入服务器或单人游戏存档的 `world/datapacks` 文件夹中。
3. 重启服务器。
4. 大功告成!现在你的村民交易更加透明、有趣了!

## ⚠️ 重要提示
本数据包与 `Visible Traders` 模组**没有直接关联**,是受其启发并针对原版环境开发的独立项目。

Villager Trade Expansion

![Replace this with a description](https://cdn.modrinth.com/data/cached_images/aeea575144202ad13c3dbd9f76a848637dc3464d.png)
![villager trading](https://cdn.modrinth.com/data/cached_images/e1fa6f47a3f332b031b579ceadf30f3687ba30df.png)

Enhance your Minecraft experience with the Villager Trade Expansion datapack! This pack introduces a wide array of new trades for villagers across various professions, adding depth and diversity to your in-game economy. From custom trades for armorsmiths offering diamond armor pieces to brewers selling potent potion effects, each villager profession now offers unique and valuable items in exchange for resources. Whether you’re a seasoned player looking for fresh challenges or a newcomer seeking enhanced gameplay, Villager Trade Expansion is sure to enrich your Minecraft world.

## new armorer trades
adds trading 20 iron ingots for 1 armor piece
## new brewer trades
adds 3 new trades
2 diamonds for random potion effects
## new trade for toolsmith
20 iron ingots for 1 diamond tool
### i will add more villager trades soon in more updates

Villager Shop Edit in SURVIVAL (Villager Trades Edit)

**_Only the server or hoster needs to set up_**

– Addition’s villagers cannot participate in any farm
– Addition’s villagers cannot pick up items on the ground
– Addition’s villagers do not take damage and zombies do not attack

> Set the maximum number of items a villager can sell (set only at the beginning)
– /scoreboard players set maxstok varilshop-genel “#”
– “#”: Maximum number of items a villager can sell (1-27)

Villager Shop

# Villager Shop

![Discord](https://discord.gg/5UdcDa5xNC)
![Modrinth](https://modrinth.com/datapack/villager-shop)
![License](https://github.com/lullaby6/data-packs/blob/main/LICENSE)

## 📖 Description

A fully customizable villager shop for players! Now you can craft the Villager Shop item, after placing the Villager Shop you will receive a Key, that’s Key is for access to the Villager Shop Menu, in the menu you can config their trades, profession, biome, rotation, glowing, and the option to remove the Villager Shop too!

## ❗Compatibility

– Compatible with Claims!

## ⌨️ Commands

Give villager shop:

“`mcfunction
/loot give @s loot villager_shop:villager_shop
“`

Uninstall:

1. Run `/function villager_shop:uninstall`.
2. Run `/datapack disable `.
3. If there any entity of Villager Shop left, run `/kill @e[tag=villager_shop.entity]`.

## 🪪 License

– AGPL-3.0-or-later

## 👾 Bugs/Issues

Please report any problem/bug/issues in the Discord Server.

## 💌 Donate

– Donate on Ko-Fi
– Donate on PayPal

## 🎁 Server Hosting

Creating your own server can be a very lengthy, tedious and costly process.

But with BisectHosting, you get your own server in just a couple of clicks! With their 24/7 support and fast-response time, no issues shall stand in your way!
Interested? Then we’ve got a deal for you!

https://bisecthosting.com/lullaby

![Server Hosting](https://www.bisecthosting.com/partners/custom-banners/e840cd99-59f6-4b27-b542-3023cd08bdfe.webp)

Villager Retaliation!

Villagers remember, villagers fight back.

Available for NeoForge
Available on Modrinth
Available on CurseForge
Available on GitHub

![villagers chasing a player](https://cdn.modrinth.com/data/cached_images/16269e99f4ef7ac15b6d24f3b523e5fa5778d5f5.png)

Villager Retaliation! is a Vanilla+ NeoForge mod that makes villagers and wandering traders less helpless without turning villages into warzones.

Adult villagers can defend themselves, react to crimes they witness, use profession-based combat roles, and remember how each player treats them through a personal reputation system.

– Attack a villager and that villager can fight back
– Kill a villager in public and nearby villagers may rally
– Player-placed lava and fire can count as aggression for a short attribution window
– Build trust through trade and positive village defense
– Lose trust through attacks, witnessed crimes, and village harm
– Make villagers suspicious, hostile, despised, or feared if you push things too far
– Keep babies defenseless and nitwits cowardly as intended

![features](https://cdn.modrinth.com/data/cached_images/ec0e4dc78ec1a652eb11b233dd2926f7461fe770.png)

![villagers carrying profession based weapons](https://cdn.modrinth.com/data/cached_images/44e64c624e3bad762345ee5f8df5d91c5ef5f6cd.png)

## Main Features

### Retaliation

Villagers are neutral instead of purely passive.

By default, hitting a villager only angers that villager. Killing an adult villager can anger nearby adult villagers if they can witness it. Anger expires after a configurable duration, and creative/spectator players can be ignored.

Villagers and wandering traders can also block trading while hostile. Hostile villagers can be pacified with emeralds, unless your reputation has fallen too low.

### Reputation

Reputation is tracked per villager and per player.

That means one villager can trust you while another despises you. Reputation can affect trade prices, pacification, anger duration, fleeing, despised attack-on-sight behavior, cleric support, and advancement progression.

Default tiers:

| Tier | Default threshold |
| — | —: |
| Royalty | 750 |
| Revered | 400 |
| Respected | 250 |
| Trusted | 75 |
| Neutral | 0 |
| Suspicious | -75 |
| Hostile | -100 |
| Despised | -250 |
| Feared | -750 |

Reputation changes are configurable. By default, direct villager hits are punished more than witnessed hits, villager kills are punished heavily, and player-attributed lava/fire damage counts for half the normal reputation penalty.

![villagers retaliating against a player that killed another villager](https://i.imgur.com/6c3vdac.gif)

### Profession Combat

Villagers fight in ways that match their profession.

| Profession | Behavior |
| — | — |
| Weaponsmith | Uses stronger melee behavior with swords |
| Armorer | Can fight defensively, gain resistance, and use shields in hard mode |
| Toolsmith | Uses tool-based melee |
| Mason | Uses mining-tool style melee |
| Butcher | Uses axe-based melee |
| Fletcher | Uses bows or crossbows |
| Farmer | Can defend themselves and heal with bread |
| Cleric | Uses potions for defense, attacks, and ally support |
| Librarian | Can fight with book-themed |
| Nitwit | Usually flees unless holding a usable weapon |

Fletchers and other villagers holding ranged weapons can use bows, crossbows, and tridents. Crossbows use charge/hold/fire states, and tridents use a thrown attack.

### Cleric Support

Clerics have the most advanced combat role.

They can drink defensive potions, throw harmful or slowing splash potions, avoid friendly splash damage where possible, heal injured villagers and wandering traders, and support trusted-or-better players.

Passive cleric healing has configurable range, health threshold, and line-of-sight rules.

### Hazard Attribution

Player-placed hazards can count as aggression.

If a player places lava, uses flint and steel, or uses a fire charge, nearby lava/fire damage can be attributed to that player for a short window. This allows “accidental” environmental attacks to still matter for retaliation, reputation, and advancements.

The default attribution window is 2 real-time minutes. Natural lava, old hazards, worldgen hazards, and untracked hazards are not meant to count.

![A player using lava to kill a villager, and being attributed to the kill](https://i.imgur.com/GSgbQr8.gif)

## Reputation Behavior

Higher trust can reduce anger duration, improve trade pricing, and unlock helpful cleric support.

Lower trust can make villagers more dangerous or less willing to deal with you:

– Suspicious villagers apply negative trade pressure
– Hostile villagers can harass you with eggs or poisonous potatoes
– Despised villagers can attack on sight when enabled
– Feared villagers visibly react when you get close
– Despised or feared villagers may refuse emerald pacification
– Babies, nitwits, and non-combat villagers can flee from hated players

## Loot

Villager Retaliation! adds configurable drops for villagers and wandering traders.

– Villagers can drop emeralds and bread
– Adult villagers can roll profession-themed loot
– Combat weapons can drop at configurable rates
– Baby villager loot is disabled by default
– Wandering traders can drop emeralds, invisibility potions, and safe copies of current trade results

Profession loot generally requires player kill credit by default.

## Advancements

The mod includes a full reputation advancement tab.

All Advancements (Click to Expand)

| Advancement | Type | Criteria | Hidden |
| — | — | — | — |
| Village Relations | Task (Tab Root) | Automatically granted when any Villager Retaliation advancement is awarded. | No |
| Commonfolk | Task | Interact with any villager, or enter a village. | No |
| I’m Sorry! | Task | Pacify a hostile villager with emeralds. | No |
| A Familiar Face | Task | Reach Trusted reputation with any villager. | No |
| Respect Is Earned | Task | Reach Respected reputation with any villager. | No |
| Friend of the Village | Goal | Reach Trusted with 5 villagers in one village area. | No |
| Local Legend | Challenge | Reach Revered reputation with any villager. | No |
| Crowned by the Village | Challenge | Reach Royalty reputation with any villager. | No |
| Second Chance | Goal | Cure a zombie villager that retains known reputation data for you. | No |
| The Village Remembers | Goal | Move from Suspicious or lower back to Neutral or higher. | No |
| Bad First Impression | Task | Reach Suspicious reputation with any villager. | No |
| Hands Off | Task | Damage a villager. | No |
| The Village Has Eyes | Goal | Harm or kill a villager while at least 3 adult villagers can witness it. | No |
| Marked | Challenge | Reach Feared reputation with any villager. | No |
| Village Enemy | Challenge | Have 5 or more villagers targeting you at the same time. | No |
| Mob Justice | Challenge | Have 8 or more villagers targeting you at the same time. | No |
| Regular Customer | Goal | Complete 10 trades with the same villager. | No |
| Community Support | Goal | Trade with 5 different villagers in one village area. | No |
| Price of Trust | Goal | Reach a positive trust tier with a villager after trading with them. | No |
| Refused Service | Task | Attempt to trade with a villager that blocks interaction due to low reputation. | No |
| Hero, Not Menace | Goal | While distrusted by nearby villagers, gain positive reputation by defending against hostiles. | No |
| An Unwise Decision | Goal | Damage an iron golem associated with a village. | No |
| Peace Offering | Challenge | After being Hostile or worse with a villager, return to Neutral or higher with that villager. | Yes |
| Accidentally, Of Course | Challenge | A villager dies from a player-attributed environmental hazard without direct player damage. | Yes |

![keybinds](https://cdn.modrinth.com/data/cached_images/201d5ce49ba16974e3c3b0b562c392e03f38e35f.png)

## Commands

Requires operator.

“`mcfunction
/villagerretaliation setNearbyReputation
“`

This sets nearby villagers’ and wandering traders’ reputation toward the executing player. It is mainly useful for testing tiers, trade pricing, despised behavior, feared behavior, pacification, and the debug overlay.

Example:

“`mcfunction
/villagerretaliation setNearbyReputation -150
“`

## Configuration

Main config file:

– Singleplayer/client: `config/villagerretaliation-common.toml`
– Dedicated server: `/config/villagerretaliation-common.toml`

Config categories include:

– `general` – master feature toggles
– `balance` – loot and drop rates
– `retaliation` – anger rules, aggro radius, duration, line-of-sight witnesses
– `reputation` – penalties, gains, thresholds, gossip, trade pricing
– `combat` – profession combat toggles, armorer shields, clerics, farmers
– `debugOverlay` – optional reputation display for testing
– `wanderer` – wandering trader drop behavior

## Debug Overlay

There is an optional client-side debug overlay for testing reputation.

When enabled, it can show the villager’s reputation tier and/or exact reputation value above their head. It can be limited by distance, sneaking, or advanced tooltips.

This is disabled by default and is mainly intended for testing and balancing.

![compatibility](https://cdn.modrinth.com/data/cached_images/1252c11050b7daf8b8621712b58dd1005e7ba982.png)

## Compatibility

Villager Retaliation! is designed to work with vanilla villager systems rather than replacing villager entities.

– Built for NeoForge 1.21.1
– Uses vanilla-style entity events and AI memory adjustments
– Uses vanilla gossip integration where enabled
– Uses NeoForge item tags for weapon detection where possible
– Does not replace the villager entity type

Compatibility may vary with mods that heavily replace villager AI, trading, combat, or entity classes.

## Version and Loaders

– NeoForge 1.21.1 – active development
– Forge – not planned anytime soon, don’t ask please 🙂
– Fabric – possible future port, not anytime soon
– Older Minecraft versions – not planned
– Eventually, will skip straight to 26.1/whatever the newest standard will be for modding.

![credits & license](https://cdn.modrinth.com/data/cached_images/5fd3ad80e342e6985dd6ebda1f7afd9c48749fce.png)

## Modpacks

You may use this mod in modpacks, videos, servers, and other projects. A link back to the Modrinth page is appreciated.

## Credits

Created by me 😀

## License

This project is licensed under the **GNU General Public License v3.0**.

Feel free to use this mod in modpacks, videos, etc. Just provide a link back to this page if possible 🙂

Looking to port the mod to your favourite loader/version outside of my scope? Feel free to, and let me know so I can add a sub-section to direct users to it!

For any general queries/unlisted questions, DM me on Twitter (@prodbyjvn) / Discord (ijvn).

This mod ONLY exists on Modrinth & CurseForge as of May 2026. Any sites hosting this mod outside of Modrinth/CurseForge are not official releases.

Villager Restocker

Villager Restocker is a lightweight and user-friendly Minecraft mod designed to give players and server administrators full control over villager trading behavior. With easy to use commands, you can instantly restock villagers or schedule a restock at any time using seconds, minutes, or hours. The mod also includes optional notification controls, allowing you to hide or show restock messages for a cleaner and more customized gameplay experience. It is especially useful for trading halls, multiplayer servers, and survival worlds where villager management is important.

**How to Use**
Trigger a Restock

**Use the following command:**
/villager restock

**Examples:**
/villager restock 10s → Restock in 10 seconds
/villager restock 1m → Restock in 1 minute
/villager restock 2h → Restock in 2 hours

**Supported time formats:**
s = seconds
m = minutes
h = hours

**Show or Hide Restock Messages**

**To hide the message “Villagers have been restocked”:**
/villager hide

**To show the message again:**
/villager show

Villager Reset

# VillagerReset

VillagerReset is a dual-platform Minecraft server project that provides villager trade cycling features for:

– Paper 1.21.x plugin
– Fabric 1.21.11+ (Mojmap) server mod

![1](https://i.imgur.com/Qwh4Hfm.png)
![2](https://i.imgur.com/fViNBcA.png)

## Features

– Adds two special villager trade entries (before villager is locked by a normal purchase):
– `Cycle Trades` option (barrier icon): rerolls villager trades for emerald cost.
– `Profession Swap` option (head icon): swaps to a random profession for emerald cost/chance.
– Special options are virtual actions (no barrier/head item goes to player inventory).
– Configurable max special uses before sold out; restocks like normal villager offers.
– Optional unemployed handling: pay a higher first-time cost to assign profession.
– Optional cure discount spread to villagers in configurable radius.
– OP/admin command for runtime config edits, status listing, enable/disable, and debug mode.

## Commands

– `/villagerreset status`
– `/villagerreset list`
– `/villagerreset set `
– `/villagerreset enable`
– `/villagerreset disable`
– `/villagerreset reload`
– `/villagerreset debug `

Alias: `/vr`

Permission: `villagerreset.admin` (default: op)

## Example Config

“`
enabled: true
debug: false
cycle-cost-emeralds: 1
profession-swap-cost-emeralds: 2
unemployed-initial-profession:
enabled: true
cost-emeralds: 10
cycle-max-uses: 8
profession-swap-success-chance: 1.0
cure-discount:
enabled: true
radius-blocks: 500
bonus-level: 20
“`

## License

Licensed under `GNU General Public License v3.0` (GPL-3.0-only). See [LICENSE](LICENSE).

Villager Reroll

## 🔄 Villager Trade Reroll

Villager Trade Reroll adds a simple and intuitive way to reroll villager trades — but only before the first trade is made.

## ✨ Features

– Adds a **⟳ button** to the villager trading GUI
– Allows **unlimited rerolls** as long as no trade has been made
– Automatically **disables reroll after the first successful trade**
– Works with **all villager professions**
– Fully **server-side validated** (no cheating possible)

## 🧠 Behavior

– If you have **never traded** with a villager → reroll is available
– Once you trade **even once** → reroll is **permanently disabled**
– Reroll stays disabled even after:
– closing and reopening the GUI
– world reload
– villager → zombie villager → villager conversion

## ⚙️ Technical

– Loader: **Fabric**
– Minecraft version: **1.21.4-1.21.11**
– Lightweight and fully compatible with vanilla mechanics

## 🎯 Why I created this mod

Because I got tired of breaking and replacing the villager’s workstation just to reroll trades.

I also couldn’t find any mod that provides this feature for Minecraft 1.21.4, so I decided to create my own solution.

Villager Refresh

VillagerRefresh is a lightweight Minecraft plugin that solves the issue with villager trade refreshing when the `doDaylightCycle` gamerule is disabled. It periodically refreshes villager trades regardless of the day/night cycle, allowing players to continue trading and leveling up villagers normally.

## Features

– Automatically refreshes all villager trades at configurable intervals;
– Works with disabled `doDaylightCycle` gamerule;
– Preserves all trade properties (experience rewards, villager experience, price multipliers);
– Minimal performance impact;
– Simple configuration.

## Requirements

– Minecraft Server version 1.12.2-latest;
– Java 8 or higher;
– Bukkit-based core (Spigot, Paper, Purpur etc.).

## Installation

Download the latest release, place it in your server’s plugins folder and restart the server or use the `/reload` command.
The plugin will generate a default configuration file at `plugins/villager-refresh/config.yml`.

## Configuration

The plugin uses a simple configuration file (EXAMPLE of config.yml):
“`
# Trade update interval in minutes
refresh-interval-minutes: 20
# Log refreshes into console?
log-refreshes: true
“`

## Permissions

Plugin has permission `villagerrefresh.commands` to prevent regular players use plugin commands.

## Commands

– `/vrefresh reload` – reload config
– `/vrefresh set [minutes]` – set interval for refreshing villagers & reload config

Villager Rebalance

# Villager Rebalance

Villager Rebalance is a server-side Fabric mod that makes villager progression harder to exploit while keeping the mechanics configurable.
## Features

### Cure Discount Limits

Repeated zombie villager curing can remove an eligible trade after a configurable number of safe cures. This keeps one cure useful while reducing repeated cure abuse.

Config options:

– `curing.enabled`: enables the module.
– `curing.maxSafeCures`: cures allowed before penalties can happen.
– `curing.penaltyChancePercent`: chance that an excess cure removes one trade.
– `curing.slotSelection`: chooses the removed trade with `random`, `highestValue`, or `lastSlot`.

### Reroll Prevention

Untraded villagers in affected professions remember their first generated offers. Breaking and replacing a workstation within the memory radius restores those offers instead of rolling new ones.

Reroll locks are stored per profession, so a villager can remember separate affected-profession offers for jobs such as fletcher and librarian. Trading with the villager clears the stored locks.

Config options:

– `rerollPrevention.enabled`: enables the module.
– `rerollPrevention.memoryRadius`: distance from the remembered job site before old offer locks can be cleared by a profession change.
– `rerollPrevention.affectedProfessions`: comma-separated villager profession ids affected by reroll prevention.

### Librarian Rare Book Tuning

Librarian book trades can be biased toward configured rare enchantments when `librarians.rareBookBiasEnabled` is on. The chance is configured per villager level with `librarians.rareBookBiasChancePercentByLevel`.

The list has five comma-separated percentages in level order:

“`text
level 1, level 2, level 3, level 4, level 5
“`

The default is:

“`text
0,0,25,50,75
“`

That means level 1 and 2 librarians keep vanilla book generation, level 3 has a 25% chance to use a configured rare enchantment, level 4 has a 50% chance, and level 5 has a 75% chance.

Duplicate prevention is controlled separately with `librarians.rareDuplicatePreventionEnabled`. When rare-book bias is on, duplicate prevention avoids choosing a configured rare enchantment that already exists nearby when another configured rare enchantment is available. When rare-book bias is off, duplicate prevention can still replace a newly generated configured rare book if that same rare enchantment already exists nearby.

Config options:

– `librarians.enabled`: enables the module.
– `librarians.rareBookBiasEnabled`: enables the level-based chance to replace book trades with configured rare enchantments.
– `librarians.rareBookBiasChancePercentByLevel`: five comma-separated percentages for levels 1 through 5.
– `librarians.rareDuplicatePreventionEnabled`: avoids nearby duplicate rare books when possible.
– `librarians.duplicateSearchRadius`: radius used to inspect nearby librarians.
– `librarians.rareEnchantments`: comma-separated enchantment ids that count as rare.

### Village Welfare

Village welfare can reward players for maintaining villages and penalize players near poor villages. It works as a periodic server-side scan around each player while `welfare.enabled` is on.

For each player, the mod checks a box around the player using `welfare.scanRadius`. A village only counts as maintained when all of these are true:

– At least one living villager is nearby.
– The area contains at least `welfare.minBeds` beds.
– Counted beds have at least `welfare.minSafeLight` local brightness.
– The area contains at least `welfare.minJobSites` workstation blocks.

If the scan passes and rewards are enabled, every nearby villager receives `welfare.rewardReputation` minor positive gossip for that player. This is vanilla villager reputation data, so it can improve nearby trade prices over time. The reward can only happen once per player per `welfare.rewardCooldownTicks`.

If the scan fails, penalties are enabled, and there is at least one nearby villager, every nearby villager receives `welfare.penaltyReputation` minor negative gossip for that player. This can make nearby trades worse. The penalty can only happen once per player per `welfare.penaltyCooldownTicks`.

The scan interval is based on the reward cooldown and runs no faster than once per second. Reward and penalty cooldowns are tracked separately, so a player can be rewarded for a maintained village and later penalized if the same area no longer meets the requirements.

Config options:

– `welfare.enabled`: enables welfare scans.
– `welfare.scanRadius`: radius around each player to inspect.
– `welfare.minBeds`: required safe beds.
– `welfare.minJobSites`: required workstation blocks.
– `welfare.minSafeLight`: minimum light level for counted beds.
– `welfare.rewardEnabled`: enables positive gossip rewards.
– `welfare.rewardReputation`: amount of minor positive gossip added.
– `welfare.rewardCooldownTicks`: per-player reward cooldown.
– `welfare.penaltyEnabled`: enables poor-welfare penalties.
– `welfare.penaltyReputation`: amount of minor negative gossip added.
– `welfare.penaltyCooldownTicks`: per-player penalty cooldown.

## Commands

All commands require admin permission level.

“`
/villagerrebalance help
/villagerrebalance reload
“`

## Configuration

The config file is generated at:

“`text
config/villager-rebalance.json
“`

The file is loaded on server start and saved after command changes. Use `/villagerrebalance reload` to reload the file at runtime.

## Requirements

– Fabric API