promotional bannermobile promotional banner

VillagerDetails

VillagerDetails fixes annoying villager AI. This Fabric mod adds 30+ toggleable fixes for villagers, entities, and blocks, including infinite trades, bed rebinding, and portal binding. Manage rules via the /ec command or the J GUI.
Back to Files

VillagerDetails 1.1.0 for MC 26.3

File namevillagerdetails-1.1.0-fabric-0.19.3-api-0.162.0-26.3-all.jar
Uploader
AcvvbAcvvb
Uploaded
Nov 1, 2026
Downloads
11
Size
783.5 KB
Mod Loaders
Fabric
File ID
9392809
Type
R
Release
Supported game versions
  • 26.3

Curse Maven Snippet

Fabric

modImplementation "curse.maven:villagerdetails-1771564:9392809"

Learn more about Curse Maven

What's new

VillagerDetails v1.1.0 Changelog

English | 中文


English

🚀 Version Overview

Introduced a network protocol version control package; completely incompatible with older clients (players without the client mod can still join). Config migration is now standardized: older configs are no longer supported, using 1.0.0 as the new baseline. No major framework refactoring planned in the short term.

✨ New Features

🎮 Game Rules

  • Block weak redstone power control rule
  • Disable mob spawning rule
  • Adjustable Happy Ghast flight speed rule; removed "moved too quickly" detection
  • End portal gravity block rule
  • Disable Zombified Piglin spawning from Nether Portals
  • Tao Furnace Assistant
  • Rule toggle logs: adapted for all rules, includes the operator who toggled it, and synced with the client UI

🖥️ Client

  • Villager workstation rendering
  • Client toggle categories; on/off no longer relies on state to determine switch type
  • Riding player detection, sitting on slabs and stairs detection
  • Dynamic Tab completion for commands
  • Refactored furnace hidden items display to view-distance scanning range (configurable)
  • All sliders in the settings UI support mouse wheel adjustment for a smoother experience
  • Keybinding supports "press in sequence" input (up to 3-key combinations); pressing again cancels the input

⚙️ Framework

  • GitHub Actions workflow supports auto-publishing to Modrinth and CurseForge
  • Fail-Fast self-checks at startup for command and config systems: intercepts duplicate registrations, instance conflicts, and naming drift

🐛 Bug Fixes

🔒 Security & Permissions

  • /ec c rule name privilege escalation issue; unauthorized command execution still leaked tab-completions
  • Fixed a vulnerability where dirty selection residues from cross-dimensional portal bindings caused incorrect coordinates to be written; removed the easily false-triggered (0,0,0) coordinate check

📝 Config & Commands

  • /ec c reload false disk-read caused manual config edits to be overwritten, and RuleConfig cache not invalidating caused fake reloads
  • set command lost registrations due to unhandled return values; multiple rules with identical string literals were silently merged
  • Server config duplicate registration causing misjudgment
  • Movement speed too fast pull-back anomaly; Happy Ghast speed changes not taking effect immediately
  • Added value range limits to rule enums; out-of-range values fall back to default; default configs are also saved to disk, and read failures are overwritten with defaults
  • Fixed an issue where failed network packets were incorrectly marked as "requested", causing permanent silent failure of tab-completion or detail page data
  • Fixed an issue where resetting to default config didn't clear deprecated field keys (orphan keys), leaving garbage data in the config file long-term

