
客户端视觉效果
Clientside Visuals 是一个库模组,旨在向玩家显示某些内容,但不向其他玩家显示。
客户端视觉效果
一个轻量级的 Hytale 服务端插件,提供持久化的、针对每个玩家的客户端可视化功能。它最初是一个调试方块高亮器,后来发展成一个双系统处理器,足以被打包并在多个项目中重复使用。
系统
调试可视化
在客户端为任意一组方块位置渲染彩色线框立方体。相邻方块会自动合并为最小数量的轴对齐包围盒(AABB),无论区域大小如何,都能保持较低的数据包体积。视觉效果通过后台定时器持久化——无需每刻更新代码。
假门
发送客户端的 ServerSetBlock 数据包,将指定位置替换为空气,使这些方块在视觉上变得可通过,从而允许玩家穿过。世界状态不会被修改。清除一个假门集合会自动将客户端恢复为真实的方块。
假方块(即将推出——需要旋转支持)
设置
// 每个系统或实体使用一个管理器
private transient final VisualizationManager vizManager = new VisualizationManager("mymod_" + System.identityHashCode(this));
管理器在构造时自动注册,并在服务器关闭时自动清理。
使用说明
这两个系统完全独立——可以单独使用其中一个,也可以同时使用两者。
仅使用假门
// 让一堵墙对某个特定玩家变为可通过
vizManager.addFakeDoors(playerId, "north_gate", getNorthGatePositions());
vizManager.addFakeDoors(playerId, "south_gate", getSouthGatePositions());
// 独立关闭一个门,不影响另一个
vizManager.clear(playerId, "north_gate");
仅使用调试可视化
// 同时可视化一个带有多个命名覆盖层的区域
vizManager.addDebugVisuals(playerId, "interior", getInteriorPositions(), new Vector3f(0.0F, 1.0F, 0.0F));
vizManager.addDebugVisuals(playerId, "boundary", getBoundaryPositions(), new Vector3f(1.0F, 0.0F, 0.0F));
// 清除一个而不影响另一个
vizManager.clear(playerId, "boundary");
使用调试可视化覆盖假门
一个简单的调试模式标志可以在实践中轻松管理此操作:
vizManager.addFakeDoors(playerId, "entrance", doorPositions);
if (debugMode) {
vizManager.addDebugVisuals(playerId, "entrance_debug", doorPositions, new Vector3f(0.0F, 1.0F, 0.0F));
}
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。