跳到正文

CustomNPCs Unofficial from BetaZavr

作者:BetaZavr

CustomNPCs 是一款 Minecraft 模组,可用于制作 RPG 类型的地图。它提供了丰富的工具,让你创建 NPC 及其能力、自定义方块和物品、任务以及其他游戏内容。

收藏

截图

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

这是由 CustomNPCs 模组的非官方移植版,原作者为 Noppes 或 Goodbird。
本模组存在错误,你可以在 Discord 上向我反馈。
(模组的最新版本可在 Discord 服务器上找到)
我们也会考虑将你的创意加入游戏。
已获得 CustomNPCs 原作者许可发布。

本模组依赖于 mixins

。与 Noppes 或 Goodbird 制作的原版 CustomNPCs 模组相比的差异:

以下所有内容目前仅适用于 1.12.2 版本。游戏 1.20.1 版本目前仅包含其中一部分机制!
注意——这很重要:

对于模组用户:
与原版模组不同,我专门添加了用户协议。当你尝试连接到新的游戏服务器,或首次登录安装了本模组的地图时,会收到该协议。
这是因为本模组支持脚本功能,恶意用户可能会利用这一点。请仅下载你信任的地图,或连接到你信任的服务器!
如果不接受该协议,即使是之前创建的地图,你也无法启动游戏。

对于服务器所有者和地图制作者:
请谨慎选择编写脚本代码的程序员。本模组支持用多种语言编写脚本,其 API 允许处理事件、数据包和玩家游戏数据,包括客户端数据。
其中一些脚本语言允许操作服务器文件。技术水平高超的程序员甚至可以访问任何数据。

请注意,我不对本模组用户的行为负责!

 

模组代码:

  1. 模组配置控制了大部分新增和旧有机制;
  2. 部分机制标记为 WIP(开发中)——此类机制可能已禁用,或无法正常运行;
  3. 新增玩家同意界面:尝试连接服务器或进入地图时,可选择是否使用此模组。
  4. Availabitily 已在各处更正为 Availability;
  5. 修正了部分本地化键的名称;
  6. 可用性类 Availability 的条件已更正:
    – 新增检查玩家名称的设置;
    – 新增检查玩家生命值的设置;
    – 新增检查自定义区域的设置;
    – 新增检查玩家脚本数据 StoredData 的设置;
    – 新增检查虚拟货币的设置;
    – 新增检查玩家物品栏中是否存在指定物品的设置;
    – 改进了时间检查设置,现在可以指定具体时间;
  7. 改进了 TranslateUtil (文本翻译类):
    – 更改了文本翻译方法。现在可以指定语言代码;
    – 终于新增了为玩家播放声音的方法;
  8. (1.20.1)已预先将 NPC EntityEnderFX 粒子恢复到模型中;
  9. 已恢复渲染器 BlockMailboxRenderer (信件方块)的模型旋转元数据;
  10. 更改了模组配置的加载方式,支持更多数据类型,结构也更加完善;
  11. 新增调试系统 DataDebug ,可用于追踪模组方法造成的微卡顿(会大量占用系统资源);
  12. 所有脚本事件处理方法 EventHooks 均已更改,支持更多自定义调用;
  13. 所有混入的优先级 ID 均设为 499(基础值为 1000);
  14. 大多数负责 Get/Set 的混入已重写为使用反射,以消除模组间可能出现的冲突;
  15. 改进了 CustomNpcsPermissions 权限系统:
    – 现在所有权限默认均被禁止;
    – 可通过 permissions.json 文件进行配置:将玩家名称添加到各项权限中(该文件会在地图目录/文件夹中创建);
  16. 新增权限:
    – EDIT_PERMISSION – 允许更改玩家权限;
    – EDIT_CLIENT_SCRIPT – 允许编辑客户端脚本;
    – GLOBAL_MARKETS – 允许编辑商店;
    – GLOBAL_AUCTIONS – 允许编辑拍卖(WIP);
    – GLOBAL_MAIL – 允许编辑邮件设置;
    – MONEY_MANAGER – 允许查看和更改玩家的虚拟货币;
    – DONAT_MANAGER – 允许查看和更改玩家的捐赠记录;
  17. 现在,方法 **NBTJsonUtil.Convert(CompoundTag compound)** 会按字母顺序对键名排序;
  18. 已重构模组日志记录器 **LogWriter**,不再创建单独的文件;
  19. 新增掉落物系统:
    – 每种物品都可以自定义:
    – 指定数量的最小值和最大值;
    – 指定附魔、属性和标签选项;
    – 自动为指定物品创建设置(适合懒得配置或不懂配置的玩家);
    – 可以根据多个掉落物品创建模板;
  20. 新增区域系统:
    – 支持多边形形状;
    – 新增进入和离开区域事件;
    – 创建了专用物品,让区域编辑更简单;

