Frequently Asked Questions
Common questions about SteadfastVillagers.
General Questions
Can I get my villager back?
Yes. Click the "Unconvert" button in the GUI. A living villager spawns with all its original trades. Only the owner can unconvert.
What happens if I break the block without Silk Touch?
By default, you cannot break a villager block without Silk Touch. The block is indestructible to regular tools. This prevents accidental loss and theft.
To change this, set block.require-silk-touch: false in config.
Do villager blocks cause lag?
No. Villager blocks are dramatically better for performance than living villagers:
- No pathfinding AI calculations
- No entity collision detection
- No goal/brain ticking
- No persistent entity loading
100 villager blocks perform better than 20 actual villagers.
Does this work with Bedrock players?
Yes, with some notes:
- Bedrock players see ArmorStand entities instead of ItemDisplay (Bedrock doesn't render ItemDisplay)
- Requires Floodgate plugin for proper Bedrock detection
- All trading functionality works identically
Trading Questions
Why are my trades locked?
In VANILLA mode, trades lock after a certain number of uses (just like real villagers). To unlock:
- Add a workstation - Place the correct workstation block in the GUI's workstation slot
- Wait for restock - Trades restock every 20 minutes (configurable)
Or switch to lock-mode: INFINITE in config for unlimited trades.
What's the correct workstation for each profession?
| Profession | Workstation |
|---|---|
| Armorer | Blast Furnace |
| Butcher | Smoker |
| Cartographer | Cartography Table |
| Cleric | Brewing Stand |
| Farmer | Composter |
| Fisherman | Barrel |
| Fletcher | Fletching Table |
| Leatherworker | Cauldron |
| Librarian | Lectern |
| Mason | Stonecutter |
| Shepherd | Loom |
| Toolsmith | Smithing Table |
| Weaponsmith | Grindstone |
Can I change which trade is active?
Yes. Open the GUI and click any trade item. The active trade shows an enchantment glow. Only the active trade processes automatically.
Do discounts affect automated trades?
Yes. If the villager had cure discounts when converted, those discounts apply to all automated trades permanently.
Can multiple players use the same villager block?
Yes, if they have permission (GriefPrevention Container trust or no claim protection). Multiple players can open the GUI simultaneously.
However, only one trade processes at a time. Multiple players don't multiply trade speed.
Automation Questions
Do hoppers work?
Yes. Full hopper integration:
- Hopper above -> Items go into input buffer
- Hopper below -> Items extracted from output buffer
- Hopper into side -> Items go into input buffer
What's the trade speed?
By default, one trade executes every 200 ticks (10 seconds). Configure with trades.cooldown-ticks.
In VANILLA mode, trades are also limited by stock (max uses before restock).
Does it work with other automation mods?
If the mod uses hopper mechanics, it should work. Tested compatible:
- Vanilla hoppers and hopper minecarts
- Create mod funnels/chutes
- Most hopper optimization plugins
What does the comparator output mean?
When effects.comparator-output: true:
- 0: No active trade or output full
- 1-14: Proportional to output buffer fill
- 15: Output empty, actively trading
Use this for redstone automation (stopping input when output is full, etc).
Do villager blocks work in unloaded chunks?
No. The chunk must be loaded for trades to process. Options:
- Stay within render distance
- Use chunk loaders (if your server allows)
- Set
activation-range: 0to remove player proximity requirement (still needs loaded chunk)
Discount Questions
How do discounts work?
Vanilla behavior:
- Cure a zombie villager -> ~20% discount per cure (up to 5 cures = ~80%)
- Discount is player-specific
- Discount decays over real-time days
SteadfastVillagers behavior:
- Discount is captured at conversion time
- No decay - discount is permanent
- Transferable - whoever places the block gets the discount
Can I stack Hero of the Village with cure discounts?
Yes. When discount.hero-of-village: true (default), players with Hero of the Village effect get additional discount on top of the captured cure discount.
What's the maximum discount?
Configurable via discount.max-percent. Default is 80% (vanilla maximum from 5 cures).
Economy Questions
Can players sell villager blocks?
Yes. Villager blocks are normal inventory items when picked up with Silk Touch. Players can:
- Trade them to other players
- Sell them in player shops
- List them on auction houses
This creates a villager economy where high-quality villagers (good trades + max discounts) are valuable.
How do I prevent villager farming abuse?
Options:
- Set
min-conversion-level: 5- Only Master villagers can convert - Set
discount.max-percent: 50- Cap the discount benefit - Limit
steadfastvillagers.convertpermission to certain ranks - Use economy plugin integration to charge for conversion
Does this work with Vault/economy plugins?
No direct economy integration, but the item-based nature means:
- Player shops (ShopGUI+, ChestShop, etc.) can sell villager blocks
- Auction plugins work with villager block items
- Trade plugins work normally
Technical Questions
Why does it require a database?
Villager blocks store complex data:
- All trade information (items, prices, enchantments)
- Buffer contents (serialized items)
- XP, discounts, ownership
- Entity UUIDs
This data persists across restarts and must survive server crashes. A database provides:
- Reliable persistence
- Atomic transactions
- Multi-server support (if needed)
- Efficient queries for admin commands
Can I use SQLite instead?
No. MySQL/MariaDB is required. SQLite lacks features needed for reliable operation with concurrent access.
What tables does it create?
With default table-prefix: vb_:
| Table | Purpose |
|---|---|
vb_blocks | Core block data (location, owner, profession) |
vb_trades | Trade data (ingredients, results, uses) |
vb_buffers | Serialized input/output buffer contents |
How do I migrate between servers?
- Export blocks:
/svadmin export <id>for each block - Copy the
exports/folder - Database can be migrated directly if using same schema
Note: Block locations are world-specific. You may need to adjust coordinates.
Is there an API for developers?
See API Documentation for integration details.
Troubleshooting
Display entity missing
Run /svadmin repair while looking at the block.
"Database connection failed"
- Verify MySQL is running:
systemctl status mysql - Test connection:
mysql -u minecraft -p steadfastvillagers - Check config credentials match
Block exists but doesn't appear
The block may have corrupted data. Try:
/svadmin inspect <id>- Check if data loads/svadmin repair <id>- Respawn display/svadmin repair-corrupted- Find and remove corrupted entries
Trades not restocking
- Verify
lock-mode: VANILLAin config - Check workstation is placed in GUI
- Verify workstation matches profession
- Wait for restock interval (default 20 minutes)
Performance issues
Villager blocks should be very lightweight. If experiencing issues:
- Check
activation-range- Lower values reduce checks - Increase
cooldown-ticks- Slower trade processing - Check database performance - Slow queries affect all operations
- Use
/svadmin statsto see total block count
Feature Requests
Can you add [feature]?
Open an issue on GitHub with:
- What you want
- Why it would be useful
- How it should work
We prioritize features that benefit the most server types without adding complexity.
Will you support Folia?
Folia support is planned. The platform-folia module exists but needs Java version alignment work.
Will you support Fabric/Forge?
Not currently planned. The plugin is designed for Paper/Spigot server environments.