VillagerDetails 1.1.0 for MC 26.3
Curse Maven Snippet
What's new
VillagerDetails v1.1.0 Changelog
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 crule 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 reloadfalse disk-read caused manual config edits to be overwritten, andRuleConfigcache not invalidating caused fake reloadssetcommand 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
bedselected 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
FurnaceDirtyHighlighthighlight 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
servercode frommainand 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
ScanServicefor 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
HashMapstructural 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
scanRadiustoviewRadius, 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
ScaledScreenbase 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 缩放 - 完善全局滚轮事件分发拦截机制,防止滑条/输入框滚动时意外穿透引发外层列表乱滚
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

