Простой API, использующий сопоставления деобфускации MCP, помогающий вам вводить моды во время выполнения.
С помощью этой библиотеки вы можете внедрять код в Minecraft во время выполнения! Вы можете написать программу, которая сделает это после того, как Minecraft (Vanilla) уже был запущен, но вы также можете использовать ее для подключения к методам minecraft из любого другого контекста (например, аддонов Labymod/5zigMod, Forge, Liteloader). Для работы с запутанной средой minecraft библиотека включает оболочку отражения, которая автоматически загружает карту деобфускации MCP и предоставляет вам доступ к классам minecraft с помощью соответствующих имён MCP.
Maven:
jitpack.io https://jitpack.io com.github.Zortax MinecraftInjectionAPI v1.0
Gradle:
allprojects {репозитории {... maven {url 'https://jitpack.io'}}} зависимости {реализация 'com.github.Zortax: MinecraftInjectionAPI: v1.0 '}
Вот пример класса, который должен объяснить, что делает MinecraftInjectionAPI:
package de.zortax.injection. example.transformer; import de.zortax.injection.injector.Flags; import de.zortax.injection.injector.FunctionHook; import de.zortax.injection.injector.McAgen t; import de.zortax.injection.injector.RuntimeInjector; public class MinecraftTransformer {public static void main (String [] args) {//Включаем вывод консоли Flags.verbose = true; //Объединение аргументов для передачи их агенту StringBuilder sb = new StringBuilder (); для (Строковый аргумент: аргументы) sb.append (аргумент) .append (";"); //мужской объект выполняет метод onAgentLoaded () после завершения загрузки sb.append ("- load-hook-class; de.zortax.injection.example.transformer.MinecraftTransformer; - load-hook-method; onAgentLoaded "); //прикрепляем агент к виртуальной машине minecraft RuntimeInjector.attachToVm (sb.toString ()); }//этот метод будет вызываться автоматически, как мы сказали McAgent сделать это с помощью аргументов public static void onAgentLoaded () {//добавляем этот класс в качестве преобразователя для регистрации наших перехватчиков функций McAgent.addTransformer (MinecraftTransformer.class); //вызываем restransform () для изменения байт-кода классов minecraft, чтобы активировать наши хуки McAgent.retransform (); }//это ДЕЙСТВИТЕЛЬНО работает в запутанной среде @FunctionHook (targetClass = "net/minecraft/client/Minecraft", targetMethod = "runTick") public static void onTick () {//Этот метод вызывается 20 раз в секунду System .вне. println ("Отметили!"); } @FunctionHook (targetClass = "net/minecraft/client/renderer/entity/RendererLivingEntity", targetMethod = "renderName") public static void onNameRender () {//Не делайте этого, если вы не хотите уничтожить вывод журнала запуска Minecraft ... System.out.println ("Имя отображено!"); }}
Этот класс может быть скомпилирован в толстую банку (которая включает все зависимости). Уже упомянутая оболочка отражения также проста в использовании. Вот как вы можете проверить, работает ли minecraft на 64-битной JVM, используя метод в классе Minecraft
:
boolean is64bit = ( логическое) McpManager.getWrappedClass ("net/minecraft/client/Minecraft") .callStaticGetter ("getMinecraft") .callGetter ("isJava64bit"). getObject ();
Если вы работают с forge или деобфусцированной средой, нет необходимости использовать эту оболочку. Вместо этого вам понадобятся классы, которые вы хотите использовать напрямую в качестве зависимости сборки (вы не должны помещать их в jar, поскольку они уже доступны в JVM minecraft).