跳到主要内容

Vehicle

可驾驶的载具,具备燃料、生命值、耐力战斗、能力、等级、皮肤和车库。

私有v0.1实体与模型
依赖TypeWriter0.9.0-beta-177 (BTC build)BasicBTCMobsPacketEventsGUI可选BetterModel可选

专为 BornToCraft 服务器网络打造。此扩展仅作参考文档,不对外分发。

概览​

Vehicle 让玩家拥有、召唤并驾驶自定义载具:汽车、船、飞行坐骑。你只需定义一次载具类型(其外观、速度、生命值、燃料、战斗和成长),每位玩家便拥有它的实例,各自带有等级、燃料、生命值、护盾和皮肤,并保存在构件中。玩家可以从车库菜单或动作中召唤载具,用移动键驾驶它,并将其收回。

载具由两部分组成。一个隐形的载体实体承载物理效果和乘客。外观则附着在其上:展示物品、原版怪物、BetterModel 模型或 BTCMobs 怪物。因此你可以用一个简单的物品制作廉价的载具,或用动画模型制作旗舰级载具。

驾驶、燃料、伤害、技能和升级都向 TypeWriter 公开:它们会触发事件、公开事实,并且技能可以运行任意的 TypeWriter 动作列表。它运行于 TypeWriter 的 BTC 构建版本,并需要 BTC Core 的功能。

功能​

  • 四种移动类型 — GROUND、WATER、AMPHIBIOUS 和 AIR,每种都有各自的载体。
  • 四种外观 — display(物品)、vanilla(怪物)、bettermodel 和 btcmobs,模型按玩家解析。
  • 燃料 — 油箱、每秒消耗速率、可接受的燃料物品,以及加油动作。
  • 生命值与护盾 — 伤害会先由护盾吸收;生命值降到 0 时载具被摧毁,必须修理。
  • 等级与属性 — 可配置的经验曲线,以及每级的属性加成。
  • 战斗 — 带有射程、冷却和耐力消耗的左键攻击、按住跳跃键的蓄力,以及可选的碰撞伤害。
  • 技能 — 可激活的技能,带有冷却和耐力消耗,并运行任意 TypeWriter 动作。
  • 车库菜单 — 基于 GUI 布局构建的、显示玩家载具的分页菜单。
  • 拥有数量上限 — 基础上限可通过权限提高。
  • 事件与事实 — 碰撞、燃料耗尽、升级、攻击、蓄力命中、被摧毁和耐力耗尽。

安装​

  1. 安装 BTCMobs 和 Basic 扩展(两者都是声明的依赖项),以及用于车库菜单的 GUI 扩展。参见 BTCMobs。
  2. 安装 PacketEvents。没有它,转向会被禁用,并且日志会显示 PacketEvents not found! WASD steering will be disabled.
  3. 可选地安装 BetterModel,以使用 bettermodel 外观。
  4. 将 Vehicle 的 JAR 放入 plugins/Typewriter/extensions/ 并重启服务器。

快速上手​

  1. 在 TypeWriter 网页面板中,打开一个**静态(static)**页面,添加一个 Vehicle Storage 构件。
  2. 添加一个 Vehicle Config 条目,并将 storage 设为该构件。没有它,载具数据既不会被加载也不会被保存,并且日志会显示 Aucun stockage designe。
  3. 添加一个 Vehicle Definition:选择 movement(GROUND)、一个 visual(display,搭配 MINECART 等材质),并调整 stats、fuel(向 allowedFuels 添加一个物品)和 combat。
  4. 添加一个引用该定义的 Spawn Vehicle 动作,并通过命令、NPC 或事件触发它。首次调用会给予玩家一辆此类型的新载具,装满燃料和生命值,并让玩家骑上去。
  5. 若要建立车库,请添加一个使用 layoutPool 构建的 Vehicle Garage Menu,然后触发 Open Vehicle Garage。
  6. 在加油站或车库 NPC 处添加 Refill Vehicle Fuel 和 Repair Vehicle。发布并测试。
没有命令

Vehicle 不注册任何自己的命令。请通过动作、车库菜单或 TypeWriter 命令条目来召唤、收回和修理。

工作原理​

