Tags
Creators
Details
Licensed ARR
Published 4 months ago
Updated last month
All versions
1.0.0-beta.12
Beta
Villager Retaliation! 1.0.0-beta.124 months ago 207
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Required content
Any compatible version
Any compatible version
Changes
Added
- Added persistent villager profiles with Social Attributes (Knowledge, Guts, Proficiency, Kindness, and Charm), skill data, profession-aware generation, profile/skill sync payloads, client caches, and Profile/Skills pages in the interaction screen.
- Added profile and skill debug commands under
/villagerretaliation profile ...and/villagerretaliation skill .... - Added temporary villager moods and Social Attribute dialogue filters for normal dialogue lines:
mood,moods,min_mood_intensity,requires_high_*, and exactmin_*/max_*score ranges. - Added data-driven quests with
quest_actiondialogue options, start/remind/turn-in/abandon actions, quest progress tracking, target/proof checks, rewards, notifications, active/expiration rules, and quest-triggered tracker or forced-dialogue actions. - Added 21 built-in beta.12 quest content across Dangerous Commissions, Lost Civilization, Old Roads, Village Defense, and Village Supply questlines, with authored dialogue trees, quest-specific loot tables, offer gates, proof items, and balanced reputation/XP rewards.
- Added quest item requirements and turn-in hand-ins, so quests can require extra delivered items in addition to target proof.
- Added Quest Journal and Quest Tracker keybinds, smooth-scrolling quest UI, tracker HUD controls, quest debug tools, target dimensions, hint text, and shader outlines/highlights for quest items.
- Added data-driven dialogue trees for branching villager scenes, including display metadata, narrative metadata, leave options, generic villager actions, shared quest actions, tracker flashes, and forced-dialogue handoffs.
- Added individual trade-slot refresh requests for skill-generated villager trades. Random refreshes mature on the next Minecraft day and can open data-driven ready follow-up/interjection dialogue before the trade menu opens.
- Added high-reputation Special Orders for directly requesting targetable skill-trade definitions, including wait times, cooldowns, extra costs, up to three active requests per villager/player, status dialogue, and ready-order fulfillment.
- Added beta.12 dialogue authoring features:
conditionsblocks on normal dialogue lines and options, linepriority, linecategory, andtext_keymessage indirection. - Added path-aware folderized dialogue loading under
dialogue/<locale>/..., including typedoptions,lines,messages,openings,closings, andpacifyfolders, optionaltypein option files, profession defaults from paths, and namespaced custom profession paths. - Added
/villagerretaliation dialogue explainand/villagerretaliation datapack diagnosticsfor in-game dialogue and datapack debugging. - Added beta.12 Datapack Generator support for the new target, folderized dialogue import/export, versioned wiki snapshots, and the downloadable dialogue folder template.
- Added a player-facing static wiki under
tools/player-wikiwith generated quest walkthroughs, rewards, gifts, reputation, skill trades, watched-container guidance, advancements, search, and command/keybind references. - Added persistent per-villager/per-player last-seen memory with absence-aware opening dialogue placeholders:
{days_since_seen},{day_or_days}, and{days_since_seen_phrase}. - Added persisted village event and village encounter memories so dialogue can react to recent hostile events and prior village visits without rescanning every interaction.
- Added recruitment left-behind follow-up dialogue and biome filters through
recruitment_memory_biome/recruitment_memory_biomes. - Added data-driven watched-container resources and a generated-container allowlist for pack-controllable village chest confrontation behavior.
- A total of ~11.9 Quadrillion Villager DNA combinations!
- Do not talk to Edmundo if you are named LoudLitten
Changed
- Switched the project to the NeoForge-only layout and moved the interaction UI stack onto ToucanLib-backed screens, scrolling, camera behavior, shader chrome, animated dialogue text, and profession-colored panels.
- Built-in dialogue resources now use the beta.12 folderized layout under
dialogue/<locale>/global,groups, andprofessions/<profession>instead of the previous large bundle-style authoring shape. - Built-in normal dialogue lines and family/relationship options now use
conditionswhere practical while keeping the beta.11 helper fields as compatibility inputs. - Normal dialogue selection now applies explicit
prioritytiers before weighted random selection. Existing packs keep the defaultpriority: 0. - The Datapack Generator version selector is now a target selector only. The beta.12 target no longer attempts beta.11-to-beta.12 conversion.
- First-conversation and first-village opening lines now respect persisted seen-memory after world leave/join cycles.
- The default diamond-sword proximity forced-dialogue witness radius was reduced from 8 blocks to 4 blocks.
Fixed
- Fixed Special Order active-request limits so the fourth request shows the limit dialogue immediately and the cap is hard-clamped to three.
- Fixed multiple ready random refreshes so all accepted ready refreshes can fulfill in one pass instead of leaving completed requests behind.
- Fixed vanilla villager trade-preview hand behavior causing nearby players holding trade costs to replace, duplicate, or drop held villager items.
- Fixed inconsistent natural hostile detection paths between villagers and wandering traders by making both use the same shared hostile-mob classification rules.
- Deferred first-load social graph profile warmup across staggered villager ticks, reducing join-time TPS spikes when teleporting into villages that were first loaded after installing the mod.
- Reduced repeated smith-villager repair path recalculations around damaged iron golems, especially when the golem is nearby but not immediately reachable.
- Throttled natural-hostile targeting eligibility checks so stand-ground and nearby-weapon lookups no longer run every tick for every villager.
- Throttled shared dialogue scans, story-discovery scans, and village-event check-ins with lazy memory/status caching so routine conversations no longer repeatedly rescan the same nearby world state.
- Skipped passive combat cleanup work for villagers that have no active armorer, ranged, temporary-weapon, or borrowed-weapon state.
- Reduced the default follower lost distance from 64 blocks to 32 blocks.
- Reduced idle villager tick overhead by staggering persisted-anger restore probes, passive combat-survival checks, and no-op trade-pool checks.
Removed
- Attempted to remove Edmundo
- Removed the Datapack Generator's beta.11-to-beta.12 Convert workflow. Beta.12 is a manual retargeting boundary, not a marker-only migration.
- Removed quest compatibility aliases and advancement-style
criteria/requirementsinference from the quest loader. - Removed Edmundo
- Removed beta.11-only quest/action compatibility shapes from the beta.12 quest surface. The maintained action fields are
type,quest,action,amount,memory_event,loot_table,notification,text,forced_dialogue, andflash_tracker; documented shorthand such asxp,rep,notify, and inline unique action fields still load where the shared action parser lists them. - Removed top-level dialogue metadata aliases from maintained beta.12 dialogue and dialogue-tree authoring.
- No beta.12 runtime JSON fields, triggers, or placeholders are removed solely because of the folderized dialogue layout.
- Edmundo came back
- Removed Edmundo (i think)
Migration Notes For Pack Authors
- Keep existing beta.11 datapacks on
villagerretaliation.pack_version: "1.0.0-beta.11"until you have manually reviewed dialogue, forced dialogue, notifications, quests, and skill trades against the beta.12 wiki. - Do not migrate by only changing
villagerretaliation.pack_versionto1.0.0-beta.12. The marker selects the editor/runtime target; it does not reorganize dialogue files, audit ids, update compatibility fields, or validate new beta.12 behavior. - Prefer new beta.12 dialogue packs under
data/villagerretaliation/dialogue/<locale>/global,groups, orprofessions/<profession>, using typed folders such asoptions,lines,messages,openings,closings, andpacify. - Treat
options,lines,messages,openings,closings, andpacifyas reserved section folder names belowdialogue/<locale>/. - Split old monolithic dialogue files by ownership and purpose. Keep bundle files only when several related entries are easier to maintain together.
- Review intentional overrides carefully: Minecraft resource replacement still happens by exact resource path before Villager Retaliation merges entries, so copying an old built-in monolith can replace more beta.12 content than intended.
- Use
conditionsfor new memory, family, relationship, recruitment, quest, and event-gated dialogue. The older flat helper fields still load in beta.12 but are planned for beta.13 deprecation. - Convert quests to the canonical beta.12 schema before testing:
criteria/requirements, singularprofession, array-formskills,loot,memory, andonceare no longer accepted by the quest loader. - Convert quest and dialogue-tree actions to canonical beta.12 fields before testing: use
type: "quest"plusaction: "start" | "remind" | "turn_in" | "abandon",amountfor numeric rewards,memory_event,loot_table, andforced_dialogue. - Put dialogue narrative metadata under
metadatainstead of top-leveltopic,tags,questline,quest,stage, ornotes. - Use
prioritywhen one matched line should reliably win, and useweightonly to tune random odds inside the same priority tier. - Use
text_keywhen translators should replace message text without copying the full line filters. - For skill-trade packs, use
request.targetable: trueplus request metadata only for trades that should appear as Special Orders. The queued order stores the trade definition id, so later cost/result/config changes affect future fulfillment. - For trade-refresh dialogue overrides, review the
trade_refresh.*message keys and forced-dialogue entries in the beta.12 wiki instead of copying beta.11 dialogue files forward. - See Pack Format Changes, Dialogue JSON, Forced Dialogue JSON, Skill Trades, and Quests for the full pack-facing migration surface.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:2ArcBjmC:mJSGLIrd"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:2ArcBjmC:mJSGLIrd"
}

