
Villager Cycle
A Minecraft Fabric mod that adds a button to refresh villager trades.
- Загрузки
- 30K
- Подписчики
- 16
- Обновлён
- 23 июня 2026 г.
- Лицензия
- MIT
Опубликован 1 декабря 2025 г.
Villager Cycle
A Quality of Life mod for Minecraft Fabric that adds a button to villager trading screens, allowing you to refresh their trades before making any purchases.
Features
- Cycle Trades Button: Customizable button above the villager trading GUI
- Draggable Button Position: Reposition the button via drag screen
- Real-Time Updates: Trade offers refresh instantly without closing the GUI
- Keybind Support: Keyboard and mouse button bindings for all mod functions
- Configurable Cycle Limits: Set limits on how many times trades can be cycled (per villager)
- Wandering Trader Support: Optional feature (operator-controlled on servers)
- Smart Validation: Only works on valid villagers (must have profession, not traded with)
- Server-Side Security: All validation happens server-side
- Anti-Exploit Protection: Clears trade input slots to prevent item duplication
Installation
- Download from Releases
- Place
.jarin your.minecraft/modsfolder - Required: Fabric API (version matched to your MC version)
- Recommended: Cloth Config 20.0.149+ (enhanced config UI, not available for MC 26.x)
- Recommended: ModMenu 16.0.0+ (in-game config access)
- Launch Minecraft with Fabric Loader 0.18.4+
How to Use
- Open a villager's trading interface
- Click the "Cycle Trades" button (or use the keybind)
- The villager's Level 1 trades will regenerate with new offers
Configuration
Config File Location
- Windows:
%appdata%\.minecraft\config\villagercycle.json - macOS:
~/Library/Application Support/minecraft/config/villagercycle.json - Linux:
~/.minecraft/config/villagercycle.json
Options
{
"enableCycleButton": true,
"allowWanderingTraders": false,
"showSuccessMessage": true,
"showWanderingTraderSuccessMessage": true,
"villagerCycleLimit": -1,
"wanderingTraderCycleLimit": 1,
"buttonOffsetX": 6,
"buttonOffsetY": -25,
"buttonWidth": 100,
"buttonHeight": 20
}
| Option | Default | Description |
|---|---|---|
enableCycleButton |
true |
Show/hide the cycle button |
showSuccessMessage |
true |
Show villager cycle success message (client-side) |
showWanderingTraderSuccessMessage |
true |
Show wandering trader success message (client-side) |
allowWanderingTraders |
false |
Enable wandering trader cycling (operator only on servers) |
villagerCycleLimit |
-1 |
Max cycles per villager: -1=unlimited, 0=disabled, 1+=limited (operator only on servers) |
wanderingTraderCycleLimit |
1 |
Max cycles per wandering trader: -1=unlimited, 0=disabled, 1+=limited (operator only on servers) |
buttonOffsetX/Y |
6/-25 |
Button position offset from GUI |
buttonWidth/Height |
100/20 |
Button dimensions (pixels) |
Keybinds
All keybinds are unbound by default. Set them in Options → Controls → Villager Cycle.
Supports both keyboard keys and mouse buttons (e.g., Mouse Button 4/5).
| Keybind | Function |
|---|---|
| Toggle Button Visibility | Show/hide the cycle button |
| Open Button Position Screen | Open drag screen to reposition button |
| Open Config Screen | Open the mod configuration screen |
| Reload Config File | Reload config from disk |
| Cycle Trades | Cycle trades while in merchant screen (keyboard or mouse) |
Singleplayer vs Multiplayer
- Singleplayer: All features available with full control over all settings.
- Multiplayer: Operator permission (level 4) required for:
- Allow Wandering Traders toggle
- Villager Cycle Limit
- Wandering Trader Cycle Limit
Success message toggles are client-side — each player controls their own preference.
Limitations
- Only works on villagers not yet traded with
- Only works on villagers with valid professions (not Nitwits/Unemployed)
- Only refreshes Level 1 trades (experience level 0)
- Items in trade slots are returned to inventory when cycling
Technical Requirements
- Minecraft: 1.21.9, 1.21.10, 1.21.11, 26.1, or 26.2
- Fabric Loader: 0.18.4+
- Java: 21+ (Java 25+ for MC 26.x)
- Fabric API: Required (version matched to your MC version)
- Cloth Config: Optional, recommended (not available for MC 26.x)
- ModMenu: Optional, recommended
License
MIT License — Free to include in modpacks.
Support
Open an issue on GitHub for bugs or suggestions.
Author
Created by Partacus-SPQR
Ченджлог
1.5.0Релиз26.2 · 23 июня 2026 г.
[1.5.0] - 2026-06-23
Added
- Minecraft 26.2 support (unobfuscated builds, Java 25)
Changed
- 26.2 is now the primary build target; multi-version builds now cover 1.21.9, 1.21.10, 1.21.11, 26.1, and 26.2
- Adapted to the 26.2 screen API change via a new
ScreenCompathelper:Minecraft.setScreen()→Minecraft.setScreenAndShow()Minecraft.screenfield →Minecraft.gui.screen()
- Updated dependencies for 26.2: Fabric API 0.153.0+26.2, Mod Menu 20.0.0-beta.4
Fixed
- Cycle-limit sliders (fallback config screen) could not reliably select 0 (Disabled): the slider's far-left mapped to
-1(Unlimited), so setting villager or wandering-trader cycling to disabled silently did nothing — and a "disabled" wandering trader could still be cycled once at the default limit of 1. Sliders now order options as Disabled (0) → 1…N → Unlimited (-1), so every value (especially Disabled) is reliably selectable. The Cloth Config screen was unaffected. - Wandering-trader cycle limit of
0now reports a clear "cycling is disabled by the server" message, matching villager behavior.
Technical
- Server-side networking, merchant accessors, and trade-cycle logic required no changes — they reuse the existing
>=26.1Stonecutter conditionals - Screen API difference centralised in
ScreenCompat(gated on>=26.2) so 1.21.x and 26.1 are unaffected
1.4.0Релиз26.1 · 26 марта 2026 г.
[1.4.0] - 2026-03-25
Added
- Minecraft 26.1 support
- Minecraft 1.21.9 and 1.21.10 support
- Java 25 toolchain support
- Unobfuscated jar handling for MC 26.1 (no mappings required)
- Multi-version builds via Stonecutter (1.21.9, 1.21.10, 1.21.11, 26.1)
Changed
- Migrated from Yarn to Mojang mappings
- Updated Gradle wrapper to 9.4.1
- Updated Fabric Loom to 1.15.5
- Updated Fabric Loader to 0.18.4
- Adapted all source files with Stonecutter conditionals for API changes:
PayloadTypeRegistry.playC2S()→serverboundPlay()(26.1)displayClientMessage()→sendSystemMessage()(26.1)KeyBindingHelper→KeyMappingHelper/KeyBinding→KeyMapping(26.1)GuiGraphics→GuiGraphicsExtractorwith new render methods (26.1)Villagerpackage restructured in 1.21.11+ResourceLocation→Identifier(1.21.11+)- Permission API changes for 1.21.11+
- Cloth Config excluded for 26.1 (no compatible version available yet)
- Fallback config screen used when Cloth Config is unavailable
Technical
- Stonecutter 0.5.1 for multi-version source management
- Single source tree with version conditionals
1.3.0Релиз1.21.11 · 11 декабря 2025 г.
[1.3.0] - 2025-12-11
Added
- Fallback Config Screen: Vanilla config UI when Cloth Config is not installed
- Mouse Button Keybinds: Cycle trades keybind now supports mouse buttons (e.g., Button 4/5)
Changed
- Cloth Config: Now optional (recommended for enhanced config UI)
- ModMenu: Now optional (recommended for in-game config access)
- Updated to Minecraft 1.21.11
- Updated to Fabric Loader 0.18.2
- Updated to Fabric API 0.139.4+1.21.11
- Updated to Gradle 9.2.1 and Loom 1.14
Fixed
- Cycle trades keybind now properly detects key presses while merchant screen is open
1.2.0Релиз1.21.10 · 7 декабря 2025 г.
[1.2.0] - 2025-12-07
Added
- Draggable Button: Reposition the cycle button via drag screen (set keybind to access)
- Villager Cycle Limit: Configurable limit on cycles per villager (operator only, default: unlimited)
- Wandering Trader Cycle Limit: Configurable limit on cycles per trader (operator only, default: 1)
- Show Villager Success Message: Client-side toggle to hide success messages (reduces chat spam)
- Show Wandering Trader Success Message: Client-side toggle to hide trader success messages
- Button Size Sliders: Configurable button width and height in config
- Keybinds: All unbound by default, set in Controls menu:
- Toggle button visibility
- Open button position (drag) screen
- Open config screen
- Reload config file
- Cycle trades (works while merchant screen is open)
Changed
- Success message settings are now client-side (each player controls their own)
- Cycle limits are operator-only settings on multiplayer servers
- All features work in singleplayer with full control
Author's Note
I was thinking to myself that it could be better, so I made it better :D The drag feature is high key a blessing lol.
1.1.0Релиз1.21.10 · 1 декабря 2025 г.
[1.1.0] - 2025-12-01
Added
- Wandering Trader Support: Can now cycle trades for wandering traders (operator level 4 required on servers)
- Visual Config Screen: In-game configuration GUI via Cloth Config API
- Manual Config Support: JSON config file for users who don't want ModMenu
- Anti-Exploit Protection: Items in trade slots are automatically returned to inventory when cycling
- Trade Validation: Prevents cycling wandering traders that have already been traded with
- Enhanced Tooltips: Config screen displays default values and ranges for all settings
- Operator Permissions: Wandering trader setting requires operator level 4 on multiplayer servers
- Config Sync System: Network packets properly sync wandering trader setting between client and server
Fixed
- Wandering Trader Detection: Fixed instanceof check preventing false error messages for regular villagers
- Button Focus: Button no longer stays highlighted after multiple trade cycles
- Config Persistence: Config changes in GUI now properly sync to server in multiplayer
Changed
- Cloth Config: Now a required dependency
- ModMenu: Now optional (only needed for in-game config access)
- Wandering trader cycling disabled by default for security
- Config tooltips show default values in gray text
- Server logs show operator actions when toggling settings
1.0.0Релиз1.21.10 · 1 декабря 2025 г.
[1.0.0] - Initial Release - 2025-12-01
Added
- Cycle Trades button on villager trading GUI
- Real-time trade refresh without closing GUI
- Basic validation (profession check, experience check, trade-used check)
- Server-side security and validation
- Configurable button position and size
- Support for singleplayer and multiplayer
- Clear user feedback messages
Full Changelog: https://github.com/Partacus-SPQR/VillagerCycle/commits/v1.0.0
Комментарии
Загружаем…