载体取决于 movement:GROUND 使用由服务器移动的盔甲架,WATER 和 AMPHIBIOUS 使用由客户端自行模拟的船,AIR 使用快乐恶魂。对于船,服务器并不驱动它:而是每个 tick 进行验证,并在载具超过 maxSpeed、油箱为空,或(对于 GROUND)进入液体时,将其移回。

转向使用玩家输入数据包:前进、后退、左、右、跳跃和潜行。下车会将载具收回(它被移除,数据被保存)。

载具实例具有等级、经验、生命值、护盾、燃料和皮肤。属性会乘以 1 + statBonusPerLevel * (level - 1)(重力除外)。离开某个等级所需的经验为 baseXp * level ^ xpGrowth。达到 maxLevel 后经验停止增长。

菜单​

Vehicle Garage Menu 的构建方式与任何 GUI 菜单相同:一个 layoutPool、一个 mainLayoutId、可选的 views,以及用于继承共享底盘的 baseMenuId。使用以下按钮类型放置物品(物品的 buttonType):

按钮类型行为
vehicle_button:VEHICLE_SLOT#<n>显示玩家的第 n 辆载具(按实例 id 排序);点击会召唤它。如果玩家拥有的载具较少,则为空。
vehicle_button:VEHICLE_SPAWN召唤当前激活的载具。
vehicle_button:VEHICLE_DESPAWN收回已骑乘的载具并关闭菜单。
vehicle_button:VEHICLE_INFO在聊天中输出当前激活载具的等级、燃料和生命值。
vehicle_button:NAV_BACK返回上一个菜单。
vehicle_button:NAV_CLOSE关闭菜单。

vehicleDisplay 设置载具槽位的外观:一个 item、一个 nameFormat 和 lore,可使用令牌 %name%、%level%、%max_level%、%fuel%、%max_fuel%、%health%、%max_health% 和 %shield%。如果页面定义了名称和 lore,你为按钮放置的物品会保留其自己的名称和 lore。

权限​

权限授予
typewriter.vehicle.limit.<n>当 Vehicle Ownership Limit 条目读取它时,将拥有数量上限提高 <n>(取最高值)。

扩展没有定义其他权限。

占位符​

有两个事实可以通过 TypeWriter 作为占位符读取:Vehicle Ownership Limit 和 Vehicles Owned Count,它们各自返回一个数字。扩展没有注册任何自己的占位符。

条目​

25 个条目,由扩展源码生成。

动作9
事件7
事实4
构件1
清单4

故障排查​

重启后没有保存任何内容。 vehicle_config 没有 storage,或者它指向一个不存在的构件。日志会报告 Aucun stockage designe dans 'vehicle_config'。请在 storage 中设置构件。

载具无法用 WASD 移动。 缺少 PacketEvents,因此转向被禁用。请安装它并重启。

载具被拉回原位或无法移动。 当载具移动速度超过 stats.maxSpeed(格/tick)、fuel 为 0(并触发 On Vehicle Fuel Empty),或对于 GROUND 进入水或岩浆时,服务器会进行回滚。请提高 maxSpeed、加油,或改用 AMPHIBIOUS。

Ce vehicule n'est pas disponible pour le moment. 无法创建外观:BetterModel 中不存在的模型 id、未知的 BTCMobs mobId,或不是物品的 display 材质。请在日志中查找 non spawne 或 visuel。

召唤因上限消息而被拒绝。 玩家已经拥有 baseOwnershipLimit 辆载具(默认为 1)。只有在你创建了 Vehicle Ownership Limit 条目时,上限才包含权限;否则只适用 baseOwnershipLimit。

This vehicle is destroyed — repair it before summoning it again. 生命值降到了 0。请运行 Repair Vehicle:它会消耗 repair.amount 个 repair.item,并为当前激活的载具恢复 healthPerRepair 点生命值。

技能没有任何作用。 它必须列在载具定义的 abilities 中,并且玩家必须正在驾驶、拥有足够的耐力,且技能不在冷却中;每种失败都会发送来自 vehicle_config 的消息。

相关扩展​

  • BTCMobs — 提供 btcmobs 外观。
  • GUI — 渲染车库菜单。