Forge Api ;-;
-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Пасани, всем здарова йоу
Сегодня показываю как короче крутые штуки делать да жи ес
Научимся хукать классы и использовать это в своихселфкодах пастах на Forge 1.16.5
Покажу на примере фикса мультиплеера
Для начала, нам нужно скачать срц нашего форж майнкрафта в Intellij
Пишем в любом классе например
Наводимся и нажимаем CTRL+ЛКМ, а далее на Download Sources
После того, как у нас всё скачалось, нам нужно найти класс, который как раз таки отвечает за блокировку мультиплеера и чата
В нашем случае это класс SocialInteractionsService
После того, как мы нашли нужный класс, создаём у себя в проекте пекедж hooks (чисто для нашего же удобства)
Далее в этом пекедже создаем класс SocialInteractionsServiceHook
Вставляем туда код из оригинального класса, оверрайдим все булки и возвращаем везде то, что нужно нам
Основная часть уже готова нам осталось только правильно инициализировать наш хук
Для этого создадим незамысловатую утилиту
Далее заходим в наш метод инита и кумарим
Где mc - экземпляр нужного нам класса
Minecraft.class, SocialInteractionsService.class то, что мы заменяем АКА
Ну и соответственно SocialInteractionsServiceHook() - наш хук.
После всех этих действий запускаем майнкрафт и видим чудо, мультиплеер и чат работают!
Пока чумбы, спасибо за внимание.
Сегодня показываю как короче крутые штуки делать да жи ес
Научимся хукать классы и использовать это в своих
Покажу на примере фикса мультиплеера
Для начала, нам нужно скачать срц нашего форж майнкрафта в Intellij
Пишем в любом классе например
Java:
Minecraft
После того, как у нас всё скачалось, нам нужно найти класс, который как раз таки отвечает за блокировку мультиплеера и чата
В нашем случае это класс SocialInteractionsService
Java:
package com.mojang.authlib.minecraft;
import java.util.UUID;
public interface SocialInteractionsService {
boolean serversAllowed();
boolean realmsAllowed();
boolean chatAllowed();
boolean isBlockedPlayer(UUID var1);
}
Далее в этом пекедже создаем класс SocialInteractionsServiceHook
Вставляем туда код из оригинального класса, оверрайдим все булки и возвращаем везде то, что нужно нам
Java:
public class SocialInteractionsServiceHook implements SocialInteractionsService {
@Override
public boolean serversAllowed() {
return true;
}
@Override
public boolean realmsAllowed() {
return false;
}
@Override
public boolean chatAllowed() {
return true;
}
@Override
public boolean isBlockedPlayer(UUID var1) {
return false;
}
}
Для этого создадим незамысловатую утилиту
Java:
public class Reflection<T> {
private final Object Instance;
private final Class<?> localClass;
private final Field localField;
private Reflection(Object Instance, Class<?> clas, Field field) {
this.Instance = Instance;
this.localClass = clas;
localField = field;
}
public Reflection(Object Instance, Class<?> from, Class<?> toGet) {
this(Instance, from, getFromClazz(from, toGet));
}
public void setValue(T value) {
setValue(Instance, value);
}
public void setValue(Object instance, T value) {
try {
Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");
unsafeField.setAccessible(true);
Unsafe UNSAFE = (Unsafe) unsafeField.get(null);
long PROFILER_OFFSET = UNSAFE.objectFieldOffset(localField);
UNSAFE.putObject(instance, PROFILER_OFFSET, value);
} catch (Exception ignored) {
}
}
private static Field getFromClazz(Class<?> from, Class<?> toGet) {
Field local = null;
for (Field tracker : from.getDeclaredFields()) {
if (tracker.getType().equals(toGet)) {
local = tracker;
break;
}
}
return local;
}
}
Java:
new Reflection(mc, Minecraft.class, SocialInteractionsService.class).setValue(new SocialInteractionsServiceHook());
Minecraft.class, SocialInteractionsService.class то, что мы заменяем АКА
Minecraft.class:
/* field */
private final SocialInteractionsService socialInteractionsService;
После всех этих действий запускаем майнкрафт и видим чудо, мультиплеер и чат работают!
Пока чумбы, спасибо за внимание.