Vehicle
概览
Vehicle 让玩家拥有、召唤并驾驶自定义载具:汽车、船、飞行坐骑。你只需定义一次载具类型(其外观、速度、生命值、燃料、战斗和成长),每位玩家便拥有它的实例,各自带有等级、燃料、生命值、护盾和皮肤,并保存在构件中。玩家可以从车库菜单或动作中召唤载具,用移动键驾驶它,并将其收回。
载具由两部分组成。一个隐形的载体实体承载物理效果和乘客。外观则附着在其上:展示物品、原版怪物、BetterModel 模型或 BTCMobs 怪物。因此你可以用一个简单的物品制作廉价的载具,或用动画模型制作旗舰级载具。
驾驶、燃料、伤害、技能和升级都向 TypeWriter 公开:它们会触发事件、公开事实,并且技能可以运行任意的 TypeWriter 动作列表。它运行于 TypeWriter 的 BTC 构建版本,并需要 BTC Core 的功能。
功能
- 四种移动类型 —
GROUND、WATER、AMPHIBIOUS和AIR,每种都有各自的载体。 - 四种外观 —
display(物品)、vanilla(怪物)、bettermodel和btcmobs,模型按玩家解析。 - 燃料 — 油箱、每秒消耗速率、可接受的燃料物品,以及加油动作。
- 生命值与护盾 — 伤害会先由护盾吸收;生命值降到 0 时载具被摧毁,必须修理。
- 等级与属性 — 可配置的经验曲线,以及每级的属性加成。
- 战斗 — 带有射程、冷却和耐力消耗的左键攻击、按住跳跃键的蓄力,以及可选的碰撞伤害。
- 技能 — 可激活的技能,带有冷却和耐力消耗,并运行任意 TypeWriter 动作。
- 车库菜单 — 基于 GUI 布局构建的、显示玩家载具的分页菜单。
- 拥有数量上限 — 基础上限可通过权限提高。
- 事件与事实 — 碰撞、燃料耗尽、升级、攻击、蓄力命中、被摧毁和耐力耗尽。
安装
- 安装 BTCMobs 和 Basic 扩展(两者都是声明的依赖项),以及用于车库菜单的 GUI 扩展。参见 BTCMobs。
- 安装 PacketEvents。没有它,转向会被禁用,并且日志会显示
PacketEvents not found! WASD steering will be disabled. - 可选地安装 BetterModel,以使用
bettermodel外观。 - 将 Vehicle 的 JAR 放入
plugins/Typewriter/extensions/并重启服务器。
快速上手
- 在 TypeWriter 网页面板中,打开一个**静态(static)**页面,添加一个 Vehicle Storage 构件。
- 添加一个 Vehicle Config 条目,并将
storage设为该构件。没有它,载具数据既不会被加载也不会被保存,并且日志会显示Aucun stockage designe。 - 添加一个 Vehicle Definition:选择
movement(GROUND)、一个visual(display,搭配MINECART等材质),并调整stats、fuel(向allowedFuels添加一个物品)和combat。 - 添加一个引用该定义的 Spawn Vehicle 动作,并通过命令、NPC 或事件触发它。首次调用会给予玩家一辆此类型的新载具,装满燃料和生命值,并让玩家骑上去。
- 若要建立车库,请添加一个使用
layoutPool构建的 Vehicle Garage Menu,然后触发 Open Vehicle Garage。 - 在加油站或车库 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
- Activate Vehicle AbilityActivate Vehicle Ability
- Add Vehicle XPAdd Vehicle XP
- Open Vehicle GarageOpen Vehicle Garage
- Refill Vehicle FuelRefill Vehicle Fuel
- Repair VehicleRepair Vehicle
- Set Vehicle SkinSet Vehicle Skin
- Spawn VehicleSpawn Vehicle
- Vehicle AttackVehicle Attack
- Vehicle ChargeVehicle Charge
事件7
- On Vehicle AttackOn Vehicle Attack
- On Vehicle Charge HitOn Vehicle Charge Hit
- On Vehicle CollisionOn Vehicle Collision
- On Vehicle DestroyedOn Vehicle Destroyed
- On Vehicle Fuel EmptyOn Vehicle Fuel Empty
- On Vehicle Level UpOn Vehicle Level Up
- On Vehicle Stamina DepleteOn Vehicle Stamina Deplete
事实4
- Vehicle Charge Meter FactVehicle Charge Meter
- Vehicle LimitVehicle Ownership Limit
- Vehicle Owned CountVehicles Owned Count
- Vehicle Stamina FactVehicle Stamina
构件1
- Vehicle StorageVehicle Storage Artifact
清单4
- Vehicle AbilityVehicle Ability
- Vehicle ConfigVehicle Global Configuration
- Vehicle DefinitionVehicle Definition
- Vehicle Garage MenuVehicle Garage Menu
故障排查
重启后没有保存任何内容。 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 的消息。