1.0
版本列表
- Exp 版本
- Snapshot 版本
1.0 - Exp 1
发布于 26.07.03。
大家周末好!本周隆重介绍我们正在开发的一张新地图——量筒的密室杀手!该地图作为还原 Hypixel 体验的又一部新作品,希望大家喜欢!
先简单介绍一下玩法吧。一共有多张地图,每张地图都有 1 名杀手、1 名侦探和若干名平民。杀手要杀死所有的其他玩家;侦探要杀死杀手以获得胜利。地图内会随机刷新金锭,除侦探外的其他玩家都可以攒 10 个金锭获得一把弓。
以下是更多细节:
核心玩法
- 实现了整套的密室杀手判定系统
- 使用了标记方块,用于便捷地判定地图的重生点和金锭生成点
- 实现了玩家的头颅,使用皮肤即可实现 4 向旋转
- 新增了假玩家,用于进行调试
- 新增了死去的玩家实体,用于模拟 Hypixel 的尸体
- 新增了弓实体,继承自《冒险世界:筑梦》,用于模拟侦探掉落的弓
技术性
- 使用了 TypeScript 实现了密室杀手的系统
- 继承了起床战争的库文件,改进后成为
lib.ts - 游戏使用
MurderMysterySystem系统进行全局调控 - 系统会在世界加载完毕后初始化,并在游戏结束后变为无效系统
- 一个新的系统也会在上一个系统无效化之后初始化
- 系统分为 5 个阶段:清除、加载、等待、游戏、游戏结束
- 但是,目前使用一张特定地图,还没有使用清除或加载阶段
- 每个阶段都会注册
MurderMysteryComponent中的组件,作为功能单位 - 为系统内置了一套玩家管理系统,使用
MurderMysteryPlayer - 通过
data.ts注册地图数据
1.0 - Snapshot 1
发布于 26.07.05。
根据 Exp 1 的测试结果,修复了一些问题。
杀手飞刀
- 现在杀手可以按住鼠标右键飞刀了!
- 飞刀需要蓄力 0.5 秒,射出刀后需要 5 秒的冷却时间
- 杀手飞刀会穿过玻璃板和屏障,穿过玻璃板还会有破碎音效和破碎效果
- 击中其他方块后会消失
- 击中玩家后,则该玩家立刻被淘汰
- 侦探射出去的箭可以和杀手飞刀相碰
神秘药水
- 现在地图图书馆支持神秘药水了!
- 使用 1 个金锭购买,使用炼药锅即可
- 喝下神秘药水会在 4 种药效中的随机一种切换
开发者注:因为本次更新仓促,Hypixel 中的许多有趣特性和细节并未来得及在本版本中实现,在下周的测试中会实现这些功能。
漏洞修复
- 修复了侦探在弓填充期间死亡后依然在信息板中显示填充中的问题
- 现在任何时刻,玩家都不再能与除规定外的方块交互
- 修复了旁观者进入游戏后会出生在错误位置的问题
- 修复了侦探退出游戏后未分配弓的问题
- 修复了杀手退出游戏后会导致报错的问题
技术性
- 为杀手飞刀新建了一个新物品
murder_mystery:iron_sword MurderMysterySettings类:- 在
game设置下新增子设置项thrownKnifeSpeed: number和thrownKnifeCollideArrowDistance: number
- 在
1.0 - Exp 2
发布于 26.07.12。
新的周末!在该版本,我们处理了很多问题,并引入了一张新地图——档案馆!同样地,这张地图还是会先在管理群内部进行内部测试后再公开测试。
新地图
- 新增地图:档案馆
- 档案馆中有岩浆,跳进去就会死亡
金锭生成机制
- 全面更新了金锭生成机制
- 现在地图内存在大量的金锭生成点
- 现在只有距离玩家在 xz 坐标周围 5 格范围内的金锭生成点才会尝试生成
- 最多选中 8 个范围内的金锭生成点
- 对每位玩家,每 16 秒尝试生成一次
- 被选中的金锭生成点中,只有大约 15% 的概率可以实际生成
- 如此可以控制玩家大约每 2 分钟出一个弓,不会导致金锭泛滥
神秘药水
- 现在每局有 5 种不同的神秘药水
- 每一局,不同颜色的药水都对应不同的药效,例如这一局中蓝色药水对应隐身,下一局就可能对应失明
- 在一开始,并不知道神秘药水有什么药效,只有喝下才能从名字看出是什么药效
- 最多同时拥有 3 瓶药水
- 最多同时拥有 1 种药效
- 不能在炼药锅正在酿造时酿造新药水
- 新增了无敌效果,该效果会阻碍所有除掉出地图之外的伤害实施
杀手飞刀
- 现在杀手的飞刀模型会横过来
- 现在杀手的飞刀需要短按右键触发,再次短按右键取消蓄力,以同步 Hypixel
- 修改了杀手飞刀碰到箭的粒子效果
特性更改&漏洞修复
- 修复了一些英语翻译中的标点错误
已知问题:目前神秘药水无法追随当前所使用的版本,可能会在后续解决 - 修复了地图中栅栏门无法交互的问题
- 修复了地图中可能会因存在标记方块而导致无法近战打中标记方块内部玩家的问题
- 修复了因游戏区域未添加常加载区域导致神秘药水未能正确工作的问题
- 现在游戏结束后不再能够拾取金锭
- 现在游戏开始倒计时设置为了 15 秒
- 现在会在游戏剩余 60 秒时通知平民将取得胜利
- 现在侦探会在杀手获得剑的同时获得弓
- 统一了侦探、杀手和平民的弓箭位置,除了杀手的弓在 3 号位外,正常情况的弓都在 2 号位,箭都在 4 号位
- 现在右侧的信息板的剩余平民会同时显示侦探的数量
- 现在会在游戏开始 60 秒后提醒未杀过玩家的杀手杀人
- 现在地图图书馆会尝试恢复 10 扇栅栏门的状态
技术性
- 更新了行为包和资源包的版本
- 更改了注释内的译名“角色”为“身份”
- 拆分出了标记方块
goldblock和spawnpoint为一个简易工具,从该工具中获取坐标数组 - 现在地图不再从地图内的标记方块获得信息,而是从
mapData的描述中获取信息 - 提取出了多个瞬间显示的标题选项
instantTitleDisplay: minecraft.TitleDisplayOptions可用 - 移除了飞刀物品
murder_mystery:iron_sword lib.ts:- 为
ItemMatchOptions接口扩展了typeId: string为includeTypeId: string[],接收字符串数组,只要在数组内的物品就都会检查通过 - 更新了
TickingAreaUtils的remove方法,现在试图移除不存在的常加载区域时不会报错 - 新增了
DimensionUtils的getLocationsFromVolume方法,从BlockVolumeBase中提取出该区域的所有坐标点 - 更新了
BlockUtils的fill方法,现在支持使用特定的方块状态
- 为
MurderMysterySystem类:- 显性移除了
goldPoints和spawnPoints属性,和getMarkPoint方法,现在需要在mapData属性中获取 - 新增
globalGoldSpawnTimes属性,以判断一共尝试了多少次金锭生成
- 显性移除了
MurderMysteryComponents类:- 新增了
playerIntoLava组件,当玩家落入岩浆则视为掉入岩浆死亡 - 新增了
recover组件,用于恢复地图场景 - 重新设计
generateGold组件,使之特性如前文所述 - 重新设计
mysteryPotion组件,使之特性如前文所述 - 重新设计
murdererKnife组件的部分功能,使之特性如前文所述 - 更新了
preventDamage组件,现在在拥有playerIntoLava组件时不再阻碍熔岩伤害
- 新增了
MurderMysterySettings类:- 新增了
goldSpawn属性,及其子设置项spawnRadius: number、spawnChance: number、spawnInterval: number - 新增了
murdererSword属性,及其子设置项knifeSpeed: number、knifeCollideArrowDistance: number、knifeThrowTime: number - 移除了
game的generateGoldInterval属性和goldIntervalMultipliedByPlayerAmount属性,现在迁移到了goldSpawn中
- 新增了
MurderMysteryPlayer类:- 新增了
mysteryPotionUnlocked: [boolean, boolean, boolean, boolean, boolean]属性,代表神秘药水的解锁情况 - 新增了
throwingTime属性,标记杀手飞刀蓄力时长,单位游戏刻 - 移除了
killPlayer方法,该方法的功能与setDead重复且在玩家无敌时难以控制 - 更新了
setDead方法,现在返回布尔值,并且当玩家拥有抗性提升药效时不能杀死该玩家 - 合并了
getDetectiveBow方法和getNormalBow方法为getBow方法,现在所有身份在获得弓箭时都调用此方法
- 新增了
- 数据文件
data.ts- 新增了
playerIntoLava?: MurderMysteryPlayerIntoLavaComponent组件、endPortal?: MurderMysteryEndPortalComponent组件、door?: MurderMysteryDoorComponent组件、recover?: MurderMysteryRecoverComponent[]组件,实装了playerIntoLava和recover组件的功能
- 新增了
1.0 - Snapshot 2
发布于 26.07.13。
旁观抬头传送
- 现在死亡玩家或旁观玩家可以通过抬头传送到仍存活的玩家的位置
- 抬头时会弹出来一个 UI,以传送到对应玩家处
- 同时,还将显示对应玩家的身份
定位指南针
- 现在在游戏剩余 30 秒时,会给予杀手一个指南针,并对所有玩家提醒
- 指南针会提示剩余平民和侦探的位置
开发者注:指南针目前仍然存在一些问题,原定预计为平民指出弓的位置,然而实测发现指南针指向的是世界出生点的位置,而不是玩家重生点的位置。因此,指南针只能用于杀手的定位。后续的版本中,我们会弃用指南针作为定位系统,而改用原版的定位栏解决问题,这需要 26.30 的脚本系统,所以从下个版本起,将全面提高游戏需求版本到 26.30
特性更改&漏洞修复
- 实装了地图档案馆的末地传送门功能
开发者注:地图档案馆中还有一个功能,但不会在该版本中加入 - 现在系统在开启下一张地图之前会先进行常加载区域预加载,防止现场传送加载过慢
- 现在不再默认关闭摔落伤害和火焰伤害了
- 现在英雄只能是平民了
- 现在在开始游戏前,不再试图清除画
开发者注:然而,目前我们仍然没有添加对阻止玩家破坏画的支持,因为基岩版引擎几乎不允许我们这么做。我们后续可能会使用一些绕弯子的方法阻止类似问题的发生,但不会是现在 - 现在熔岩不再能造成任何 Minecraft 层面上的伤害
- 修复了侦探的弓箭冷却完毕后仍然被扣除 10 个金锭的问题
- 修复了死亡的侦探退出游戏后仍然掉落弓的问题
- 修复了已击中方块的箭仍然能阻止飞刀的问题
- 修复了若用飞刀攻击假玩家会导致报错的问题
技术性
lib.ts- 修复了
EntityUtils.isInVolume方法错误计算区域的问题
- 修复了
MurderMysterySystem类:- 更新了
setMap方法为getMapData静态方法,获取一张随机地图的数据,或获取特定地图的数据,现在脱离系统也可以使用该方法
- 更新了
MurderMysterySettings类:- 在
game设置下新增子设置项showRoleInSpectatorTeleportUI: true
- 在
MurderMysteryComponents类:- 新增了
playerIntoEndPortal组件,当玩家落入末地传送门则视为掉入末地传送门死亡
- 新增了
MurderMysteryPlayer类:- 新增了
compassUnlocked属性,确定玩家是否已解锁指南针 - 新增了
getName方法,返回字符串,以获取玩家的名称 - 新增了
getCompass方法,为玩家添加指南针 - 新增了
removeCompass方法,为玩家移除指南针
- 新增了
- 数据文件
data.ts- 实装了
endPortal组件的功能
- 实装了
1.0 - Exp 3
发布于 26.07.18。
暑假快乐!本周快照新增了定位栏功能!这回,躲猫猫玩法可能就不再适用了……啊,剩的人数很多吗?那当我没说 ;)
定位栏
- 升级了指南针为定位栏!
- 现在杀手在剩余 30 秒时会获得一个定位器
- 这个定位器会追踪剩余的所有玩家
- 距离越远,显示的小点就会越小
- 如果追踪的是其他杀手,会显示为红色
- 现在平民在侦探死亡后会获得一个定位器
- 这个定位器会追踪侦探掉落的弓
特性更改&漏洞修复
- 提高了末地传送门的检查频率
- 改进了游戏结束的副标题表述,现在显示的内容会同时随着游戏结束原因和玩家角色发生变化
- #1 在剩余最后 1 名玩家时,杀手将拥有速度 I 效果
- 特别地,如果本局游戏只有 2 名玩家,则不会施加这个效果
- #15 现在多出的玩家成为旁观者后会正确地变为旁观模式
- #17 现在进入末地传送门等出图死亡方式不再能生成尸体
- #18 修复了一处错别字
- #19 修复了两处可能存在的脚本报错
- #21 修复了首任侦探死亡后,继任侦探击杀杀手不显示英雄的问题
- #22 修复了杀手在飞刀蓄力期间切换快捷栏后,蓄力不停止的问题
- #25 新增了一个施加夜视效果的设置,开始游戏后对所有玩家添加夜视
- #27 为神秘药水新增了权重,现在更容易获取缓慢、隐身药水,而更难获取无敌药水
技术性
- 为使用定位栏,提高了游戏的版本需求到 26.30
- 现在
playerWaypoints游戏规则将强制被设定为off - 为
tsconfig.json增加了"noUncheckedIndexedAccess": true,修复了一些可能由调用数组索引导致返回undefined的报错 - 新增了
murder_mystery:locator自定义物品 - 更新了
MurderMysteryGameOverReason枚举,现在其对应的内部的字符串首字母小写,以对应语言文件 MurderMysterySystem- 从
enterGamingStage方法提取出了assignRole方法 - 从
enterGamOverStage方法提取出了gameOverNotice方法 - 新增了
murdererGetSpeed方法
- 从
MurderMysteryComponents- 升级了
compass组件为locator组件,以满足上文要求
- 升级了
MurderMysterySettings- 在
game设置下新增子设置项applyNightVision: boolean,修复了showRoleInSpectatorTeleportUI的类型
- 在
MurderMysteryPlayer- 移除了
compassUnlocked属性,现在不再使用指南针 - 移除了
getCompass方法和removeCompass方法,现在不再使用指南针 - 新增了
getLocator方法和removeLocator方法,以使玩家获取定位器 - 新增了
showLocatorBar方法和hideLocatorBar方法,使不同玩家显示不同的定位栏
- 移除了
lib.ts- 更新了
TickingAreaUtils.add方法,现在会在已存在常加载区域时返回undefined - 尝试修复了
UIUtils可能导致的玩家无响应报错问题
- 更新了
1.0 - Snapshot 3
发布于 26.07.19。
在昨天测试的基础上,我们还新增了一张地图!
新地图
- 新增地图:暗景秋色!
- 这是一张夜晚的地图
- 这张地图还拥有神秘药水的功能,会在下个版本加入
特性更改&漏洞修复
- 修复了仅剩最后 1 人时杀手没有速度的问题
- 现在杀手的速度效果不再显示粒子
- 现在玩家的定位栏不再会留到下一局
- 为了显示清楚,现在弓的定位栏不再显示为一个弓的图标,而是显示为一个天蓝色的圆点
- #31 修复了玩家会饥饿的问题,现在使用和平模式
技术性
data.ts- 新增并实装了
time组件,用于调控一张地图使用的时间
- 新增并实装了
1.0 - Exp 4
发布于 26.07.25。
本周的新功能点不太多,但我们带来了很多很多的新地图!
地图
- 新增了 4 张地图:档案馆顶部、Hypixel 游乐园、复活节游乐园、游轮
- 其中,Hypixel 是一张夜晚地图
- 为地图暗景秋色实装了神秘药水
- 现在地图档案馆可以用金锭来点大门的火
- 开发者注:大门目前暂时还没有办法打开,等到快照 4 时处理此问题
神秘药水
- 现在在喝下神秘药水后,物品栏内的其他同种未解锁药水将获得新的信息
- 例如,在有两瓶同种“???神秘药水???”的情况下,喝下其中一瓶发现是迅捷后,另一瓶会自动更名为“迅捷药水”,并更改其物品备注
- 现在神秘药水的标签“神秘药水 - 1块金锭”支持玩家使用的语言了
特性更改&漏洞修复
- 再次更改了平民的弓的图标,现在使用一个类似于弓的图标
- 现在定位栏图标的阶段随距离发生变化的值为 0-25、25-50、50-75、75- 格远,而不再是 0-25、25-50、50-100、100- 格远了
- 修复了一处英文翻译错误的问题
技术性
- 更新了行为包和资源包的版本为
1.0.4 - 现在神秘药水在底层代码上(包括物品 ID、动画实体的实体属性等)使用的编号不再是从 1-5,而是从 0-4,以降低适配脚本系统的难度
- 在底层代码上修改了神秘药水无敌效果的 ID
invincibility为resistance - 数据文件
data.ts- 升级了
allowInteractingWithBlock组件为interaction组件:- 现在该组件接收一个数组,可包含多种不同的交互类型
- 交互类型可以用
type参数定义,目前包括:none(无特殊功能)、mysteryPotion(触发神秘药水效果)、setBlock(在特定位置放置方块) - 除了
none之外,其他特殊功能只能指定至多一次 - 现在交互组件内置
consume参数,定义本次交互需要消耗多少金锭 - 为交互组件新增了
stillCancelEvent参数,定义本次交互只用于触发事件,而事实上并不与方块进行真正的交互
- 新增了
setBlock组件- 用于在玩家交互后,在特定位置放置方块
- 该组件必须搭配
interaction组件使用,并指定一个setBlock类型的交互
- 更新了
mysteryPotion组件- 移除了
location属性,现在需要在interaction组件内指定一个mysteryPotion类型的交互,并在at内规定方块位置 - 新增了
animationLocation属性,以规定动画的坐标
- 移除了
- 升级了
- 库文件
lib.ts- 更新了
ItemOptions.lore的类型声明,使其能够适配高版本的 ScriptAPI
- 更新了
- 主文件
main.ts- 更新了神秘药水的相关函数:
- 为
MurderMysterySystem新增了神秘药水管理器mysteryPotionManager: MurderMysteryMysteryPotionManager,现在本局中神秘药水的相关属性可在该管理器中读取 - 如果地图数据中没有定义
interaction组件和mysteryPotion,则神秘药水管理器无法读取 - 拆分了
MurderMysteryComponents的mysteryPotion组件,现在该组件将开始调用神秘药水管理器中的功能 - 现在神秘药水的悬浮文本使用 ScriptAPI 的 2.8.0 版本的
TextPrimitive,而不再是一个透明的实体,因此现在支持使用RawMessage直接读取对应的语言文件
- 为
- 新增了放置方块的相关函数
- 为
MurderMysterySystem新增了放置方块管理器setBlockManager: MurderMysterySetBlockManager,现在本局中放置方块的相关属性可在该管理器中读取 - 如果地图数据中没有定义
interaction组件和setBlock,则放置方块管理器无法读取
- 为
- 升级了
preventInteractingWithBlock为interaction组件- 现在会同时处理其他和交互有关的事件,例如神秘药水
- 更新了神秘药水的相关函数:
1.0 - Snapshot 4
发布于 26.07.26。
在昨天测试的基础上,我们大幅度更改了交互的底层逻辑。原则上来讲,交互应该和原来没有什么两样,但如果你发现了异常,请及时告知,感谢!
特性更改&漏洞修复
- 现在地图档案馆可以通过暗道开门了
- 现在地图档案馆顶层可以掉进虚空里了
- 现在地图 Hypixel 游乐园和复活节游乐园可以掉进熔岩里了
- 修复了英文环境下,声明身份时的标题均为红色的问题
技术性
- 将多数脚本文件中的
type声明更改为interface接口声明 - 主文件
main.ts- 将放置方块管理器和神秘药水管理器合并为事件管理器
MurderMysteryEventManager- 和以前的两个管理器不同,事件管理器随时都可以调用,不会返回
undefined - 向事件管理器添加了
events属性,用于调用本局游戏内的全部事件 - 向事件管理器添加了
triggerEvent方法,用于触发游戏事件 - 向事件管理器添加了
openDoor方法,用于开启门
- 和以前的两个管理器不同,事件管理器随时都可以调用,不会返回
- 更新了
interaction组件,现在会自动检查玩家金锭是否足够,相关事件是否成功执行,并调用事件管理器的方法
- 将放置方块管理器和神秘药水管理器合并为事件管理器
- 库文件
lib.ts- 新增了
BlockData接口,代表一个方块的信息,包括其位置、ID 和方块状态信息 - 新增了
BlockFillData接口,代表方块的填充信息,包括其填充位置、ID 和方块状态信息 - 现在
BlockUtils.fill方法接收blockData: BlockFillData参数,而不再接收分立的dimension、from、to、blockId、states?参数 - 现在
BlockUtils.hollow方法接收blockData: BlockFillData参数,而不再接收分立的dimension、from、to、blockId参数 - 现在
PlayerUtils.broadcast方法接收options: MessageOptions参数,而不再接收分立的message参数 - 声明了
InventoryUtils.getAmount和ItemUtils.match方法不允许在受限模式下执行 - 新增了
InventoryUtils.getTypeAmount方法,只用于检查特定 ID 的物品数量
- 新增了
- 数据文件
data.ts- 新增了
MurderMysteryInteractions接口,用于判断玩家的交互逻辑- 可在地图数据下直接调用
interactions属性,和description、components同级 - 由原来的
interactions组件变更而来,移除了MurderMysteryInteractionComponent类型和interactions组件 - 新增了
notifyPlayerWhenGoldNotEnough属性,代表是否在玩家金锭不足时提示玩家 - 新增了
trigger属性,代表触发何种事件
- 可在地图数据下直接调用
- 新增了
MurderMysteryEvents接口,用于代表各种游戏内的事件- 目前支持的事件包括:玩家获取神秘药水
mysteryPotion、放置方块setBlock、开启门openDoor - 更新了
MurderMysteryMysteryPotionComponent类型为MurderMysteryMysteryPotionEvent接口,使其中的animationLocation参数由接收一个坐标数组改为接收一个坐标(不再是数组) - 更新了
MurderMysterySetBlockComponent类型为MurderMysterySetBlockEvent接口,继承自lib.ts的BlockData,并允许在该事件执行后继续执行一个事件 - 移除了
MurderMysteryDoorComponent类型 - 新增了
MurderMysteryOpenDoorEvent接口,用于在触发该事件时开门- 新增了
condition?属性,仅当符合该条件时才能开门,目前该属性内部仅接收一个isBlock?: lib.BlockData[],仅当特定位置为特定方块时才会开门 - 新增了
door属性,代表门的位置 - 新增了
notifyPlayer属性,代表对全体玩家播放的消息
- 新增了
- 目前支持的事件包括:玩家获取神秘药水
- 因此,更新了许多地图的组件形式
- 新增了
1.0 - Exp 5
发布于 26.08.01。
在本周,我们继续对底层架构进行了多处改动,与此同时也几乎完美还原了暗景秋色这张地图!一起来看看本周的更新吧~
地图
- 新增了三张地图:高坠塔、总部、牛脊农场
- 新增了一张地图:档案馆顶层
开发者注:我们发现以前添加的档案馆顶层地图是很久以前的旧版地图,在 Hypixel 中早已废弃。因此,以前的档案馆顶层地图作为 V1 版本使用,并且添加设置之后,默认状态下将不会启用 - 现在地图档案馆顶层中,掉到坑里之后不再显示为掉进了虚空
- 现在地图游轮中,玩家会溺死了
- 完全还原了暗景秋色的所有功能
- 现在地图暗景秋色中,可以与酿造台交互获取神秘药水了
- 还原了暗景秋色的一个陷阱
- 还原了暗景秋色的传送门的功能
特性更改&漏洞修复
- #34 现在非游戏阶段下,玩家不再能与场景交互了
- #36 实装了地图暗景秋色的陷阱
- #38 现在死去的首位侦探和杀手在结算时会以灰色显示名字
- #41 现在对死亡玩家本身播放骷髅死亡的音效
技术性
- 更新了行为包和资源包的版本为
1.0.5 - 新增了一个亡魂实体,在暗景秋色地图的坑中应用
- 新增了一个传送门方块,在暗景秋色地图中应用,该方块相比于原版的传送门没有实际的传送效果,为了简便也没有做音效和粒子
- 这是为了避免原版的传送门方块在接收了方块更新后就会被立刻摧毁
- 主文件
main.ts- 为了文件中大量应用的
data变量不和导入的data混淆,重命名了导入的data为gameData - 为事件管理器新增了
fillBlock方法和setStructure方法
- 为了文件中大量应用的
- 库文件
lib.ts- 重命名
PlayerUtils.sendMessage方法为PlayerUtils.notify方法,MessageOptions接口为NotifyOptions,以更好地表达其意 - 更新了
GameSystem.subscribeDelay方法,现在不再接受结果为boolean的回调函数 - 更新了
StructureUtils.placeAsync方法,现在维度接受Dimension,且为可选参数 - 更新了
BlockUtils.set方法,现在接受blockData: BlockData,而不再是分立的location,blockId,并且新增了对特定方块状态的支持 - 新增了
BroadcastOptions接口,继承自NotifyOptions接口,现在可以用该接口中的playerOptions来决定对哪些玩家公告
- 重命名
- 数据文件
data.ts- 导出了全部的接口
- 移动死亡类型
MurderMysteryDeathType枚举和deathTypeOutOfMap变量到data中,并新增了几个死亡方式 - 组件
- 恢复了
MurderMysteryInteractionComponent接口和interaction组件,现在交互属性不再独立于components外 - 新增了
enableMysteryPotion组件,定义本局启用神秘药水,应用神秘药水的功能,并规定神秘药水的显示内容 - 新增了
playerInArea组件,定义玩家在特定区域时可触发事件 - 新增了
playerHurt组件,定义玩家受到特定类型的伤害后可触发事件 - 新增了
onGameStart组件,定义开始游戏时执行的事件,该组件不含有任何玩家执行 - 移除了
playerIntoLava组件,同时移除了对应的接口声明,请使用playerHurt组件和setPlayerDead事件响应代替之 - 移除了
recover组件,请使用onGameStart组件和place事件响应代替之 - 移除了
playerIntoVoid组件,同时移除了对应的接口声明,请使用playerInArea组件和setPlayerDead事件响应代替之 - 移除了
endPortal组件,同时移除了对应的接口声明,请使用playerInArea组件和setPlayerDead事件响应代替之
- 恢复了
- 事件响应
- 重命名
mysteryPotion事件响应为getMysteryPotion事件响应 - 新增了
setPlayerDead事件响应,直接处死玩家 - 升级了
setBlock事件响应为place,现在可以通过place事件来放置方块、填充方块、放置结构和放置实体- 同时,
place事件响应要求输入放置信息的数组,接受同时进行多处放置操作
- 同时,
- 新增了
condition事件响应,系统会首先判断该条件是否通过,仅当触发该事件时,所有的条件都通过时才能触发事件,否则无法触发事件。- 在
condition下新增了playerBelowHeight条件,仅当事件有触发玩家且玩家低于特定高度时才通过
- 在
- 新增了
broadcast事件响应,事件触发成功后,如何通知全体玩家 - 新增了
notify事件响应,事件触发成功后,如何通知触发事件的玩家 - 新增了
trigger事件响应,事件触发成功后,以触发玩家的名义触发另一个事件,可延迟触发事件 - 新增了
teleport事件响应,传送玩家到指定位置 - 移除了
openDoor事件响应,同时移除了对应的接口声明,请使用condition事件响应、place事件响应和broadcast事件响应代替之 - 移除了原来
setBlock事件响应(现place事件响应)的notifyPlayer参数和trigger参数,请使用notify事件响应和trigger事件响应代替之
- 重命名
1.0 - Snapshot 5
发布于 26.08.02。
在该版本,我们隆重引入设置功能!虽然仍然处于前期版本,但是已经有不少功能可用了哦。
设置
- 引入了全新的设置选项!
- 在游戏开始之前,所有玩家的快捷栏都会获得一个设置物品
- 对所有玩家均可用,但不同玩家看到的选项将有所不同
- 目前仍为早期版本,之后会做更多相关更改,例如
reload保留设置等,同时一些本应禁用的地图也将在保留设置更新后真正禁用
特性更改&漏洞修复
- #32 对定位栏退出重进无法正确运作的问题进行了尝试性修复
开发者注:目前无法保证该修复是有效的,还需要进行验证 - #35 现在当剩余最后一人时,杀手的迅捷效果不再会和神秘药水的效果冲突
- #46 修复了玩家掉进新版档案馆顶层的坑后,“你跑得太远了!”消息会覆盖玩家死亡消息的问题
- #47 修复了一处脚本报错
技术性
- 新增了一个设置物品
murder_mystery:settings - 主文件
main.js- 为事件管理器添加了一个
inPotionEffect属性,可用于记录玩家是否处于神秘药水的效果下 - 为
MurderMysteryPlayer类新增了isShowingLocatorBar属性,标记玩家是否正在展示定位栏 - 将
game设置更名为gaming设置 - 为
MurderMysterySystem新增了系统版本属性version - 为
MurderMysterySystem新增了下一张地图属性nextMap - 为
MurderMysterySettings新增了多个调用 UI 的静态方法 - 为
MurderMysteryComponents新增了settings组件
- 为事件管理器添加了一个
1.0 - Exp 6
发布于 26.08.10。
本周我们带来了大家心心念念的游乐园的完整功能,过山车!芜湖——!!
一起来看看本周的更新吧~
地图
- #37 完全还原了 Hypixel 游乐园和复活节游乐园的功能,现在它们支持进入鬼屋门和使用单轨列车和过山车了
- 略微修改了两张游乐园地图的金点,确保金点不会尝试遍历禁区
- 略微修改了两张游乐园地图的金点,确保不会离岩浆过近
- 现在地图总部可以开启云杉门了
- 新增了运输塔 V1 和运输塔 V2
- 修复了部分地图可能的出图点位,或卡位点位
- 补充了部分地图的画
特性更改&漏洞修复
- 修复了默认会启用所有地图的问题
- #49 现在游戏结束后玩家不再能死亡,导致游戏产生进一步的误判
技术性
- 更新了行为包和资源包的版本为
1.0.6 - 现在
onGameStart事件响应支持触发多个事件 - 新增了
intoHauntedHouseDoor和outOfHauntedHouseDoor事件响应,代表进入和离开鬼屋门;同时,为密室杀手玩家添加了isInHauntedHouseDoor属性,以标记玩家是否进入了鬼屋门 - 剥离
interaction组件中的setText功能到place事件响应去,现在可以通过place事件响应来放置悬浮文本 - 新增了
preventDamage组件,用于防止实体受伤,用于矿车 - 新增了
cooldown事件响应,用于使玩家进入特定事件的冷却状态;同时为condition事件响应新增了cooldownCompleted参数,只有冷却结束后才能通过 - 新增了
rideMinecart事件响应,用于使玩家骑乘矿车
1.0 - Snapshot 6
发布于 26.08.11。
我们在本周还带来了重磅更新——完全实装设置功能!现在你可以在设置中控制地图的运行方式,也可以控制何种地图将会启用,等等。通过设置,这张地图就可以玩出很多花活了!
设置
- 隆重推出剩下的设置项!
- 现在应用设置可以全局保存,无论
/reload还是重开游戏都可以自动应用上次的更改 - 对于管理员,可以随时使用
/give @s murder_mystery:settings获取设置物品,并随时应用设置更改 - 实装了启用地图设置,现在可以控制哪些地图可以生成,哪些地图不能生成
- 这同样也会影响每局之后的随机地图生成,也就是只要禁用一张地图,那么这张地图不能在设置中选中,也不能随机生成,只能启用后才能游玩
- 不能把所有地图全部关闭,会阻止设置应用
- 实装了游戏前设置,现在可以控制一局的最多最少为多少人,并控制游戏倒计时需要多久
- 实装了游戏时设置,可以控制一局的游戏时长,多久后给予侦探或杀手物品,如何拾起弓,是否对旁观玩家显示职业和是否全局启用夜视效果 5 个设置
- 实装了金锭生成设置,控制金锭以何种频率和密度生成
- 实装了杀手刀剑设置,控制杀手飞刀如何运行
- 实装了杂项设置,目前可控制右侧信息栏最底下一行的文本
地图
- 新增了水族馆和寡妇的老窝
漏洞修复
- 现在在尝试加载地图运输塔 V1 和运输塔 V2 时不再会发生系统崩溃的错误
- 现在玩家在矿车上死亡或在矿车上系统重置后,不再会无法跳跃了
- 现在玩家不再能卡着鬼屋门的门边进入鬼屋门了
- 现在玩家的传送 UI 不再能保持到第二局
- 开放了两张游乐园地图的过山车支线
- 修复了复活节游乐园中未充能的铁轨
技术性
- 将
applyVision组件更改为全局组件 - 优化了常加载区域的逻辑,现在只用一个
gamingArea同时进行预载和地图内的常加载区域加载,而不再单独使用nextMapPreLoad进行预载,这可以带来更大的实际常加载区域可指定范围和更高的性能 - 彻底移除了
mysteryPotionPrice设置项 - 现在
mapEnabled设置项是根据地图数据动态加载的,并为地图数据描述添加了一个新的参数enableByDefault,指定地图是否在默认情况下可加载 - 为密室杀手设置新增了
saveSettings和loadSettings两个静态方法 - 为
lib新增了一个JSUtil.isPlainObject方法,以判断一个对象是否为纯对象
1.0 - Exp 7
发布于 26.08.15。
本周的更新修复了上周出现的一些问题,并更新了三张新地图。
地图
- 更新了地图 Widow’s Den 的翻译为 黑寡妇巢穴,和 Hypixel 最新的翻译一致
- 现在若地图未完成适配,会在开始游戏前提示玩家
- 现在所有地图都会默认应用岩浆和溺水效果
- 现在地图游轮允许对活板门进行交互
- 现在地图总部允许对橡木门进行交互
- 实装了地图水族馆的鲨鱼陷阱
- 新增地图港口小镇 V1、阴森庄园 V1、阴森庄园 V2
最低版本需求
- 因为添加了 16 向旋转的头颅,现在提高了游戏最低版本需求为 26.40
杀手飞刀
- #29 为手机版的杀手飞刀添加了一个交互按钮,现在不必长按也能触发杀手飞刀了
设置
- 现在游戏开始后会在玩家的物品栏中新增一个设置物品,以便管理员等玩家可以在游戏内进行设置
- 更改了默认的信息板最后一行黄字为“YZBWDLT”,以确保英语下信息板的字体可以正常显示为 Mojangles
- 现在可以通过设置开启一张随机地图了
漏洞修复
- 修复了多处英语翻译错误或不清的地方
- 修复了系统会在常加载区域加载完毕之前就尝试新建新系统,导致系统无法创建,游戏直接卡死的问题
技术性
- 更新了行为包和资源包的版本为
1.0.13- 这里,更新为
1.0.13是为了把 Exp 版本的资源包和 Snapshot 版本的资源包区分开,防止管理群内测和测试群公测时部分群友需要删缓存重进 - 版本号原则是:Exp 版本:
1.0.(version*2-1);Snapshot 版本:1.0.(version*2),例如 Exp 7 版本为1.0.13,Snapshot 7 则为1.0.14
- 这里,更新为
- 现在使用 Minecraft 世界动态属性
murder_mystery:nextMap来存储下一张待生成的地图信息- 该值可能为 3 种类型:
string | false | undefined - 为
string时,指定为特定类型的地图 - 为
undefined时,指定为随机地图,在该地图初始化时亦可用此值 - 为
false时,不进行检查和系统变换
- 该值可能为 3 种类型:
- 现在在进行系统切换时,会事先检查
murder_mystery:nextMap是否不为false,一旦不为false则会立刻尝试重置系统 - 更名了系统的
alivePlayers为livingPlayers - 移除了
MurderMysteryPlayers和MurderMysteryAlivePlayers类型声明,现在使用更灵活的Record声明系统的players和livingPlayers类型 - 提取了更新日志 UI 的文本内容和关于我们 UI 的文本内容到
data.ts中去,并实现了初步的 Markdown 化 - 移除了系统的
removePlayers()方法中的onlyAlive参数,使用新的removeLivingPlayers()方法代替之
1.0 - Snapshot 7
发布于 26.08.17。Snapshot 7b 版本发布于 26.08.18。
密室杀手中最恐怖的是什么?好吧,除了恐怖的杀手和侦探恐怖的弓法之外,还包括地图中一大堆的史蒂夫头颅!史蒂夫北极熊、史蒂夫人头树等诡异装饰充满了地图!而今天,我们正式实现了这些头颅的替换工作,并全面改进了许多处细节的游玩体验。
一起来看看本周的更新吧,祝你躲过杀手的追击!
1.0 - Snapshot 7b 更新:修复了地图默认被开启为禁止多人的问题,并修复了头颅朝向无法正确显示,部分头颅贴图出错的问题。
自定义头颅
- 隆重推出——地图自定义头颅替换工程!
- 经过我们的管理群团队的几位成员(绿叶、南瓜汁、文雨)没日没夜的努力,我们将原地图中的绝大多数自定义头颅都应用在了基岩版
- 使用自定义方块技术制作的自定义头颅替换了所有的玩家头颅
- 现在你再也不会看到人头树了!
- 备注:因为自定义头颅的工作量极大,我们一共向游戏添加了 340 种头颅,合计在游戏内应用了超过 1000 个头颅,因此目前还存在一些问题,包括贴图错误、头颅替换遗漏等情况,预计会在未来的 1~3 个版本内彻底解决
地图
- 略微扩大了地图高坠塔的范围
- 对多张地图的多处细节都进行了修改和修复
- 新增地图水上度假村
神秘药水
- 更换了 5 种药水的贴图,现在使用更加鲜艳的颜色,可以轻易分辨不同药水了
- 现在神秘药水的迅捷效果结束后,不再会彻底顶掉杀手的迅捷效果
金锭生成
- 现在金锭生成不再只考虑 xz 方向上的距离,并略微增大了金点检查半径
设置
- 现在在玩家死亡后,会直接打开设置页面,并在设置内内置了 传送到 设置项
- 新增了 3 项设置:侦探弓冷却、最大选取金点数、飞刀冷却
漏洞修复
- 现在游戏内可以开启灵动视效(Vibrant Visuals)和光线追踪(Ray Tracing)了
- 修复了存活玩家判断错误而导致的一系列问题
- 修复了矿车可能会被破坏的问题,现在即便被破坏也能迅速恢复
- 修复了按钮在被按下后尝试交互仍然能触发事件的问题
技术性
- 更新了行为包和资源包的版本为
1.0.14 - 将地图中的所有头颅定义全部分离,成为一个单独的包
- 后续我们会将此包发布在 GitHub 的一个分支上
- 为设置新增了开发者设置
- 该设置需要玩家拥有
developer标签,并且玩家是管理员 - 添加了 1 个设置:管理假玩家,该设置可以用于新增或移除一定数量的假玩家
- 该设置需要玩家拥有
- 移除了
preventDamage组件,该组件原本是为画、矿车、盔甲架而准备的,但现在它们在该组件下都无法工作 - 现在从
interaction组件中提取了consume功能,到consumeGold事件响应中去,现在尝试消耗金锭应当在事件中指定 - 优化了
interaction组件的类型声明,理论上这并不会影响原有的组件格式 - 现在
interaction组件接受一个type参数,以判断该交互是正常类型(normal)还是按下按钮类型(button),如果是按下按钮则会交给玩家按下按钮后事件触发事件,而不是玩家与方块交互前事件直接触发 - 为
lib新增了一个BlockMatchData接口声明 - 为
lib新增了一个解析"x y z"形式的位置信息的函数Vector3.parseString()静态方法