1.1
提示
为保证和原始更新日志一致,日志文本无须遵守格式规范,且不作相关调整。
版本列表
- Alpha 版本
公告列表
Alpha 1.1_01
发布于 25.03.07 。
周末快乐!本周的周末我们将开启两个资源的测试:第一个是《冒险世界:筑梦》的 v0.45 版本,而第二个则是《起床战争》的 Alpha 1.1_01 版本的测试!
在这次的更新中,我们加入了一大堆更新内容,并修复了一大堆的漏洞!比如……设置界面、自主选队、击杀样式,以及其他各种大大小小的更改。来看看这次的更新吧,祝你偷床顺利!>:)
地图
- 新增 1 张 4 队地图:伊斯特伍德(Eastwood)。
- 新增 3 张 8 队地图:瀑布(Waterfall)、乐园(Playground)、灯塔(Lighthouse)。
- 现在所有的地图都有特定的最低建造高度上限。
- 现在所有的地图都有特定的治愈池范围。
- 现在地图 屋顶 的最低建造高度上限由 55 提升到了 62。
- 现在默认的加载时长由 5 秒调整为了 15 秒。特殊地,屋顶的加载时长延长到了 30 秒。
- 现在所有的单挑模式的地图的铁锭、金锭生成速度都是 4 队模式或 2 队模式生成速度的 60 %。您可以见下表以查看我们所作出的更改。
| 1.0 版本 | Alpha 1.1_01 版本 | |
|---|---|---|
| 4 队模式和 2 队模式的铁生成间隔 | 6 游戏刻 | 6 游戏刻 |
| 单挑模式的铁生成间隔 | 20 游戏刻 | 6 / 0.6 = 10 游戏刻 |
| 4 队模式和 2 队模式的金生成间隔 | 75 游戏刻 | 75 游戏刻 |
| 单挑模式的金生成间隔 | 120 游戏刻 | 75 / 0.6 = 125 游戏刻 |
- 现在所有的单挑模式每次都生成 3 个铁而非 1 个。
设置
- 隆重介绍:新的设置菜单!
- 以前的
/scriptevent命令被全部移除,转而使用设置菜单代替。 - 新增了一个物品:设置。
- 右键使用设置物品调出设置菜单。
- 在开始游戏前,创造模式的玩家能够默认获得此物品。
- 现在设置能够在设置完成后自动备份数据,能够在
/reload、重启地图、重启服务器前恢复以前设置的数据。即:现在设置不再会因前述原因而重置。 - 设置菜单分为 7 个子项,完全继承以前的设置命令功能。下文中,【设置项】为命令系统原有的设置。
- 游戏前设置:控制游戏前的运行逻辑,例如地图重置、等待时。
- #29 地图重置设置:
- 地图清除速度(设定地图清除的速度)
- 地图加载速度(设定地图加载的速度)
- 等待设置:
- 【玩家人数下限】
- 玩家人数上限(设定一局最多能有多少玩家加入到游戏,余下的玩家将被随机设置为旁观者)
- 【开始游戏的等待时间】
- 组队设置
- 组队模式 (暂未实装)
- 开始前组队 (暂未实装)
- 玩家自主选队(允许玩家在开始游戏前自主选择其所归属的队伍)
- #29 地图重置设置:
- 游戏内设置:控制资源生成、复活时间等。
- 【资源上限设置】
- 【铁生成上限】
- 【金生成上限】
- 【钻石生成上限】
- 【绿宝石生成上限】
- 资源生成间隔设置:(是的,现在你可以调整资源生成间隔了!)
- 铁生成间隔(平均每个铁生成的时长)
- 金生成间隔(平均每个金生成的时长)
- 钻石生成间隔(平均每个钻石生成的时长)
- 绿宝石生成间隔(平均每个绿宝石生成的时长)
- 单挑模式生成倍率(在单挑模式下,资源生成的速度是 4 队模式的多少倍)
- 【重生时间设置】
- 【普通玩家重生时长】
- 【重进玩家重生时长】
- 击杀样式设置:
- 启用击杀样式(是否允许玩家使用其他击杀样式)
- 随机击杀样式(每局为每个玩家随机分配击杀样式,而不是令他们自己选择)
- 无效队伍设置
- 无效队伍检测(是否在游戏开始后检测无效队伍)
- 【无效队伍能否生成资源】
- 无效队伍能否生成商人 (暂未实装)
- 【资源上限设置】
- 【地图启用设置】:控制何种地图能够生成。
- 【启用经典 2 队模式地图】
- 【启用经典 4 队模式地图】
- 【启用经典 8 队模式地图】
- 【启用夺点 2 队模式地图】(拆分出来单独的模式)
- 【生成地图】:立即生成地图。
- 杂项设置:
- 【破坏原版方块】
- 虚空扔物品(掉入虚空的玩家是否能够扔出物品)
- #22 关于:制作人和关于我们的页面。
- 开发者设置:开发人员可用的设置项。正式版本发布后,将移除此设置。
- 游戏前设置:控制游戏前的运行逻辑,例如地图重置、等待时。
击杀样式
- 隆重介绍:10 种全新的击杀样式!
- 其中,9 种来自于 Hypixel 原版。
- 另一种则是我们整的活!>:)
- 你可以在开始游戏前进行设置。
- 如果地图设置启用,每个玩家都将获得一个设置物品。
- 现在铁傀儡、蠹虫的击杀也算作击杀数,并且拥有专门的击杀信息。
自主选队
- 隆重介绍:自主选队!
- 如果地图设置启用,每个玩家都可以获得一个设置物品,玩家将可以在开始前自主选择自己要加入的队伍!
- 这个设置默认是关闭的,以和 Hypixel 匹配。
- 如果需要的话,你可以联系房主,让 ta 开启这个设置。
- 自主选队时,也只允许一个队伍比另一个队伍最多多出 1 名玩家。
- 因此,类似于3 3 3 1的队伍分布也是不允许的。
- 界面将会显示都有哪些玩家选择了对应的队伍。
- 当其他玩家选择了队伍后,其他正在选队的玩家的界面将会刷新。
其他更改
- 更改了游戏开始前的等待信息板。
- 人数信息现在显示为 当前人数/上限人数 ;
- 在等待更多玩家进入时,“等待中...”的后面现在会显示还需要多少玩家进入;
- 现在会显示版本了。
- #12 #30 现在玩家不再能在资源点、商人或队伍出生点附近放置方块。
- #15 现在其他队伍的玩家不再能开启其他队伍的箱子,除非该队伍已被淘汰。
- #21 现在弓击中敌方后会提示敌方剩余的血量。
- #32 优化了对英语的支持。感谢 @Fanconma !
- 提高了本模组的最低版本需求到 1.21.50。
漏洞修复
- #19 修复了灰队的铁傀儡无法辨认剩余时长的问题。
- #23 修复了地毯可能会被冲掉并使玩家获得地毯的问题。
- #24 修复了末影珍珠的出界检测会包括顶面的问题,这个问题可能导致向上扔的末影珍珠被吞掉。
- #25 修复了在弓击中同队玩家时会多次响起音效的问题。
- 修复了在最高处或最低处平搭依然会阻止搭路的问题。
- 修复了启用创造模式玩家可破坏方块的设置后,生存模式的玩家也能破坏方块的问题。
底层更新
- 更新了行为包的
manifest.json的版本号到1.0.20。 - 更新了资源包的
manifest.json的版本号到1.2.7。 - 更新了行为包的脚本版本到
@minecraft/server@1.15.0和@minecraft/server-ui@1.3.0。 - 现在破坏无效的床也不再会报错了。
- 更名
events/classic/playerBreakBlockTest.js→events/classic/breakBlock.js。 - 更名
events/classic/equipmentTest.js→events/classic/equipment.js。 - 更名
events/classic/heightLimit.js→events/classic/playerUseBlock.js,并新增了两个函数:playerOpenChest(event) {}:玩家尝试开其他未淘汰的队伍的箱子时,阻止之;safeAreaLimit(event) {}:玩家尝试在安全区(例如队伍岛屿的重生点、资源点)放置方块时,阻止之。
- 更名
events/classic/itemLock.js→events/classic/items.js,并新增了一个函数removeInvalidItems() {}以清除额外的物品。 - 新增 在
methods/itemManager.js中新增了getValidItems(entity) {}方法。 - 在
events/classic/trading.js中移除了有关capture的内容,现在是按照地图设置自动处理的一般情况。 - 新增 在
methods/positionManager.js的positionManager对象中新增了多个方法:isEqual(pos1,pos2) {}:判断两个坐标是否一致;hasPosition(positions, testPos) {}:判断一个坐标数组里是否存在一个坐标;distance(pos1,pos2) {}:判断两个坐标之间的距离。
- 移除 在
methods/number.js中的objectInArray(array, object) {}方法。现在用positionManager.hasPosition(positions, testPos) {}代替。 - 新增 在
methods/number.js中新增了countSameNumbers(array, x) {}方法,以判断一个数组有多少组x个相同的数字。
BedwarsPlayer类,methods/bedwarsPlayer.js的方法
- 新增 类型声明
killStyle。 - 新增 全局变量
availableKillStyles。 - 新增 属性
killStyle,用于控制玩家的击杀样式。 - 更改 重命名属性
runtimeId→gameId,以和BedwarsMap类一致。
BedwarsMap类,methods/bedwarsMap.js的方法
- 新增 类型声明
islandInfo、teamIslandColorInfo、traderInfo、spawnerInfo。 - 更改 为
loadInfo属性作出如下更改:- 新增
loadInfo.loadStage,当前所处的加载阶段。 - 新增
loadInfo.mapClear对象,清除地图的方法和变量,其中包括currentLayer、timeCostPerLayer、clear()、countdown。 - 新增
loadInfo.mapReload对象,加载地图的方法和变量,其中包括islands、totalTime、countdown、loadStructure()、loadBorder()。 - 新增
loadInfo.teamIslandColor对象,设置队伍岛屿的羊毛颜色,其中包括isEnabled、countdown、colors、load()。 - 移除
loadInfo.clearingLayer,现在用loadInfo.mapClear.currentLayer代替。 - 移除
loadInfo.clearTimePerLayer,现在用loadInfo.mapClear.timeCostPerLayer代替。 - 移除
loadInfo.structureLoadTime,现在用loadInfo.mapReload.countdown代替。 - 移除
loadInfo.setTeamIslandTime,现在用loadInfo.teamIslandColor.countdown代替。
- 新增
- 新增
mapSize属性,表示当前及上一张地图的地图大小。 - 新增
version属性,表示地图版本。 - 更改 拆分了
methods/bedwarsMap.js的方法和函数:- 这样做是为了便于控制结构加载的时间。
- 移动了
createMap(mapName)()函数到脚本maps/(teamCount)Teams/(mapName).js中存储数据。 - 移动了
regenerateMap()函数到脚本maps/mapGenerator.js中。 - 移除了命令函数
maps/(map_name)/generate.mcfunction和maps/(map_name)/team_island.mcfunction。- 现在相关数据分别记录在
loadInfo.mapReload.islands和loadInfo.teamIslandColor.colors
- 现在相关数据分别记录在
- 更改 现在构建器由
constructor(id,name,options={})改为了constructor(id,name,islands,teamIslandColor)。如果需要更改地图设置,请直接在构建后更改。 - 更改 方法
addTeam(team) {}→addTeams(...teams) {},现在允许直接传入多个参数,并移除了无效的名称检查。 - 更改 方法
addTrader(pos,direction,type) {}→addTrader(...traders) {},现在允许直接传入多个参数。 - 更改 方法
addSpawner(resourceType,pos) {}→addSpawners(...spawners) {},现在允许直接传入多个参数,并且现在每个生成点信息所传入的坐标pos需传入钻石点或绿宝石点中钻石块或绿宝石块的位置,而不再是其上方 2 格。 - 更改 为
mapGenerator.js将validMapsFor2Teams等变量改为一个validMaps对象,并新增了一个方法getValidMaps() {}以确定当前设置下有效的地图ID。 - 移除
spawnerInfo属性下的:spawnerInfo.ironInterval;spawnerInfo.goldInterval;spawnerInfo.diamondInterval;spawnerInfo.emeraldInterval;
BedwarsTeam类
- 新增 类型声明
validTeams、teamInfo。 - 更改 重命名属性
bedInfo.direction→bedInfo.rotation,并且更改了其类型,由Number改为StructureRotation。 - 更改 现在构建器由
constructor(id,bedPos,bedDirection,resourceSpawnerPos,spawnpointPos)改为了constructor(id,teamInfo),并且teamInfo中支持输入chestPos。 - 移除 变量
validTeams。 - 移除 移除属性
chestInfo,以chestPos: number代替。
methods/scoreboardManager.js
- 是用于控制记分板的方法。
tryAddScoreboard(id,displayName) {}:尝试创建一个记分板,并获取该记分板的数据。如果记分板已存在,则直接返回其数据。getScoreboard(id) {}:获取记分板数据。removeScoreboard(id) {}:尝试移除一个记分板,并返回是否成功执行。displayScoreboard(display,id,order) {}:尝试在特定位置显示记分板,并返回上一个在该位置显示的记分板数据。tryAddAndDisplayScoreboard(id,displayName,display,order) {}:尝试创建记分板并直接在特定位置显示,返回创建的记分板和上一个在同样位置显示的记分板。eachScoreboard(func,condition) {}:令所有记分板执行一个函数。removeAllScoreboards(condition) {}:移除所有记分板。addScore(objective,participant,score) {}:添加分数。setScore(objective,participant,score) {}:设置分数并返回这个值。getScore(objective,participant,defaultValue) {}:获取分数。如果无法获取分数,则设置为默认值并返回这个值。resetScore(objective,participant) {}:移除分数。getObjectiveFromParticipant(participantName) {}:获取被追踪对象的全部记分项数据。getScores(objective) {}:获取在特定记分板下的所有分值。getParticipantWithScore(objective,score) {}:获取在特定记分板下拥有特定分值的被追踪对象。getQuitPlayers(objective) {}:获取「玩家下线」的追踪对象。
methods/uiManager.js
- 用于控制 UI 的方法。
- 新增 类型声明
actionUiButtonInfo、modalUiButtonInfo createActionUi(buttonInfo,bodyText,titleText) {}:创建一个ActionForm的 UI。createMessageUi(button1Text,button2Text,bodyText,titleText) {}:创建一个MessageForm的 UI。createModalUi(buttonInfo,titleText,submitText) {}:创建一个ModalForm的 UI。showActionOrMessageUi(ui,showPlayer,playerSelectedFunc,playerCanceledFunc) {}:显示一个ActionForm或MessageForm的 UI,并追踪玩家的选择。showModalUi(ui,showPlayer,submittedFunc,playerCanceledFunc) {}:显示一个ModalForm的 UI,并追踪玩家的选择。createAndShowActionUi(player,buttonInfo,playerCanceledFunc,bodyText,titleText) {}:创建一个ActionForm的 UI 并立即显示,同时追踪玩家的选择并执行内容。createAndShowMessageUi(player,buttonInfo,bodyText,titleText) {}:创建一个MessageForm的 UI 并立即显示,同时追踪玩家的选择并执行内容。createAndShowModalUi(player,buttonInfo,submittedFunc,playerCanceledFunc,titleText,submitText) {}:创建一个ModalForm的 UI 并立即显示,同时追踪玩家的选择并执行内容。
设置与methods/bedwarsSettings.js
- 新增 物品
bedwars:map_settings、bedwars:select_team和bedwars:kill_style。 - 移除 移除了所有的设置命令,转而使用设置菜单代替。
- 新增 为
settings对象新增了以下属性:settings.miscellaneous.playerCanThrowItemsInVoid,控制虚空扔物品的设置。settings.beforeGaming.waiting.maxPlayerCount,控制一局中最多有多少玩家能够参与游戏。settings.beforeGaming.reload.clearSpeed,控制清除地图的速度。settings.beforeGaming.reload.loadSpeed,控制加载地图的速度。settings.beforeGaming.teamAssign.mode,控制队伍分配的方式。settings.beforeGaming.teamAssign.assignBeforeGaming,是否在开始前就随机组队。settings.beforeGaming.teamAssign.playerSelectEnabled,是否启用自由选队。settings.gaming.resourceInterval.iron,平均每个铁的基准生成间隔。settings.gaming.resourceInterval.gold,金基准生成间隔。settings.gaming.resourceInterval.diamond,钻石基准生成间隔。settings.gaming.resourceInterval.emerald,绿宝石基准生成间隔。settings.gaming.resourceInterval.soloSpeedMultiplier,单挑模式下的生成间隔乘数。settings.gaming.invalidTeam.enableTest,是否启用无效队伍的检测。settings.gaming.invalidTeam.spawnTraders,无效队伍是否生成商人。
- 更改 为
settings对象进行了以下重命名:settings.minWaitingPlayers→settings.beforeGaming.waiting.minPlayerCount;settings.gameStartWaitingTime→settings.beforeGaming.waiting.gameStartWaitingTime;settings.resourceMaxSpawnTimes.iron→settings.gaming.resourceLimit.iron;settings.resourceMaxSpawnTimes.gold→settings.gaming.resourceLimit.gold;settings.resourceMaxSpawnTimes.diamond→settings.gaming.resourceLimit.diamond;settings.resourceMaxSpawnTimes.emerald→settings.gaming.resourceLimit.emerald;settings.respawnTime.normalPlayers→settings.gaming.respawnTime.normalPlayers;settings.respawnTime.rejoinedPlayers→settings.gaming.respawnTime.rejoinedPlayers;settings.invalidTeamCouldSpawnResources→settings.gaming.invalidTeam.spawnResources;settings.randomMap.allow2Teams→settings.mapEnabled.classicTwoTeamsEnabled和settings.mapEnabled.captureTwoTeamsEnabled;settings.randomMap.allow4Teams→settings.mapEnabled.classicFourTeamsEnabled;settings.randomMap.allow8Teams→settings.mapEnabled.classicEightTeamsEnabled;settings.creativePlayerCanBreakBlocks→settings.miscellaneous.creativePlayerCanBreakBlocks。
- 更改 重命名
settingsEvent(event) {}→mapSettings(event) {},并更改了其依赖事件,由system.afterEvents.scriptEventReceive改为world.afterEvents.itemUse。 - 新增
selectTeamSettings(event) {}方法,用于设置玩家的自主选队。 - 新增
killStyleSettings(event) {}方法,用于设置玩家的击杀样式。 - 新增
settingsBackup() {}方法,用于在玩家设置完成后备份数据。 - 新增
settingsRecover() {}方法,用于恢复已备份的数据。
翻译文件zh_CN.lang
- 新增 来自 Hypixel 的部分击杀样式信息。
- 新增 部分在未来规划中的模式介绍信息。
Alpha 1.1_02
发布于 25.12.05。
周末快乐!时隔 9 个月,我们今天正式推出新的测试版本!这个版本其实主要新在代码上——我们整合了大量的脚本代码到 3 个文件中去,并使用了新的写法和思路。经过实测,该版本在很多方面的的性能水平远远强于 Alpha 1.1_01!
此外,这次得益于新架构,在商店、结构加载方面得到了不小的进步!来看看本次的更新吧~祝你偷床顺利!>:)
主要更改
- #40 大幅度优化了性能表现,现在的版本在理论上性能会远比 Alpha 1.1_01 时期来的更好,会比 1.0 版本来的更好
- 将创造模式的判断准则改为了判断是否为管理员玩家
- 现在只有管理员玩家能默认得到设置物品,以前是创造模式的玩家可以获得
- 非管理玩家无论何种模式都会默认被调整为冒险模式,以前只要是创造模式就不会调整
- 并且,非管理玩家在等待期间超界时也会被传送回来,以前只要是创造模式就不会传送
- #37 现在在游戏内,玩家也能获得设置物品
- 现在结构采用异步加载
- 结构加载现在是一个一个岛屿地加载(甚至是一个岛屿的一部分一部分地加载),而不再是所有结构同时加载
- 现在每个结构都有自己的加载时间,如果结构大小比较大,加载时间就会比较长,反之则会比较短
- 因此,采用这种异步加载方式,对于某些较小的地图来说,这种加载方式可以兼顾加载速度和性能,对于某些较大的地图来说,虽然加载速度会变慢,但是理论上应该可以在结构加载时提供更好的服务端性能
- 将包图标改成了床
- #36 修复了铁生成速率设置的当前值和设置值的单位不一致的漏洞
- #38 修复了在击杀样式启用的情况下,且未额外选择击杀样式的情况下,可能会导致击杀样式变为
undefined的漏洞
商店