新增或更改了命令方块命令:

  1. 脚本 CmdScript:
    – /noppes script reload – 重新加载;
    – /noppes script logs -(新增)在聊天栏中显示所有检测到的错误,以及带日志的脚本元素;
    – /noppes script apilist -(新增)在聊天栏中显示脚本可用的所有模组 API;
    – /noppes script clientlist -(新增)在聊天栏中显示所有客户端 Forge 事件的名称;
    – /noppes script forgelist -(新增)在聊天栏中显示所有服务端 Forge 事件的名称;
    – /noppes script list <type> -(新增)在聊天栏中显示指定类型的脚本元素中所有检测到的错误和带日志的脚本元素;
  2. 配置 CmdConfig:
    – /noppes config report -(新增)在聊天栏和控制台中显示名称、运行时间以及模组方法的调用次数(有助于排查卡顿);
    – /noppes config clear -(新增)清除卡顿捕获列表;
  3. (新增)虚拟货币 CmdMoney:
    – /moneynpc – 关于团队的信息;
    – /moneynpc get money/donat <player> – 查询玩家余额;
    – /moneynpc set money/donat <player> <value> – 设置玩家余额;
    – /moneynpc add money/donat <player> <value> – 增加玩家余额(可以使用负数);
    – /moneynpc pay <player> <value> – 向其他玩家转账金币。转账会收取手续费(参见模组配置);
    – 不能向自己转账;
  4. (新增)权限 CmdPermissions:
    – /noppes permissions – 打开权限编辑窗口;

玩家:

  1. 玩家数据变更 PlayerData:
    – 新增通用接口 IPlayerData;
    – 新增任务指南针数据 PlayerCompassData (设置、当前任务等);
  2. 新增游戏数据 PlayerGameData。包含:
    – 虚拟货币/捐赠;
    – 当前按下的鼠标和键盘按键;
    – 要显示的 HUD 元素;
    – 商店中的经验/进度;
    – 方块渲染距离;
    – 是否为服务器管理员;

NPC:

  1. 改进 CombatHandler:
    – AI 会统计所有参与战斗的对象及其造成的伤害;
    – 会考虑与攻击者的距离、手持物品等因素;
  2. 已重做 AI 战斗战术,请在游戏内查看说明;
  3. 属性:
    – 新增 NPC 等级和稀有度。更改设置后会重新计算生命值、伤害、模型大小和经验掉落(可在配置中禁用所有这些功能);
    – 改进 NPC 伤害抗性设置。现在可以指定游戏中存在的任意伤害类型;
  4. ContainerNPCInv 物品栏:
    – 修正 NPC 装备;
    – 新增快速装备功能:对物品Shift + click即可;
  5. AI:
    – 为 **INPCAi** 新增方法;
    – 可以禁用大部分 AI 以减轻性能负担。(包括:战斗战术、角色、工作、脚本等)
    – 新增伤害延迟设置;
  6. 已为掉落物系统重新设计物品栏(功能详情请参阅模组说明)上方代码:
    – 最多可指定 32 件物品或一个模板;

