跳到主要内容

量筒的起床战争

起床战争是一款能够适用于任何地图的附加包,是基于 Hypixel 起床战争的特性而开发的资源。

处于更新状态,目前已发布到多个平台,于元宵节正式发布。


基本信息

  • 作者 一只卑微的量筒(@量筒
  • 制作人表 详情见制作人表页面
  • 版本需求 1.21.0+
  • 资源类型 附加包
  • 最新版本 1.0(正式版) | Alpha 1.1_02(测试版)
  • 更新日志 详情见更新日志页面
  • 漏洞汇报 详情见GitHub Issues

下载

有多种途径都可以下载或找到本附加包,也可以在群内直接下载此附加包。

网盘

各大论坛或平台


群内测试

目前本资源处于活跃更新状态。本资源将保持在本群的起床战争服开展测试。

该服务器采用白名单机制,需要参加测试的成员,请确保您的名字出现在服务器成员登记表中,否则将无法进入游戏。

该服务器目前采用 Minecraft 最新版本,如果您在进入服务器时显示「过期的客户端!」,请在下载国际基岩版 Minecraft中更新你的 Minecraft 。


相关视频

本资源在 @极筑工坊 的 B 站账号发布了第一期 demo 视频


最新版本更新日志 - Alpha 1.1_02

周末快乐!时隔 9 个月,我们今天正式推出新的测试版本!这个版本其实主要新在代码上——我们整合了大量的脚本代码到 3 个文件中去,并使用了新的写法和思路。经过实测,该版本在很多方面的的性能水平远远强于 Alpha 1.1_01!

此外,这次得益于新架构,在商店、结构加载方面得到了不小的进步!来看看本次的更新吧~祝你偷床顺利!>:)

主要更改

  • #40 大幅度优化了性能表现,现在的版本在理论上性能会远比 Alpha 1.1_01 时期来的更好,会比 1.0 版本来的更好
  • 将创造模式的判断准则改为了判断是否为管理员玩家
    • 现在只有管理员玩家能默认得到设置物品,以前是创造模式的玩家可以获得
    • 非管理玩家无论何种模式都会默认被调整为冒险模式,以前只要是创造模式就不会调整
    • 并且,非管理玩家在等待期间超界时也会被传送回来,以前只要是创造模式就不会传送
    • #37 现在在游戏内,玩家也能获得设置物品
  • 现在结构采用异步加载
    • 结构加载现在是一个一个岛屿地加载(甚至是一个岛屿的一部分一部分地加载),而不再是所有结构同时加载
    • 现在每个结构都有自己的加载时间,如果结构大小比较大,加载时间就会比较长,反之则会比较短
    • 因此,采用这种异步加载方式,对于某些较小的地图来说,这种加载方式可以兼顾加载速度和性能,对于某些较大的地图来说,虽然加载速度会变慢,但是理论上应该可以在结构加载时提供更好的服务端性能
  • 将包图标改成了床
  • #36 修复了铁生成速率设置的当前值和设置值的单位不一致的漏洞
  • #38 修复了在击杀样式启用的情况下,且未额外选择击杀样式的情况下,可能会导致击杀样式变为undefined的漏洞

商店

alpha_1.1_02_shop

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

设置

alpha_1.1_02_settings

  • 更新了设置页面
  • 得益于 1.21.90 的新版脚本@minecraft/server-ui@2.0.0,现在设置页面有大标题、文本解释和分割线了
  • 现在生成地图界面显示地图的中文名
  • 现在在设置清除地图和加载地图速度为较快、快和非常快后,清除和加载速度分别会达到默认状态的 150%、200% 和 400%
  • 新增了一个新设置:杂项设置 - 备份与恢复设置
    • 用于在应用设置时保存设置内容,并在/reload、重启地图、重启服务器后恢复到以前应用的设置
    • 默认开启
    • 如果关闭这个选项,在/reload、重启地图、重启服务器后将会应用我们的默认设置
  • 在设置页面新增了更新日志界面,可查看该版本和过往版本的更新内容
  • 更新了开发者设置的内容,现在仅开放一项设置:开启调试模式
    • 该模式将自动关闭无效队伍检测,将地图加载清除速度调到最快,并允许单人开启游戏,方便开发者在单人模式下调试