- 全新的商店设计!
- 将以前的“方块与物品”和“武器与盔甲”商人合二为一,成为物品商店
- 商人 UI 现在采用非共享 UI,不同的玩家将看到不同的内容,感谢 Panda 的非共享 UI 商人思路!
- 现在物品商店采用类似于 Hypixel 的标签页设计,包含 9 大分类:快速购买、方块、近战、盔甲、工具、远程、药水、实用道具、轮换物品
- 现在镐子和斧头不再摊开放置了,而是在一个格子之内
- 大幅度优化了商店的性能和表现
- 现在除非和商人交互,否则不会再误锁物品栏,并且只要和商人交易后小角度切换视角即可解锁物品栏
- 修复了梯子定价为 4 个金锭的问题,改为了 4 个铁锭
- 将商店的高等级盔甲改为了靴子(以前是胸甲)
- 将“这是个陷阱!”更名为“失明陷阱”
- 将“报警陷阱”更名为“显影陷阱”
- 移除了“末影龙增益”团队升级,改为了“缓冲靴子”
- 同时,现在夺点模式不再自动获取“末影龙增益”团队升级
- 现在商店物品的提示框也和 Hypixel 保持了高度一致
- 现在团队升级在已解锁后或陷阱排满后会显示出来,而不是显示为花费
设置

