{"id":57551,"date":"2026-06-03T07:04:51","date_gmt":"2026-06-03T04:04:51","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/"},"modified":"2026-06-03T07:04:51","modified_gmt":"2026-06-03T04:04:51","slug":"dispenser-vilager-trading","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/","title":{"rendered":"Dispenser Vilager Trading"},"content":{"rendered":"<p># Dispenser Villager Trading<\/p>\n<p>Dispenser Villager Trading is a Paper plugin that allows dispensers to perform villager trades automatically.<br \/>\nWhen a dispenser faces a villager and contains the required ingredients for one of the villager\u2019s trades, it will automatically:<\/p>\n<p>&#8211; Select a valid trade (at random, preserving vanilla dispenser behavior),<br \/>\n&#8211; Pay the cost using items from its inventory,<br \/>\n&#8211; Drop the result behind the dispenser (or insert it into a chest located directly behind it),<br \/>\n&#8211; Update villager experience and trade usage as if a player traded manually.<\/p>\n<p>This plugin also adds a **villager-only pressure plate** that only villagers can activate.<\/p>\n<p>&#8212;<\/p>\n<p>## Features<br \/>\n&#8211; **Dispenser trading**: Dispensers can fulfill any available villager trade \u2014 including two-ingredient trades \u2014 using their own inventory. Villagers gain experience and trades lock\/unlock as normal.<br \/>\n&#8211; **Player Experience**: Players gain experience as if they traded manually when dispensers perform trades. Same as Furnace Experience.<br \/>\n&#8211; **Villager-only pressure plate**: A custom craftable pressure plate (stone pressure plate + emerald) that only villagers can activate.<\/p>\n<p>&#8212;<br \/>\n###  Public API (Event System)<br \/>\nA dedicated **API module** exposes events for other plugins.<\/p>\n<p>The first event is:<\/p>\n<p>#### `DispenserVillagerTradeDepositEvent`<\/p>\n<p>This event fires whenever the plugin attempts to deposit a villager trade result into a chest.<\/p>\n<p>Available methods:<\/p>\n<p>&#8220;`java<br \/>\npublic Inventory getSource();<br \/>\npublic Inventory getDestination();<\/p>\n<p>public ItemStack getItem();<br \/>\npublic void setItem(ItemStack item);<\/p>\n<p>public boolean isCancelled();<br \/>\npublic void setCancelled(boolean cancel);<\/p>\n<p>public HandlerList getHandlers();<br \/>\npublic static HandlerList getHandlerList();<br \/>\n&#8220;`<\/p>\n<p>&#8212;<\/p>\n<p>## Requirements<br \/>\n&#8211; **Paper 1.21.10** (or any Paper build targeting the `1.21.10` API)<br \/>\n&#8211; **Java 21** runtime on the server<\/p>\n<p>&#8212;<\/p>\n<p>## Installation<br \/>\n1. Build the plugin JAR (see below) or download one from the releases page.<br \/>\n2. Place the JAR into your server\u2019s `plugins\/` directory.<br \/>\n3. Start or reload your Paper server.<\/p>\n<p>&#8212;<\/p>\n<p>## Building<br \/>\nThis project uses Gradle. Common tasks:<br \/>\nYou can build only the plugin JAR, copy it to a server, or run a local test server.<br \/>\n&#8211; `.\/gradlew build` \u2014 Builds the plugin JAR under `plugin\/build\/libs\/`.<br \/>\n&#8211; `.\/gradlew copyToServer` \u2014 Builds the JAR and copies it to the server directory specified by `SERVER_LOCATION` in `secrets.properties`.<br \/>\n&#8212;<\/p>\n<p>## Configuration<br \/>\nThe generated `config.yml` provides the following option:<\/p>\n<p>&#8211; **`allowVillagerDispenserInteractions`** (boolean):<br \/>\n  If `false`, dispensers will *not* fire when a villager stands in front of them *unless* a matching trade exists.<br \/>\n  Defaults to `false`.<\/p>\n<p>&#8212;<\/p>\n<p>## Usage Tips<br \/>\n&#8211; Place a dispenser facing a villager, load it with the required trade ingredients, and power it. The plugin selects a valid trade, consumes the payment, and outputs the result behind the dispenser.<br \/>\n&#8211; Craft the villager-only pressure plate (stone pressure plate + emerald) to allow villagers \u2014 and optionally players \u2014 to activate contraptions while preventing other mobs from triggering them.<br \/>\n&#8211; Place a chest directly behind the dispenser to automatically collect traded items.<\/p>\n<p>&#8212;<\/p>\n<p>## Notes<br \/>\nThe plugin is designed specifically for **Paper** and may not function correctly on other server types.<\/p>\n<p>It aims to preserve core vanilla behavior while adding helpful mechanics:<\/p>\n<p>&#8211; Trades are selected randomly, matching vanilla dispenser behavior.<br \/>\n&#8211; Villager experience and trade usage update normally.<br \/>\n&#8211; Result items are dispensed naturally, as if fired by a dispenser.<br \/>\n&#8211; Additional quality-of-life features:<br \/>\n    &#8211; Traded items are dispensed *behind* the dispenser so villagers don\u2019t pick them up.<br \/>\n    &#8211; Chests placed behind the dispenser collect trade outputs automatically.<br \/>\n    &#8211; A villager-only pressure plate allows villager-driven redstone without mob interference.<\/p>\n<p>&#8212;<\/p>\n<p>## Future Plans<br \/>\n&#8211; Selecting a specific trade via redstone signal strength.<br \/>\n&#8211; Moving the villager-only pressure plate to a dedicated plugin. Or adding more pressure plate types.<br \/>\n&#8211; Add more events to the public API for deeper integration.<br \/>\n&#8211; Add barrels support for trade result collection.<br \/>\n&#8211; Add more configuration options to better mimic vanilla behavior.<\/p>\n<p>&#8212;<\/p>\n<p>## Feedback and Contributions<br \/>\nFeedback, issues, and pull requests are welcome!<br \/>\nVisit the GitHub repository: DispenserVillagerTrading<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Minecraft paper plugin to add the ability of Dispensers to trade with Villagers.<\/p>\n","protected":false},"featured_media":57552,"template":"","meta":{"_minecraft_slug":"dispenser-vilager-trading","_minecraft_project_id":"MdOeJEL0","_minecraft_author":"afekaoh","_minecraft_license":"MIT","_minecraft_downloads":54,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"dispenser-vilager-trading.zip","_minecraft_size_bytes":66606,"_minecraft_version_count":5,"_minecraft_updated_at":"2026-05-15T20:57:53.592794Z","_minecraft_date_created":"2025-11-22T10:37:07.573223Z","_minecraft_date_modified":"2025-11-27T13:33:06.791732Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/dispenser-vilager-trading","_minecraft_icon_attachment_id":57552,"_minecraft_imported_at":"2026-06-03T04:04:52+00:00","_minecraft_import_hash":"c67830a2b51b6bf1bca0ebd13239803a","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[844,88,89,126,127,91,123,92],"mod_loader":[132],"minecraft_version":[40],"class_list":["post-57551","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-economy","mod_category-equipment","mod_category-game-mechanics","mod_category-management","mod_category-paper","mod_category-storage","mod_category-technology","mod_category-utility","mod_loader-paper","minecraft_version-1-21-10"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dispenser Vilager Trading - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dispenser Vilager Trading - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A Minecraft paper plugin to add the ability of Dispensers to trade with Villagers.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/\",\"name\":\"Dispenser Vilager Trading - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/dispenser-vilager-trading-icon-552086dd1cd1c5c1c2c794371999fa594dcb1b3e_96.webp\",\"datePublished\":\"2026-06-03T04:04:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/dispenser-vilager-trading-icon-552086dd1cd1c5c1c2c794371999fa594dcb1b3e_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/dispenser-vilager-trading-icon-552086dd1cd1c5c1c2c794371999fa594dcb1b3e_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/dispenser-vilager-trading\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dispenser Vilager Trading\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dispenser Vilager Trading - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/","og_locale":"en_US","og_type":"article","og_title":"Dispenser Vilager Trading - Minecraft","og_description":"A Minecraft paper plugin to add the ability of Dispensers to trade with Villagers.","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/","name":"Dispenser Vilager Trading - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/dispenser-vilager-trading-icon-552086dd1cd1c5c1c2c794371999fa594dcb1b3e_96.webp","datePublished":"2026-06-03T04:04:51+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/dispenser-vilager-trading-icon-552086dd1cd1c5c1c2c794371999fa594dcb1b3e_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/dispenser-vilager-trading-icon-552086dd1cd1c5c1c2c794371999fa594dcb1b3e_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/dispenser-vilager-trading\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Dispenser Vilager Trading"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/57551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/57552"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=57551"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=57551"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=57551"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=57551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}