物品

  • 搭桥蛋现在不再会将已搭好的桥清空掉某些部分
  • 搭桥蛋现在不再能在安全区放置方块了
  • 现在梦境守护者的使用能够适应玩家所交互的方块面
    • 例如,如果玩家对准的是一个方块的侧面,现在铁傀儡会在方块的侧面生成而不是顶面
  • 现在爆炸施加向量采用新式算法
    • 以前,爆炸只会对玩家施加 y 方向上的速度,具体表现为抬高,但不添加水平方向的速度
    • 现在,爆炸根据爆炸位置和玩家位置的连线向量进行计算,这意味着爆炸将带来更加强力而真实的冲击效果
    • 例如,以前的火球跳会导致玩家跳的更高,但水平方向上并没有给出太多速度,但现在火球跳可以在玩家有水平速度的情况下施加水平方向向量,这会使得玩家跳的不像以前那么高,但是反而会跳的更远
    • 或者,使用火球偷袭的时候,现在也会更容易把被偷袭的玩家炸离桥面
  • 再次降低了梦境守护者的伤害,伤害没有那么高了
    作者注:这里铁傀儡直接使用了自定义实体而不是原版实体,因为原版铁傀儡的不少伤害是硬编码的——这代表着我们通过修改原版铁傀儡的伤害数值的方法收效甚微,但是使用自定义实体的铁傀儡,在动画上会出现一点不和谐,即表现得不太像原版,但我们已经尝试过尽力还原原版的动画了,希望玩家们可以谅解~
  • #39 得益于新架构,修复了在资源池拾取的物品可能不会堆叠的问题

底层更新

  • 全面重构脚本系统的底层
    • 由于这次底层更改多,因此只介绍主要更新内容
  • 重新合并了其他所有文件为main.jslib.jsdata.js三个文件
    • main.js处理主要逻辑,包含起床战争的多个相关类和功能
    • lib.js是原版方法的工具库,除了在起床战争中应用外,也可能在其他地方应用
    • data.js负责存储有关起床战争的数据、穷举量、类型定义等,不包含任何功能
  • 新增了BedwarsSystem
    • 类似于@minecraft/worldWorld
    • 作为起床战争脚本系统的基础系统,并在地图加载后实例化
    • 在全过程中,系统不应被删除,但可以修改其中的数据
    • 在实例化后,会默认重新加载地图
    • 原来的一些数据都被整合到BedwarsSytem类中,并且所有数据都能够通过BedwarsSystem访问
  • 新增了BedwarsSettings
  • 新增了BedwarsTimeline类和BedwarsEvent
    • 时间线类的本质其实是system.runInterval(),只是额外多存储了一个typeId,用于更方便地销毁时间线
    • 而事件类的本质其实是world的前事件和后事件,额外多存储了eventNametypeId,用于更方便地销毁事件
    • 在不同阶段下,会存在不同的时间线和事件,利用此机制可以方便地向系统注册或销毁时间线或事件
    • 在非必要情况下,现在的脚本系统会尝试销毁不必要的时间线或事件,以提升性能
  • 新增了BedwarsClassicMode类和BedwarsCaptureMode
    • 在创建地图时会同步创建对应的模式类,其中包含游戏运行的主要代码
    • 五个阶段(清除地图、加载地图、等待、游戏中、游戏结束)现在都有一个entry...State() {}方法和exit...State() {}方法,在进入和离开此状态时可以向系统注册时间线、事件,并执行一些代码
    • BedwarsClassicMode类是基础类,其他模式类都是从该类extends出来的,并修改了部分代码
  • 新增了mapData变量
    • 以前,这些地图的数据分别存储在不同文件的不同函数中,在BedwarsMap类初始化后处理数据
    • 现在,所有地图基础数据都以对象的形式存储,并在BedwarsMap类初始化时处理数据
  • 现在地图内重新使用Vector3,而不再使用自建的Vector
  • 现在将原版的所有方法整合到了lib.js
  • 添加了 9 种目录类方块和物品,用于物品商店中

已知漏洞

当一个无床的队伍在最后一个玩家退出游戏时,除非该玩家回到游戏,否则游戏会无法结束。