Mixin框架

文摘   2024-12-30 01:36   江苏  

插播一条视频,提高英语学习效率的效率,极简版工具介绍:


Mixin框架

Mixin 是一个用于Java的trait/mixin框架,它通过ASM[1]实现,并利用一系列可插拔的内置或用户提供的服务,钩入运行时类加载过程。目前内置服务支持Mojang的LegacyLauncher[2]系统,尽管这已经被ModLauncher[3]所取代,后者由cpw开发,具有更大的扩展性,并且支持Java 8及更高版本。

文档

Mixin的主要文档可以在Wiki[4]中找到。

关于各个特性和注解的额外文档可以在详尽的Javadoc[5]中找到。如需更多帮助,请使用Sponge Discord服务器上的#mixin频道[6]

二进制文件

可以通过Jenkins[7]获取Mixin的二进制文件,并且它们被发布到以下maven仓库:

  • https://repo.spongepowered.org/repository/maven-public/[8]
      - 包含SNAPHOT和RELEASE构建
  • https://files.minecraftforge.net/maven/[9]
      - 仅包含RELEASE构建

工具

对于处理混淆任务,Mixin提供了一个注解处理器[10],它在编译时工作,为你的工具链生成混淆映射。如果使用Gradle 5或更高版本,注解处理器不再自动从compile配置中加载,必须通过annotationProcessor配置明确指定。为此,Mixin提供了包含所有所需依赖的“胖jar”工件,通过:processor分类器提供。例如,如果你的构建使用依赖org.spongepowered:mixin:1.2.3,那么你的注解处理器配置应该指定依赖org.spongepowered:mixin:1.2.3:processor

如果你在Minecraft Forge[11]项目中使用Mixin,那么可以使用MixinGradle[12]插件来简化Mixin注解处理器的配置。它为你的项目配置Mixin AP提供了简单的语法,详见MixinGradle README[13]了解如何配置MixinGradle。

与Eclipse集成

在使用Mixin开发时,你可以在Eclipse中使用Mixin注解处理器来提供上下文相关的错误和警告,帮助你更容易地调试你的混入代码。操作步骤如下:

  1. 运行gradle build命令以生成mixin jar
  2. 打开你的eclipse项目属性,导航到Java Compiler -> Annotation Processing -> Factory Path
  3. 勾选Enable project specific settings复选框
  4. 点击Add External JARs按钮,并选择生成的带有后缀**-processor**的mixin jar(提示:它应该在Mixin/build/libs中)
  5. 向上导航一级到Java Compiler -> Annotation Processing
  6. 勾选Enable project specific settings复选框
  7. 勾选Enable annotation processing复选框
  8. 点击Processor options框旁边的New...按钮
  • 设置KeyreobfSrgFile
  • 设置Valuemcp-srg.srg文件的完整路径(映射文件的位置因平台而异,如果你不确定在哪里找到它,请按照下面的Discord链接操作)。
  • 点击OK应用更改
  • 与IntelliJ IDEA集成

    通过Minecraft Development for IntelliJ IDEA[14]插件,可以在IntelliJ IDEA中获得与Mixin工作的增强功能,该插件由DemonWav[15]开发。

    引用链接

    [1]ASM: https://asm.ow2.io/

    [2]LegacyLauncher: https://github.com/Mojang/LegacyLauncher

    [3]ModLauncher: https://github.com/cpw/modlauncher

    [4]Wiki: https://github.com/SpongePowered/Mixin/wiki

    [5]Javadoc: http://jenkins.liteloader.com/job/Mixin/javadoc/

    [6]#mixin频道: https://discord.gg/tBcwxz2

    [7]Jenkins: https://jenkins.liteloader.com/view/Other/job/Mixin/

    [8]https://repo.spongepowered.org/repository/maven-public/

    [9]https://files.minecraftforge.net/maven/

    [10]注解处理器: https://github.com/SpongePowered/Mixin/wiki/Using-the-Mixin-Annotation-Processor

    [11]Minecraft Forge: https://minecraftforge.net/

    [12]MixinGradle: https://github.com/SpongePowered/MixinGradle

    [13]MixinGradle README: https://github.com/SpongePowered/MixinGradle/blob/master/README.md

    [14]Minecraft Development for IntelliJ IDEA: https://plugins.jetbrains.com/idea/plugin/8327

    [15]DemonWav: https://github.com/demonwav


    编程悟道
    自制软件研发、软件商店,全栈,ARTS 、架构,模型,原生系统,后端(Node、React)以及跨平台技术(Flutter、RN).vue.js react.js next.js express koa hapi uniapp Astro
     最新文章