/ MinecraftInjectionAPI

Простой 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).

Оцените статью
Gamicon.ru
Добавить комментарий