- 更新了设置页面
- 得益于 1.21.90 的新版脚本
@minecraft/server-ui@2.0.0,现在设置页面有大标题、文本解释和分割线了 - 现在生成地图界面显示地图的中文名
- 现在在设置清除地图和加载地图速度为较快、快和非常快后,清除和加载速度分别会达到默认状态的 150%、200% 和 400%
- 新增了一个新设置:杂项设置 - 备份与恢复设置
- 用于在应用设置时保存设置内容,并在
/reload、重启地图、重启服务器后恢复到以前应用的设置 - 默认开启
- 如果关闭这个选项,在
/reload、重启地图、重启服务器后将会应用我们的默认设置
- 用于在应用设置时保存设置内容,并在
- 在设置页面新增了更新日志界面,可查看该版本和过往版本的更新内容
- 更新了开发者设置的内容,现在仅开放一项设置:开启调试模式
- 该模式将自动关闭无效队伍检测,将地图加载清除速度调到最快,并允许单人开启游戏,方便开发者在单人模式下调试
物品
- 搭桥蛋现在不再会将已搭好的桥清空掉某些部分
- 搭桥蛋现在不再能在安全区放置方块了
- 现在梦境守护者的使用能够适应玩家所交互的方块面
- 例如,如果玩家对准的是一个方块的侧面,现在铁傀儡会在方块的侧面生成而不是顶面
- 现在爆炸施加向量采用新式算法
- 以前,爆炸只会对玩家施加 y 方向上的速度,具体表现为抬高,但不添加水平方向的速度
- 现在,爆炸根据爆炸位置和玩家位置的连线向量进行计算,这意味着爆炸将带来更加强力而真实的冲击效果
- 例如,以前的火球跳会导致玩家跳的更高,但水平方向上并没有给出太多速度,但现在火球跳可以在玩家有水平速度的情况下施加水平方向向量,这会使得玩家跳的不像以前那么高,但是反而会跳的更远
- 或者,使用火球偷袭的时候,现在也会更容易把被偷袭的玩家炸离桥面
- 再次降低了梦境守护者的伤害,伤害没有那么高了
作者注:这里铁傀儡直接使用了自定义实体而不是原版实体,因为原版铁傀儡的不少伤害是硬编码的——这代表着我们通过修改原版铁傀儡的伤害数值的方法收效甚微,但是使用自定义实体的铁傀儡,在动画上会出现一点不和谐,即表现得不太像原版,但我们已经尝试过尽力还原原版的动画了,希望玩家们可以谅解~ - #39 得益于新架构,修复了在资源池拾取的物品可能不会堆叠的问题
底层更新
- 全面重构脚本系统的底层
- 由于这次底层更改多,因此只介绍主要更新内容
- 重新合并了其他所有文件为
main.js、lib.js、data.js三个文件main.js处理主要逻辑,包含起床战争的多个相关类和功能lib.js是原版方法的工具库,除了在起床战争中应用外,也可能在其他地方应用data.js负责存储有关起床战争的数据、穷举量、类型定义等,不包含任何功能
- 新增了
BedwarsSystem类- 类似于
@minecraft/world的World类 - 作为起床战争脚本系统的基础系统,并在地图加载后实例化
- 在全过程中,系统不应被删除,但可以修改其中的数据
- 在实例化后,会默认重新加载地图
- 原来的一些数据都被整合到
BedwarsSytem类中,并且所有数据都能够通过BedwarsSystem访问
- 类似于
- 新增了
BedwarsSettings类 - 新增了
BedwarsTimeline类和BedwarsEvent类- 时间线类的本质其实是
system.runInterval(),只是额外多存储了一个typeId,用于更方便地销毁时间线 - 而事件类的本质其实是
world的前事件和后事件,额外多存储了eventName和typeId,用于更方便地销毁事件 - 在不同阶段下,会存在不同的时间线和事件,利用此机制可以方便地向系统注册或销毁时间线或事件
- 在非必要情况下,现在的脚本系统会尝试销毁不必要的时间线或事件,以提升性能
- 时间线类的本质其实是
- 新增了
BedwarsClassicMode类和BedwarsCaptureMode类- 在创建地图时会同步创建对应的模式类,其中包含游戏运行的主要代码
- 五个阶段(清除地图、加载地图、等待、游戏中、游戏结束)现在都有一个
entry...State() {}方法和exit...State() {}方法,在进入和离开此状态时可以向系统注册时间线、事件,并执行一些代码 BedwarsClassicMode类是基础类,其他模式类都是从该类extends出来的,并修改了部分代码
- 新增了
mapData变量- 以前,这些地图的数据分别存储在不同文件的不同函数中,在
BedwarsMap类初始化后处理数据 - 现在,所有地图基础数据都以对象的形式存储,并在
BedwarsMap类初始化时处理数据
- 以前,这些地图的数据分别存储在不同文件的不同函数中,在
- 现在地图内重新使用
Vector3,而不再使用自建的Vector类 - 现在将原版的所有方法整合到了
lib.js中 - 添加了 9 种目录类方块和物品,用于物品商店中
已知漏洞
当一个无床的队伍在最后一个玩家退出游戏时,除非该玩家回到游戏,否则游戏会无法结束。