NPC 工作与角色:

  1. 佣兵:
    – 略微改进了 AI;
    – 可使用虚拟货币雇佣;
    – 为玩家物品添加了背包(招募完成后会自动发放给玩家);
  2. 银行家 (完全重制):
    * 为节省系统内存,玩家银行数据现在存储在独立文件中;
    * 银行现在可以公开访问。可指定一名玩家为所有者。所有者可以限制银行访问权限,或指定其他所有者;
    * 银行格子数量不再受限;
    * 可在格子中指定可用槽位的确切数量,包括购买新槽位;
    * 可通过物品交易 + 电子货币购买新槽位;
  3. 传送师:
    * 现在可以为玩家移动设置费用(物品交易 + 电子货币);
    * 新增移动地点的完整自定义选项(维度、位置);
  4. 邮差:
    – 现在可以在 全局 选项卡中设置玩家邮件管理;
    – 超时自动删除邮件;
    – 无法给自己发送邮件;
    – 邮件需要付费(费用取决于邮件的字符数和随附物品数量);
    – 新邮件到达时会在屏幕上显示提示;
  5. 吟游诗人:
    – 工作区域可进行更精确的调整;
    – 关闭范围扩大至 256 格;
    – 修复了原模组中声音触发机制的问题;
    – 1.12.2 及更早版本中声音持续播放的错误源于游戏本身的声音系统,我无法彻底修复;
  6. 守卫:
    – 略微改进了 AI;
  7. 刷怪器 (完全重新设计):
    – 没有可攻击目标时移除召唤出的生物;
    – 控制召唤生物的数量,避免地图过于拥挤(并减轻系统负载);
    – 分别设置存活时和被击杀时的生成效果;
    – 增加了召唤生物的数量;
  8. 区块加载器:
    – 现在会加载自身周围所有 3×3 区块(原模组中为 2×2);
  9. 木偶:
    – 在 1.12.2 中,已替换为自定义动画系统。任何使用标准模型的 NPC 都可使用动画。由于动画种类繁多,动画设置界面非常复杂;
  10. 商人 (完全重制):
    – 商店设有分区并与玩家关联;重新设计了 NPC 商店和图形界面的设置;
    – 增加了更多商店和交易设置。可启用或禁用新的元素;
    – 可将交易设置为仅购买和/或仅出售;
    – 新增了箱子,且只能出售;
    – 商店、商店分区以及每个分区中的交易数量均不再受限;
    – 交易设置:商品可以是指定物品,也可以是装有物品的箱子;
    – 交易设置:货币可以是最多 9 种物品的以物易物、电子货币或捐赠;
    – 可为每笔交易设置可用性;
    – 可通过掉落物系统编辑箱子中的物品;
    – 可更换箱子模型的 OBJ 文件和贴图;
    – 可指定箱子中发放的物品数量;

图形界面:

  1. 游戏菜单中已加入自定义可变背景(可通过配置控制);
  2. Script GUI 可存储几乎任意长度的脚本和日志,且不会丢失数据;
  3. 模组 GUI 中几乎所有按钮、标签和列表都已添加工具提示;
  4. 创造模式下,玩家物品栏中已加入任务日志;
  5. NBT 标签手册 GuiNbtBook (物品):
    – 以更易读的方式显示对象标签;
    – 支持处理左手中的物品;
    – 已加入所编辑对象的所有字段、方法和子类列表;
  6. 附近 NPC 列表 GuiNpcRemoteEditor (NPC 自定义器):
    – 实体列表包含更多信息(与玩家的距离、实体 ID、类名);
    – 已加入实体显示;
    – 已加入选项,可显示服务端加载的所有实体,或仅显示 NPC;
  7. 任务日志 GuiLog已全面重新设计:
    – 现在采用杂志形式,而非窗口形式;
    – 此 GUI 中已加入阵营关系选项卡。默认的 GuiFaction 已移除;
    – 已加入任务罗盘设置选项卡(可通过模组配置控制);
    – 日志现在带有动画(我可能会添加关闭此动画的配置选项);
    – 显示的信息更多了;
  8. 脚本编辑 GUI GuiScriptInterface:
    – GUI 窗口大小已调整,以适应当前游戏窗口;
  9. 身体部位层 NPC 模型设置 GUI GuiCreationParts已重新制作;
    – 已加入模型图层显示设置;
    -(1.12.2)眼睛图层已全面重制,将用于创建表情;
  10. 已修复建造方块的 GuiBlockBuilder 设置:
    – 已加入所选方案的显示;
    – 显示的方案数量不再受限;
  11. NPC 工作 GUI 已重新制作,以适配新设置:
    – 包括设置 GUI 和游戏内 GUI;
    – 增加了更多新元素和说明;
  12. NPC 设置 GUI 已重新制作:
    – 增加了更多新元素和说明;
  13. 已加入便捷的模组配置编辑 GUI(可从所有模组列表菜单中打开);
  14. 对话框已更改:
    – 已加入滚动条;
    – 在 全局 选项卡中可自定义此窗口;
  15. 子 GUI 纹理选择:
    – 已重新设计纹理的查看和选择方式;
    – 已修复游戏中所有图像的搜索(不仅包括已注册的图像,也包括来自资源/模组的可用图像);
    – 纹理现在会显示在此子 GUI 中;
  16. 子 GUI 音效选择:
    – 已重新设计音效的查看和选择方式;
    – 已修复游戏内音效搜索;
    – 播放按钮也可以停止当前播放的音效;
  17. (面向模组作者)主 GUI 类及所有 GUI 元素均已重制为更便于创建 GUI 模组的格式;
  18. 已优化 GUI 元素——文本框 GuiTextArea (更改文本时卡顿更少);
  19. GUI 元素列表 GuiCustomScrollNop 已重新设计:
    – 滚动条采用了纹理(现在更宽);
    – 即使光标不在列表上,滚动条仍会继续移动;
    – 每个条目/行的文本开头已加入前缀,可显示物品、图片或 OBJ 模型;
    – 每个条目/行的文本末尾已加入后缀;

