插件介绍
与 NPC 售票员一起实现火车自动化,创建公共交通系统
The primary feature of this plugin is to add "triggers" onto train tracks. A trigger is an invisible object which can detect when a train comes into contact with it, in order to perform various functions, including the following.
All of the above functions, except adding a conductor, only apply to trains that have a conductor, meaning that player-driven trains can pass through most triggers unaffected.
A trigger can also serve as a workcart spawn point, with an optional number of attached wagons and workcarts.
Automating a train will add a conductor NPC to every workcart attached to that train, automatically dismounting any players currently driving them.
主要用途
主要用于workcart、train、wagon等服务端功能。 本插件由 WhiteThunder 发布,当前目录记录版本为 v0.36.0,uMod 累计下载 14,691 次。
适用场景
- 希望扩展原版服务器功能的服主
功能分类
查看 uMod 官方英文简介
Automates trains with NPC conductors to create a public transportation system
指令说明
aw.toggle @<optional_route_name>Toggles automation of the train you are looking at.If the route name is specified, the train will respond to both global triggers (i.e., triggers that do not specify a route) and triggers assigned to that route. The train will ignore triggers assigned other routes.If the route name is not specified, the train will respond only to global triggers.The train will start driving according to DefaultSpeed and Default track selection in the plugin configuration.
aw.resetallResets all automated trains to normal. This removes all conductors. Exception: Trains spawned by conductor triggers will keep their conductors.
If the route name is specified, the train will respond to both global triggers (i.e., triggers that do not specify a route) and triggers assigned to that route. The train will ignore triggers assigned other routes.
If the route name is not specified, the train will respond only to global triggers.
The train will start driving according to DefaultSpeed and Default track selection in the plugin configuration.
aw.showtriggers @<optional_route_name> <optional_duration_in_seconds> (alias: awt.show)Shows all nearby triggers to the player for specified duration. Defaults to 60 seconds.This displays each trigger's id, speed, direction, etc.Triggers are also automatically shown for at least 60 seconds when using any of the other trigger commands or when manually automating a workcart.When specifying a route name, global triggers and triggers matching that route will be shown with their default colors, but triggers for different routes will be colored gray.
aw.addtrigger <option1> <option2> ... (alias: awt.add)Adds a trigger to the track position where you are aiming, with the specified options. Automated trains that pass through the trigger will be affected by the trigger's options.Speed options: Hi | Med | Lo | Zero.Direction options: Fwd | Rev | Invert.Track selection options: Default | Left | Right | Swap.Train car options: Locomotive | Sedan | Workcart | WorkcartCovered | WagonA | WagonB | WagonC | WagonFuel | WagonLoot | WagonResource | CabooseOther options:Conductor -- Adds a conductor to the train if not already present. A good place to put Conductor triggers is on workcart spawn locations, such as the vanilla spawns in the underground maintenance tunnels. This option can also be combined with the train car options to automatically spawn an automated train.Note: Player-owned trains cannot receive conductors. Vanilla trains don't have owners, but most plugins that spawn vehicles for players will assign ownership by setting the OwnerID property of the vehicle.Brake -- Instructs the train to brake until it reaches the designated speed. For example, if the train is going Fwd_Hi and enters a Brake Med trigger, it will temporarily go Rev_Lo until it slows down enough, then it will go Fwd_Med.Destroy -- Destroys the train. This is intended primarily for testing and demonstrations, but it's also useful if you don't want to be bothered to make a more thoughtful track design.@<route_name> -- Instructs the train to ignore this trigger if it's not assigned this route (replace <route_name> with the name you want).If the trigger has the Conductor property and the train does not already have a conductor, it will be assigned this route.<chance>% -- Makes the trigger have only a percent chance to affect a train. Does not affect the chance of a train receiving a conductor.Enabled -- Enables the trigger.Disabled -- Disables the trigger. Disabled triggers are ignored by trains and are colored gray.
aw.addtrunneltrigger <option1> <option2> (alias: awt.addt)Adds a trigger to the track position where you are aiming.Options are the same as for aw.addtrigger.Must be in a supported train tunnel (one enabled in plugin configuration).This trigger will be replicated at all train tunnels of the same type. Editing or removing one of those triggers will affect them all.
aw.updatetrigger <id> <option1> <option2> ... (alias: awt.update)Adds or updates properties of the specified trigger, without removing any properties.Options are the same as for aw.addtrigger.
aw.replacetrigger <id> <option1> <option2> ... (alias: awt.replace)Replaces all properties of the specified trigger with the properties specified.Options are the same as for aw.addtrigger.This is useful for removing properties from a trigger (without having to remove and add it back) since aw.updatetrigger does not remove properties.
aw.movetrigger <id> (alias: awt.move)Moves the specified trigger to the track position where the player is aiming.
aw.rotatetrigger <id> (alias: awt.rotate)Rotates the specified trigger to where the player is facing. This is only useful for spawn triggers since it determines which way the train will be facing when spawned. This command will automatically respawn the train if the rotation has been reversed.
aw.removetrigger <id> (alias: awt.remove)Removes the specified trigger.
aw.enabletrigger <id> (alias: awt.enable)Enables the specified trigger. This is identical to aw.updatetrigger <id> enabled.
aw.disabletrigger <id> (alias: awt.disable)Disables the specified trigger. This is identical to aw.updatetrigger <id> disabled. Disabled triggers are ignored by trains and are colored gray.
aw.settriggertrain <id> <wagon1> <wagon2> ... (alias: awt.train)Assigns zero or more train cars to the trigger, replacing the current list of train cars, causing this trigger to automatically spawn a train with the specified workcarts and wagons, connected in order. The wagons will be automatically coupled to the workcart. Allowed values: Locomotive, Sedan, Workcart, WorkcartCovered, WagonA, WagonB, WagonC, WagonFuel, WagonLoot, WagonResource, Caboose. To remove all train cars, run the command without specifying any train cars.
aw.respawntrigger <id> (alias: awt.respawn)Despawns and respawns the train for the specified trigger. When used at a tunnel trigger, trains will be respawned at all instances of the tunnel trigger.
aw.addtriggercommand <id> <command> (alias: awt.addcmd)Adds the specified command to the trigger. which will be executed whenever a train passes through the trigger. You can use the magic variable $id in the command which will be replaced by the primary workcart's Net ID.
aw.removetriggercommand <id> <number> (alias: awt.removecmd)Removes the specified command from the trigger. The command number will be 1, 2, 3, etc. and will be visible on the trigger info when using aw.showtriggers.
This displays each trigger's id, speed, direction, etc.
Triggers are also automatically shown for at least 60 seconds when using any of the other trigger commands or when manually automating a workcart.
When specifying a route name, global triggers and triggers matching that route will be shown with their default colors, but triggers for different routes will be colored gray.
Speed options: Hi | Med | Lo | Zero.
Direction options: Fwd | Rev | Invert.
Track selection options: Default | Left | Right | Swap.
Train car options: Locomotive | Sedan | Workcart | WorkcartCovered | WagonA | WagonB | WagonC | WagonFuel | WagonLoot | WagonResource | Caboose
Other options:Conductor -- Adds a conductor to the train if not already present. A good place to put Conductor triggers is on workcart spawn locations, such as the vanilla spawns in the underground maintenance tunnels. This option can also be combined with the train car options to automatically spawn an automated train.Note: Player-owned trains cannot receive conductors. Vanilla trains don't have owners, but most plugins that spawn vehicles for players will assign ownership by setting the OwnerID property of the vehicle.Brake -- Instructs the train to brake until it reaches the designated speed. For example, if the train is going Fwd_Hi and enters a Brake Med trigger, it will temporarily go Rev_Lo until it slows down enough, then it will go Fwd_Med.Destroy -- Destroys the train. This is intended primarily for testing and demonstrations, but it's also useful if you don't want to be bothered to make a more thoughtful track design.@<route_name> -- Instructs the train to ignore this trigger if it's not assigned this route (replace <route_name> with the name you want).If the trigger has the Conductor property and the train does not already have a conductor, it will be assigned this route.<chance>% -- Makes the trigger have only a percent chance to affect a train. Does not affect the chance of a train receiving a conductor.Enabled -- Enables the trigger.Disabled -- Disables the trigger. Disabled triggers are ignored by trains and are colored gray.
ConductorAdds a conductor to the train if not already present. A good place to put Conductor triggers is on workcart spawn locations, such as the vanilla spawns in the underground maintenance tunnels. This option can also be combined with the train car options to automatically spawn an automated train.Note: Player-owned trains cannot receive conductors. Vanilla trains don't have owners, but most plugins that spawn vehicles for players will assign ownership by setting the OwnerID property of the vehicle.
BrakeInstructs the train to brake until it reaches the designated speed. For example, if the train is going Fwd_Hi and enters a Brake Med trigger, it will temporarily go Rev_Lo until it slows down enough, then it will go Fwd_Med.
DestroyDestroys the train. This is intended primarily for testing and demonstrations, but it's also useful if you don't want to be bothered to make a more thoughtful track design.
@<route_name>Instructs the train to ignore this trigger if it's not assigned this route (replace <route_name> with the name you want).If the trigger has the Conductor property and the train does not already have a conductor, it will be assigned this route.
<chance>% -- Makes the trigger have only a percent chance to affect a train. Does not affect the chance of a train receiving a conductor.
EnabledEnables the trigger.
DisabledDisables the trigger. Disabled triggers are ignored by trains and are colored gray.
Note: Player-owned trains cannot receive conductors. Vanilla trains don't have owners, but most plugins that spawn vehicles for players will assign ownership by setting the OwnerID property of the vehicle.
If the trigger has the Conductor property and the train does not already have a conductor, it will be assigned this route.
Options are the same as for aw.addtrigger.
Must be in a supported train tunnel (one enabled in plugin configuration).
This trigger will be replicated at all train tunnels of the same type. Editing or removing one of those triggers will affect them all.
This is useful for removing properties from a trigger (without having to remove and add it back) since aw.updatetrigger does not remove properties.
Tip: For the commands that update, move or remove triggers, you can skip the <id> argument if you are aiming at a nearby trigger.
Simple examples:
awt.add LoCauses the train to move in its current direction at Lo speed. Example: Fwd_Hi -> Fwd_Lo.
awt.add Fwd LoCauses the train to move forward at Lo speed, regardless of its current direction. Example: Rev_Hi -> Fwd_Lo.
awt.add InvertCauses the train to reverse direction at its current speed. Example: Fwd_Med -> Rev_Med.
awt.add Invert MedCauses the train to reverse direction at Med speed. Example: Fwd_Hi -> Rev_Med.
awt.add Brake MedCauses the train to brake until it reaches Med speed. Example: Fwd_Hi -> Rev_Lo -> Fwd_Med.
awt.add LeftCauses the train to turn left at all future intersections.
Advanced examples:
awt.add Conductor Fwd Hi LeftCauses the train to automatically receive a conductor, to move forward at Hi speed, and to always turn left.
awt.add Brake Zero 10 HiCauses the train to brake to a stop, wait 10 seconds, then move Hi speed in the same direction.
awt.add Zero 20 MedCauses the train to turn off its engine for 20 seconds (slowly rolling to a stop), then move the same direction at Med speed.
Route examples:
awt.add @Route1 Conductor Fwd Hi LeftCauses the train to automatically receive a conductor, to move forward at Hi speed, to always turn left, and to ignore triggers assigned to other routes (i.e., routes not named Route1).
awt.add @Route1 LeftCauses the train to turn left at all future intersections, only if the train is assigned the Route1 route.
Update examples:
awt.update 60Updates the trigger's stop duration to 60 seconds.
awt.update LeftUpdates the trigger's track selection to Left.
awt.update Fwd HiUpdates the trigger's direction to Fwd, and speed to Hi.
awt.update @Route2Updates the trigger's route to Route2.
awt.update 60 Left Fwd Hi @Route2Applies all of the above updates to the trigger at once.
Spawn examples:
awt.add WorkcartCreates a trigger that will spawn a workcart.
awt.train Workcart WagonA WagonBUpdates the trigger to spawn a workcart with one WagonA and one WagonB wagon coupled behind it.
awt.train Workcart WagonC WagonCUpdates the trigger to spawn a workcart with two WagonC wagons coupled behind it.
awt.train Workcart WorkcartUpdates the trigger to spawn two workcarts coupled together.
awt.train Locomotive Workcart WagonA WagonB WagonC WagonFuel WagonLoot WagonResource Caboose WorkcartCoveredUpdates the trigger to spawn a train with all possible train car types coupled behind it.
All-in-one examples:
awt.add Conductor Brake Zero 10 Fwd Hi Left Workcart WagonA WagonBCreates a trigger that will spawn a workcart with one WagonA and one WagonB wagon coupled behind it. It will have a conductor, and will initially wait 10 seconds before driving forward at Hi speed. On return visits, it will brake to a stop and wait 10 seconds before continuing.
相关依赖
- Workcart Safe Zones
配置说明
Default configuration:
{ "Play horn for nearby players in radius": 0.0, "Default speed": "Fwd_Hi", "Default track selection": "Left", "Destroy unoccupied obstacle trains": false, "Destroy occupied obstacle trains": false, "Destroy barricades instantly": false, "Enable map triggers": true, "Enable tunnel triggers": { "TrainStation": false, "BarricadeTunnel": false, "LootTunnel": false, "Intersection": false, "LargeIntersection": false, "VerticalIntersection": false }, "Max conductors": -1, "Spawn triggers respect conductor limit": false, "Disable default tunnel workcart spawn points": false, "Trigger display distance": 150.0, "Conductor outfit": [ { "ShortName": "jumpsuit.suit", "Skin": 0 }, { "ShortName": "sunglasses03chrome", "Skin": 0 }, { "ShortName": "hat.boonie", "Skin": 0 } ], "Automated train engine overrides": { "assets/content/vehicles/sedan_a/sedanrail.entity.prefab": { "Enable engine overrides": false, "Override max speed": 44.0, "Override engine force": 10000.0 }, "assets/content/vehicles/trains/locomotive/locomotive.entity.prefab": { "Enable engine overrides": false, "Override max speed": 20.0, "Override engine force": 250000.0 }, "assets/content/vehicles/trains/workcart/workcart.entity.prefab": { "Enable engine overrides": false, "Override max speed": 21.0, "Override engine force": 33000.0 }, "assets/content/vehicles/trains/workcart/workcart_aboveground.entity.prefab": { "Enable engine overrides": false, "Override max speed": 18.0, "Override engine force": 30000.0 }, "assets/content/vehicles/trains/workcart/workcart_aboveground2.entity.prefab": { "Enable engine overrides": false, "Override max speed": 17.0, "Override engine force": 30000.0 } }, "Map markers": { "Train map markers": { "Map marker update interval seconds": 5.0, "Colored map marker": { "Enabled": false, "Color": "#00ff00", "Alpha": 1.0, "Radius": 0.05, "Use dynamic route color": false }, "Vending map marker": { "Enabled": false, "Name": "Automated Train" } }, "Train stop map markers": { "Display only while stop is reachable": false, "Colored map marker": { "Enabled": false, "Color": "#ff9900", "Alpha": 1.0, "Radius": 0.1, "Use dynamic route color": false }, "Vending map marker": { "Enabled": false, "Name": "Train Stop" } }, "Dynamic route colors": [ "#ff0000", "#ff9900", "#ffff00", "#00ff00", "#0099ff", "#cc00ff", "#ffffff", "#777777" ] } }
Play horn for nearby players in radiusDistance from nearby players required to automatically play the train horn. Set to 0.0 to disable the horn.
Default speedDefault speed to use when a train starts being automated.Allowed values: "Rev_Hi" | "Rev_Med" | "Rev_Lo" | "Zero" | "Fwd_Lo" | "Fwd_Med" | "Fwd_Hi".This value is ignored if the train is on a trigger that specifies speed.
Default track selectionDefault track selection to use when a train starts being automated.Allowed values: "Left" | "Default" | "Right".This value is ignored if the train is on a trigger that specifies track selection.
Destroy unoccupied obstacle trains (true or false) -- While true, automated trains will destroy other non-automated trains in their path that have no drivers or passengers. While false, automated trains will simply push unoccupied trains.
Destroy occupied obstacle trains (true or false) -- While true, automated trains will destroy other non-automated trains in their path that have drivers or passengers. While false, automated trains will simply push occupied trains.
Destroy barricades instantly (true or false) -- While true, automated trains will destroy train barricades instantly, though the train may still slow down.Regardless of this setting, automated trains may destroy each other in head-on or perpendicular collisions.
Enable map triggers (true or false) -- While false, existing map-specific triggers will be disabled, and no new map-specific triggers can be added.
Enable tunnel triggersWhile false for a particular tunnel type, existing triggers in those tunnels will be disabled, and no new triggers can be added to tunnels of that type.TrainStation (true or false) -- Self-explanatory.BarricadeTunnel (true or false) -- This affects straight tunnels that spawn NPCs, loot, as well as barricades on the tracks.LootTunnel (true or false) -- This affects straight tunnels that spawn NPCs and loot.Intersection (true or false) -- This affects 3-way intersections.LargeIntersection (true or false) -- This affects 4-way intersections.
Max conductorsThe maximum number of automated trains allowed on the map at once. Set to -1 for no limit. Note that having multiple automated workcarts on a single train will count as only one conductor. Exception: Trains spawned by conductor triggers are not subject to the conductor limit, nor do they count toward the conductor limit, unless Spawn triggers respect conductor limit is set to true.
Spawn triggers respect conductor limit (true or false) -- While true, trains spawned by conductor triggers are subject to the conductor limit.
Disable default tunnel workcart spawn points (true or false) -- While true, vanilla workcart spawn points at train station maintenance tunnels will be disabled, and any existing workcarts spawned by those spawn points will be destroyed when the plugin loads. This enables you to create custom spawn points in the same location, allowing you to use alternative train engines plus optional wagons.
Trigger display distanceDetermines how close you must be to a trigger to see it when viewing triggers (e.g., after running awt.show).
Conductor outfitItems to use for the outfit of each conductor.
Automated train engine overridesConfigure engine settings for automated trains, by prefab path.Notes:Non-automated trains are not affected by these settings.It is not currently possible to override engine settings for specific triggers or spawn points.The workcart prefab is used for underground spawn points.When you install the plugin, it will automatically discover and add train engine prefabs to the config. If you ever want to reset the values to vanilla, simply delete this section from the config and reload the plugin. The default values in the documentation were from a specific point in time, so they might not be the current vanilla values.Each prefab has the following options.Enable engine overrides (true or false) -- Whether to override engine settings for this prefab.Override max speed -- The maximum speed of the train (probably in meters/second).Override engine force -- The engine force of the train. This affects acceleration and braking deceleration.
Map markersTrain map markersConfigure map markers for automated trains.Map marker update interval seconds -- The number of seconds between map marker updates. Updating the map markers periodically for many trains can impact performance, so you may adjust this value to trade off between accuracy and performance.Colored map markerEnabled (true or false) -- Whether to enable colored map markers for automated trains. Enabling this has a performance cost.Color -- The marker color, using the hexadecimal format popularized by HTML.Alpha (0.0 - 1.0) -- The marker transparency (0.0 is invisible, 1.0 is fully opaque).Radius -- The marker radius.Use dynamic route color (true or false) -- While true, instead of using the specific color configured above, the color will be assigned according to the distinct route that each train is taking, determined by which unique set of triggers the train is predicted to interact with. The color will be assigned from the list of Dynamic route colors.Vending map markerEnabled (true or false) -- Whether to enable vending machine map markers for automated trains. Enabling this has a performance cost.Name -- The name to display when hovering the mouse over the marker.Train stop map markers -- Configure map markers for automated train stops. Any trigger with speed Zero is considered a stop.Display only while stop is reachable (true or false) -- While true, train stops will only display on the map if it is predicted that a currently automated train will reach the trigger at some point. While false, all train stops will always be shown on the map.Colored map markerEnabled (true or false) -- Whether to enable colored map markers.Color -- The marker color, using the hexadecimal format popularized by HTML.Alpha (0.0 - 1.0) -- The marker transparency (0.0 is invisible, 1.0 is fully opaque).Radius -- The marker radius.Use dynamic route color (true or false) -- While true, the color will be assigned according to the distinct route that each train is taking, determined by which unique set of triggers the train is predicted to interact with. The color will be assigned from the list of Dynamic route colors. If multiple distinct train routes touch this trigger, the color for only one of those routes will be chosen.Vending map markerEnabled (true or false) -- Whether to enable vending machine map markers for train stops.Name -- The name to display when hovering the mouse over the marker.Dynamic route colors -- List of colors that can be applied to automated train and train stop map markers, if Use dynamic route color is enabled for them. If there are more distinct routes than colors, colors will be reused for multiple routes.
Allowed values: "Rev_Hi" | "Rev_Med" | "Rev_Lo" | "Zero" | "Fwd_Lo" | "Fwd_Med" | "Fwd_Hi".
This value is ignored if the train is on a trigger that specifies speed.
Allowed values: "Left" | "Default" | "Right".
This value is ignored if the train is on a trigger that specifies track selection.
Regardless of this setting, automated trains may destroy each other in head-on or perpendicular collisions.
TrainStation (true or false) -- Self-explanatory.
BarricadeTunnel (true or false) -- This affects straight tunnels that spawn NPCs, loot, as well as barricades on the tracks.
LootTunnel (true or false) -- This affects straight tunnels that spawn NPCs and loot.
官方配置示例
{
"Play horn for nearby players in radius": 0.0,
"Default speed": "Fwd_Hi",
"Default track selection": "Left",
"Destroy unoccupied obstacle trains": false,
"Destroy occupied obstacle trains": false,
"Destroy barricades instantly": false,
"Enable map triggers": true,
"Enable tunnel triggers": {
"TrainStation": false,
"BarricadeTunnel": false,
"LootTunnel": false,
"Intersection": false,
"LargeIntersection": false,
"VerticalIntersection": false
},
"Max conductors": -1,
"Spawn triggers respect conductor limit": false,
"Disable default tunnel workcart spawn points": false,
"Trigger display distance": 150.0,
"Conductor outfit": [
{
"ShortName": "jumpsuit.suit",
"Skin": 0
},
{
"ShortName": "sunglasses03chrome",
"Skin": 0
},
{
"ShortName": "hat.boonie",
"Skin": 0
}
],
"Automated train engine overrides": {
"assets/content/vehicles/sedan_a/sedanrail.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 44.0,
"Override engine force": 10000.0
},
"assets/content/vehicles/trains/locomotive/locomotive.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 20.0,
"Override engine force": 250000.0
},
"assets/content/vehicles/trains/workcart/workcart.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 21.0,
"Override engine force": 33000.0
},
"assets/content/vehicles/trains/workcart/workcart_aboveground.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 18.0,
"Override engine force": 30000.0
},
"assets/content/vehicles/trains/workcart/workcart_aboveground2.entity.prefab": {
"Enable engine overrides": false,
"Override max speed": 17.0,
"Override engine force": 30000.0
}
},
"Map markers": {
"Train map markers": {
"Map marker update interval seconds": 5.0,
"Colored map marker": {
"Enabled": false,
"Color": "#00ff00",
"Alpha": 1.0,
"Radius": 0.05,
"Use dynamic route color": false
},
"Vending map marker": {
"Enabled": false,
"Name": "Automated Train"
}
},
"Train stop map markers": {
"Display only while stop is reachable": false,
"Colored map marker": {
"Enabled": false,
"Color": "#ff9900",
"Alpha": 1.0,
"Radius": 0.1,
"Use dynamic route color": false
},
"Vending map marker": {
"Enabled": false,
"Name": "Train Stop"
}
},
"Dynamic route colors": [
"#ff0000",
"#ff9900",
"#ffff00",
"#00ff00",
"#0099ff",
"#cc00ff",
"#ffffff",
"#777777"
]
}
}bool API_AutomateWorkcart(TrainEngine trainEngine)更新日志
本站记录 uMod 官方插件信息。完整的历史更新日志请参阅 uMod 官方页面。
安装方法
- 确认服务器已安装 Oxide / uMod 或兼容的 Carbon 框架。
- 登录本站后点击"下载",由 uMod 官方地址获取作者发布的文件。
- 将 .cs 文件放入服务器的
oxide/plugins目录。 - 观察服务端控制台,确认插件编译并成功加载。
- 具体配置、权限、指令和依赖请查看原作者的 uMod 页面。
使用前注意
- Rust 更新后,请先确认插件是否仍兼容当前服务端版本。
- 修改配置前建议备份原配置文件,并在测试服验证后再部署到正式服。
- 若插件依赖其他扩展或库,以 uMod 原作者页面的最新说明为准。
- 本站中文内容用于辅助理解,遇到版本差异时以官方英文文档和源码为准。
中文介绍由 uMod 官方简介翻译整理。插件著作权、许可证、完整文档和最新发布状态均以原作者及 uMod 官方页面为准。