🌐 Rendering & Translation & Client UI

  • bed selected bed first then wrong block, causing incorrect block name translation to fail on the client
  • Server-side language translation caused color code loss
  • Duplicate cache loading on client startup
  • FurnaceDirtyHighlight highlight didn't follow the camera in Freecam; changed to dynamic chunk-based tracking on the server, also fixing cross-dimension bleed
  • Several Nether Portal binding issues (rewrote binding logic)
  • Fixed button overlapping and text overflow issues in very small windows or high GUI scales (e.g., Scale 6)
  • Fixed an issue where the list scrollbar didn't reset when switching categories, causing blank invisible content after page switch
  • Fixed an issue where conflict warning colors and reset button states didn't refresh in real-time after modifying keybindings
  • Fixed an issue where the detail page value input box was forcibly intercepting arrow keys and Tab, and deleting a list row incorrectly cleared the text being typed
  • Fixed an issue where color input boxes (e.g., #FF4D4D) were abnormally horizontally scrolled by the mouse wheel, causing text to be hidden
  • Fixed the issue where the keybinding button had extra borders in edit mode, and ESC couldn't directly clear the binding
  • Fixed an issue where continuously switching bound keybinding boxes swallowed the first click

🛠️ Build

  • Occasional build failures caused by Java generic check bugs

⚡ Architecture & Performance Optimizations

📂 Directory & Module Refactoring

  • Split server code from main and refactored into a three-tier structure: server / client / main (common area)

📦 Registration System

  • Comprehensive interface standardization + unified registration for server events, network packets, caches, and main class; cleaned up messy registrations and ordering issues
  • Refactored duplicate instance creation in reflection registration; switched to ScanService for class discovery, removed reflection package scanning
  • Abstracted client rendering registration and cache registration; rendering registration no longer handled by the main class
  • Extracted common base class for command registration, unified tab-completion logic; decoupled CCommand, style methods separated into independent classes
  • Unified config class initialization and command initialization; manual registration in two places is no longer needed

🔄 Protocol & Sync

  • Rule syncing changed from "client translation" to fully server-side translation
  • Completely deprecated the concurrency-prone "sequence + version" mechanism, replaced with a global auto-increment ID
  • Fixed a potential HashMap structural corruption or crash when a client disconnects due to Fabric network threads concurrently clearing collections (switched to concurrent containers)

🚀 Performance

  • Language translation performance optimization (reduced object creation) + readability (recursion changed to loops)
  • Removed unnecessary caches and early serialization; fixed redundant disk writes after initial startup disk read
  • Renamed scanRadius to viewRadius, dynamically read server view distance, removed redundant client-side distance filtering
  • Extracted block highlighting, entity-block connection lines, and entity render boxes into utility classes
  • Unified config reloading to "re-read entire physical file"; added static reference cleanup on server stop to prevent memory leaks; cleaned up unused classes/methods/directories/lang keys
  • No longer build a universal JAR; optimized artifact distribution workflow

🎨 Interaction

  • Two rounds of optimization for front-end interaction feel
  • BB selector now automatically clears when a player switches dimensions
  • Introduced ScaledScreen base class; implemented global proportional scaling of the client UI based on GUI Scale 4, perfectly compatible with 1x to 6x GUI scales
  • Improved global mouse wheel event dispatch interception mechanism to prevent accidental penetration when scrolling sliders/input boxes, which caused outer lists to scroll erratically

中文

🚀 版本定位

引入网络协议版本控制包,全面不再兼容旧版本客户端(未安装客户端的玩家仍可进服)。配置迁移也做了规范化:不再支持旧版配置,以 1.0.0 作为新基线,短期内不再重构框架。

✨ 新增功能

🎮 游戏规则类

  • 方块弱充能控制规则
  • 禁用生物生成规则
  • 乐魂可调节飞行速度规则;移除"移动过快"检测
  • 末地门重力方块规则
  • 禁用地狱门刷僵尸猪灵
  • 涛熔炉助手
  • 规则切换日志:适配所有规则,附带切换操作人,客户端 UI 同步适配

🖥️ 客户端

  • 村民工作方块渲染
  • 客户端开关分类,开启/关闭不再依赖状态判断开关类型
  • 骑行玩家、坐板砖和楼梯检测
  • 命令接入 Tab 键动态补全
  • 熔炉藏东西显示重构为视距扫描范围(可配置)
  • 设置界面所有滑条支持鼠标滚轮调节,调节手感更加顺滑
  • 快捷键绑定支持“依次按下”录入(最高支持 3 键组合),且支持再按一次撤销录入

⚙️ 框架

  • GitHub 工作流支持自动发版到 Modrinth 与 CurseForge
  • 命令系统与配置系统的启动期 Fail-Fast 自检:拦截重复注册、实例冲突、命名漂移

🐛 问题修复

🔒 安全与权限

  • /ec c 规则名越权问题;无权限执行命令仍有补全泄露
  • 传送门绑定跨维度脏选区残留导致写入错误坐标的漏洞;移除易误伤的 (0,0,0) 坐标校验

📝 配置与命令

  • /ec c reload 假读盘导致玩家手改配置被覆盖,以及 RuleConfig 缓存未失效造成的假重载
  • set 命令因未接收返回值导致注册丢失;多规则同名字面量被静默合并
  • 服务端配置重复注册造成误判
  • 移动速度过快拉回异常;修改乐魂飞行值未立即生效
  • 规则枚举新增取值范围限制,超范围直接回落默认值;默认配置同样落盘,读取失败即覆写为默认
  • 修复网络包发送失败时被错误标记为“已请求”,导致补全或详情页数据永久静默失效的问题
  • 修复重置默认配置时,未清空废弃字段键(孤儿键),导致配置文件长期残留垃圾数据的问题

🌐 渲染与翻译 & 客户端 UI

  • bed 先选床后选错方块,导致错误方块名在客户端翻译失效
  • 服务端语言翻译导致颜色码丢失
  • 客户端启动重复加载缓存
  • FurnaceDirtyHighlight 在 Freecam(灵魂出窍)下高亮不跟随视角,改为服务端按区块动态追踪,同时解决跨维度串号
  • 地狱门绑定若干问题(重写绑定逻辑)
  • 修复极小窗口/高 GUI Scale(如 Scale 6)下,按钮重叠、文字越界溢出的问题
  • 修复切换分类时,列表滚动条未重置,导致切页后出现内容不可见的空白问题
  • 修复快捷键修改后,冲突警告颜色与重置按钮状态不实时刷新的问题
  • 修复详情页值输入框被强行拦截方向键与 Tab 键,以及删除列表行时错误清空正在输入文本的问题
  • 修复颜色输入框(如 #FF4D4D)被鼠标滚轮异常横向滚动导致文本隐藏的问题
  • 修复快捷键绑定按钮在编辑状态出现多余边框,及 ESC 无法直接清空绑定的逻辑
  • 修复连续切换绑定的快捷键框时,吞掉第一次点击的问题

🛠️ 构建

  • Java 泛型检查 bug 引起的偶发构建失败

⚡ 架构与性能优化

📂 目录/模块重构

  • main 中的 server 代码拆分,重构为 server / client / main(公共区)三层

📦 注册体系

  • 服务端事件、网络包、缓存、主类注册全面接口规范化 + 统一注册,清理混乱注册与顺序问题
  • 反射注册重复创建实例问题重构;改用 ScanService 查找类,移除反射扫包
  • 抽象客户端渲染注册与缓存注册,渲染注册不再由主类接管
  • 命令注册抽取公共基类,补全逻辑统一化;拆解 CCommand,样式方法独立成类
  • 配置类初始化与命令初始化统一,不再需要两处手动登记

🔄 协议与同步

  • 规则同步从"客户端翻译"改为完全由服务端翻译
  • 彻底废弃并发易错的"序号+版本号"机制,替换为全局自增 ID
  • 修复客户端退出时,因 Fabric 网络线程并发清空集合导致 HashMap 结构损坏甚至崩溃的隐患(改用并发容器)

🚀 性能

  • 语言翻译性能优化(减少对象创建)+ 可读性(递归改循环)
  • 移除不必要缓存与过早序列化;修复启动读盘后重复写盘
  • scanRadius 重命名为 viewRadius,动态读取服务端视距,取消客户端冗余距离过滤
  • 抽取方块高亮、实体-方块连线、实体渲染框到工具类
  • 配置重载统一为"按物理文件整份重读",停服补充静态引用清理防内存泄漏;清理未使用的类/方法/目录/语言键
  • 不再构建全量包,优化发包工作流

🎨 交互

  • 前端交互手感两轮优化
  • BB 选择器新增玩家切换维度自动清除
  • 引入 ScaledScreen 基类,以 GUI Scale 4 为基准实现客户端界面的全局等比例缩放,完美兼容 1~6 倍 GUI 缩放
  • 完善全局滚轮事件分发拦截机制,防止滑条/输入框滚动时意外穿透引发外层列表乱滚