任务:

  1. 任务系统已彻底重新设计(结构、数据存储、行为机制等);
  2. 任务现在有了图标;
  3. 可以在任务描述中添加图片;
  4. 任务日志中新增了用于管理脚本的独立按钮;
  5. 奖励中新增了虚拟货币;
  6. 新增了从所有奖励中自行选择一件物品的功能;
  7. 可以从已加载的 NPC 列表中选择任意 NPC 作为任务完成对象(显示在任务日志中);
  8. 任务目标已更改:
    – 任务不再设有类型(寻找、击杀等),而是为每个目标单独设置类型;
    – 任务目标数量上限从 3 个增加到 9 个;
    – 新增任务完成目标类型(全部、依次完成、至少完成一个);
    – 新增目标类型:合成物品;
  9. 现在可以取消任务。新增了用于遗忘对话和任务的设置;

对话:

  1. 对话回复系统已彻底重新设计:
    – 可以添加图标;
    – 可以通过可访问性条件设置下一段对话的选项;
  2. 对话可以重复显示(显示方式与打字效果时相同);
  3. 可以在对话末尾添加图片;
  4. 玩家与 NPC 对话的 GUI 已更改(见上文 GUI 部分);
  5. 新增更多对话设置;

阵营:

  1. 新增旗帜选择。旗帜可以安装在旗帜和原版盾牌上;
  2. 新增友好阵营选择设置,用于在遭到攻击时进行防御;

自然生成:

  1. 已完善生成机制;
  2. 新增更多自然生成判定设置;

脚本:

  1. 新增接口:
    – IMinecraft – 客户端脚本 API;
    – IRenderSystem – 客户端脚本 API;
    – IClientMouse – 客户端脚本 API;
    – IMethods – 附加方法 API;
  2. 改进的接口:
    – IWorld – 支持客户端操作;
    – IPos – 修复了方向偏移问题;改为使用带小数点的精确数值;
    – INbt – 改进了叶子标签的所有类型及异常处理;
    – IVillager – 配方设置;
    – IPlayer – 新增更多方法;
  3. 新增客户端脚本 ClientScriptData;
    – 此类脚本无法加密。为便于分析,这些脚本也会存储在每个客户端上;
  4. 新增自定义药水脚本处理器 PotionScriptData*
  5. 新增适用于所有 NPC 的通用脚本处理器 NpcScriptData;
  6. 新增常量文件 constant_scripts.json,适用于所有地图脚本;
  7. dump(Object) 方法已改进。现在会返回对象的完整信息:对象/类的所有构造函数、子类、字段和方法名称(包括私有成员);
  8. IData 数据系统已更改:
    – 玩家数据不再与其他实体分开存储。现在通过 Mixin 集成到 Entity 类中;
    – Tempdata 可以获取 INbt 标签形式的数据。仅支持可转换的数据;
    – Storeddata 现在可以存储任何可转换为 INbt 标签并用于存储的数据;
    – “可转换”指所有数字、字符串、可写入 JSON 的对象、列表、映射及其数组。
  9. 新增脚本语言搜索处理(Rhino 、Groovy 、GraalJS 等);
  10. 在自定义 GUI CustomGuiEvent.SlotEvent 的槽位点击事件中新增了鼠标持有物品信息;
  11. 模组中新增了字段名和方法名的反混淆表;
  12. 现在可以加密服务端地图脚本(防止盗用);

 

原始模组 讨论交流的 Discord 服务器

原始模组 脚本编写交流的 Discord 服务器

推荐:俄语 脚本编写交流的 Discord 服务器

常见问题

CustomNPCs Unofficial from BetaZavr 支持哪些 Minecraft 版本?

CustomNPCs Unofficial from BetaZavr 支持 Minecraft Java 版 1.12.2–1.20.1,共 2 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

CustomNPCs Unofficial from BetaZavr 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分