匿名
未登录
创建账号
登录
Mindustry中文wiki
搜索
查看“官方维基教程-插件与JVM模组”的源代码
来自Mindustry中文wiki
命名空间
页面
讨论
更多
更多
页面操作
阅读
查看源代码
历史
←
官方维基教程-插件与JVM模组
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于这些用户组的用户执行:
管理员
、editor
您可以查看和复制此页面的源代码。
<span id="插件与-jvm-模组"></span> = 插件与 JVM 模组 = Mindustry 支持在'''桌面端及安卓'''通过 Java 字节码加载 <code>jar</code> 的文件。这个模组类似 JS 模组,必须提供一个主类来在创建时实例化。 理论上,支持一切 JVM 语言。 Jar/JVM 模组使用和基础 json 模组相同的<code>mod.hjson</code>元文件,但有一个附加条件:''全限定的主类''必须用一个名为 main 的字段指定为 <code>main: "mypackage.MyMod"</code>。并且这个类必须继承 <code>mindustry.mod.Mod</code>。 如果主类没有被指定,默认会变成<code>modnameinlowercase.ModName + "Mod".</code> 一个简单的Java模组的<code>mod.hjson</code> 看起来是这样的: <pre class="hjson">name: "nothing" author: "你自己" main: "nothing.NothingMod" description: "..." version: "114.514" </pre> 访问 [https://github.com/Anuken/MindustryJavaModTemplate Java 模组示例] 或[https://github.com/Anuken/MindustryKotlinModTemplate Kotlin 模组示例] 获得更多教程。 <span id="plugins"></span> == 插件 == 插件是仅安装于服务端的 Java 模组。 通常来说,它们添加了 ''新的命令'' 或者 ''新的游戏模式''. 所有插件的主类都应该继承<code>mindustry.mod.Plugin</code>。 这使得它们被隐式转换为''隐藏模式'' ——客户端不需要下载插件连接服务器。他们都是仅用于服务端的! 安装插件只需要把文件放在 <code><服务端目录>/config/mods/</code>. 插件命名自己的元文件 <code>plugin.[h]json</code>。该文件的结构与其他Java 模组的文件结构相同——详见上文。 你可以看一个示例插件[https://github.com/Anuken/MindustryPluginTemplate 在这里]。对于一个可以在服务器上使用的实际示例, 看 [https://github.com/Anuken/AuthorizePlugin 这个项目]. <span id="importing"></span> == 导入 == 与JS或 json 模组不同,JAR 模组需要编译。这意味着它们不能直接从Github导入,而是使用''Github Releases''进行导入。 当用户尝试安装JAR模组时,Mindustry将检查最新(且''仅''最新)的Github版本的 <code>.jar</code> 模组 。如果有更新的版本,将自动下载并安装,注意 pre-releases 会被忽略。 我建议使用Github Actions(或任何其他CI)自动构建jar并上传。 <span id="multithreading"></span> == 多线程 == 除非另有说明,'''任何Mindustry代码都不是线程安全的'''。从主线程以外的线程执行任何操作(例如发送数据包、更改磁贴)都会导致随机崩溃或网络错误。要在主线程上运行某些内容,请使用 <code>Core.app.post(() -> { /* code */ })</code>。 <span id="capabilities-security"></span> == 兼容性与安全 == 由于jar mod直接通过“URLClassLoader”加载,没有沙盒,因此它们没有任何安全限制。这意味着: * 所有Java API都可以访问。 * 反射可用于访问私有/隐藏属性。 * 模组可以完全访问客户端的计算机,为潜在的恶意行为创造良机。 * 模组可以更改游戏文件或重写核心字节码。 因此,您应该''永远不要从不受信任的来源导入jar MOD。''现在,你可能想知道:为什么 jar 模组没有沙盒?这不是一个巨大的安全风险吗? 答案显然是''正确的''。然而,我没有更好的选择。即使实现了一个“安全管理器”来限制模组功能,也不会有帮助——Java从本质上就是不安全的,任何合理的“安全”沙盒实现(''如果存在的话'')都需要禁用mods中的反射,这完全是不可接受的。 作为比较,Forge(''Minecraft的流行 Java 模组加载器'')也不使用沙盒。
返回
官方维基教程-插件与JVM模组
。
导航
导航
首页
塞普罗
-- 战役区块
---- 零号地区
------ 地区介绍
------ 目标列表
---- 冰冻森林
------ 地区介绍
---- 陨石带
------ 地区介绍
---- 遗迹海岸
------ 地区介绍
---- 生物质合成区
------ 地区介绍
---- 风吹群岛
------ 地区介绍
---- 绵延群山
------ 地区介绍
---- 真菌通道
------ 地区介绍
---- 盐碱荒滩
------ 地区介绍
---- 工业区 32M
------ 地区介绍
---- 菌疫峡谷
------ 地区介绍
---- 边陲哨站
------ 地区介绍
---- 增生区
------ 地区介绍
---- 焦油田
------ 地区介绍
---- 边际海湾
------ 地区介绍
---- 核裂阵
------ 地区介绍
---- 污染丛林
------ 地区介绍
---- 边海港口
------ 地区介绍
---- 冲击区0078
------ 地区介绍
---- 实验禁区
------ 地区介绍
---- 海军要塞
------ 地区介绍
---- 萃取前哨
------ 地区介绍
---- 菌丝堡垒
------ 地区介绍
---- 荒芜裂谷
------ 地区介绍
---- 沉没码头
------ 地区介绍
---- 风化海峡
------ 地区介绍
---- 环礁群岛
------ 地区介绍
---- 行星发射终端
------ 地区介绍
---- 赤色总部
------ 地区介绍
---- 熔石要塞
------ 地区介绍
-- 物品
---- 铜
---- 铅
---- 钢化玻璃
---- 石墨
---- 沙
---- 煤炭
---- 钛
---- 钍
---- 废料
---- 硅
---- 塑钢
---- 相织布
---- 巨浪合金
---- 孢子荚
---- 爆炸混合物
---- 硫化物
-- 液体
---- 水
---- 矿渣
---- 石油
---- 冷冻液
-- 建筑
---- 炮台
------ 分裂
------ 火焰
------ 冰雹
------ 波浪
------ 蓝瑟
------ 电弧
------ 差扰
------ 蜂群
------ 齐射
------ 裂解
------ 海啸
------ 雷光
------ 浪涌
------ 气旋
------ 厄兆
------ 幽灵
------ 熔毁
---- 钻头
------ 机械钻头
------ 气动钻头
------ 激光钻头
------ 爆破钻头
------ 抽水机
------ 培养机
------ 石油钻井
---- 物品运输设施
------ 传送带
------ 钛传送带
------ 塑钢传送带
------ 装甲传送带
------ 交叉器
------ 传送带桥
------ 相织布传送带桥
------ 分类器
------ 反向分类器
------ 路由器
------ 分配器
------ 溢流门
------ 反向溢流门
------ 装卸器
------ 质量驱动器
---- 流体设施
------ 机械泵
------ 回转泵
------ 脉冲泵
------ 导管
------ 脉冲导管
------ 电镀导管
------ 流体路由器
------ 流体容器
------ 流体储罐
------ 流体交叉器
------ 导管桥
------ 相织布导管桥
---- 电力设施
------ 电力节点
------ 大型电力节点
------ 巨浪电力塔
------ 二极管
------ 电池
------ 大型电池
------ 火力发电机
------ 热能发电机
------ 涡轮发电机
------ 温差发电机
------ RTG 发电机
------ 太阳能板
------ 大型太阳能板
------ 钍反应堆
------ 冲击反应堆
---- 墙
------ 铜墙
------ 大型铜墙
------ 钛墙
------ 大型钛墙
------ 塑钢墙
------ 大型塑钢墙
------ 钍墙
------ 大型钍墙
------ 相织布墙
------ 大型相织布墙
------ 合金墙
------ 大型合金墙
------ 门
------ 大门
------ 废墙
------ 大型废墙
------ 巨型废墙
------ 超巨型废墙
------ 推进器残骸
---- 工厂
------ 石墨压缩机
------ 多重压缩机
------ 硅冶炼厂
------ 热能坩埚
------ 窑炉
------ 塑钢压缩机
------ 相织布编织器
------ 合金冶炼厂
------ 冷冻液混合器
------ 硫化物混合器
------ 爆炸物混合器
------ 熔炉
------ 分离机
------ 解离机
------ 孢子压缩机
------ 粉碎机
------ 煤炭离心机
------ 焚化炉
---- 兵工厂
------ 陆军工厂
------ 空军工厂
------ 海军工厂
------ 数增级单位重构工厂
------ 倍乘级单位重构工厂
------ 多幂级单位重构工厂
------ 无量级单位重构工厂
------ 维修点
------ 维修塔
------ 载荷传送带
------ 载荷路由器
---- 其他
------ 修理器
------ 修理投影
------ 超速投影
------ 超速穹顶
------ 力墙投影
------ 脉冲地雷
------ 初代核心
------ 次代核心
------ 终代核心
------ 容器
------ 仓库
------ 照明器
------ 发射台
------ 接收台
------ 行星际加速器
---- 逻辑
------ 信息板
------ 开关
------ 微型处理器
------ 逻辑处理器
------ 超核处理器
------ 内存元
------ 内存库
------ 逻辑显示屏
------ 大型逻辑显示屏
------ 逻辑显示单元
-- 单位
埃里克尔
-- 战役区块
---- 始发地区
------ 地区介绍
---- 庇护前哨
------ 地区介绍
---- 岩浆湖
------ 地区介绍
---- 交错丘陵
------ 地区介绍
---- 风化山脉
------ 地区介绍
---- 横断山谷
------ 地区介绍
---- 风蚀盆地
------ 地区介绍
---- 芳油湿地
------ 地区介绍
---- 横垒峰峦
------ 地区介绍
---- 贪湾峡谷
------ 地区介绍
---- 破碎火山
------ 地区介绍
---- 晶石要塞
------ 地区介绍
---- 碳岩裂隙
------ 地区介绍
---- 平行岭谷
------ 地区介绍
---- 十字路口
------ 地区介绍
---- 岩溶洞穴
------ 地区介绍
---- 起源
------ 地区介绍
-- 物品
---- 石墨
---- 沙
---- 钍
---- 硅
---- 相织布
---- 巨浪合金
---- 铍
---- 钨
---- 氧化物
---- 碳化物
-- 液体
---- 水
---- 矿渣
---- 瘤液
---- 芳油
---- 臭氧
---- 氢气
---- 氮气
---- 氰气
-- 建筑
-- 单位
沙盒
-- 建筑
隐藏
-- 物品
-- 液体
-- 建筑
最近更改
随机页面
MediaWiki帮助
wiki工具
wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志