Гайд Хуки Forge 1.16.5

Forge Api ;-;
Начинающий
Статус
Оффлайн
Регистрация
3 Май 2023
Сообщения
775
Реакции[?]
18
Поинты[?]
13K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Пасани, всем здарова йоу

Сегодня показываю как короче крутые штуки делать да жи ес

Научимся хукать классы и использовать это в своих селфкодах пастах на Forge 1.16.5

Покажу на примере фикса мультиплеера

Для начала, нам нужно скачать срц нашего форж майнкрафта в Intellij

Пишем в любом классе например
Java:
Minecraft
Наводимся и нажимаем CTRL+ЛКМ, а далее на Download Sources

После того, как у нас всё скачалось, нам нужно найти класс, который как раз таки отвечает за блокировку мультиплеера и чата
В нашем случае это класс SocialInteractionsService
Java:
package com.mojang.authlib.minecraft;

import java.util.UUID;

public interface SocialInteractionsService {
    boolean serversAllowed();

    boolean realmsAllowed();

    boolean chatAllowed();

    boolean isBlockedPlayer(UUID var1);
}
После того, как мы нашли нужный класс, создаём у себя в проекте пекедж hooks (чисто для нашего же удобства)

Далее в этом пекедже создаем класс 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());
Где mc - экземпляр нужного нам класса
Minecraft.class, SocialInteractionsService.class то, что мы заменяем АКА

Minecraft.class:
/* field */

private final SocialInteractionsService socialInteractionsService;
Ну и соответственно SocialInteractionsServiceHook() - наш хук.

После всех этих действий запускаем майнкрафт и видим чудо, мультиплеер и чат работают!

Пока чумбы, спасибо за внимание.
 
Начинающий
Статус
Оффлайн
Регистрация
20 Июн 2024
Сообщения
252
Реакции[?]
1
Поинты[?]
1K
Пасани, всем здарова йоу

Сегодня показываю как короче крутые штуки делать да жи ес

Научимся хукать классы и использовать это в своих селфкодах пастах на Forge 1.16.5

Покажу на примере фикса мультиплеера

Для начала, нам нужно скачать срц нашего форж майнкрафта в Intellij

Пишем в любом классе например
Java:
Minecraft
Наводимся и нажимаем CTRL+ЛКМ, а далее на Download Sources

После того, как у нас всё скачалось, нам нужно найти класс, который как раз таки отвечает за блокировку мультиплеера и чата
В нашем случае это класс SocialInteractionsService
Java:
package com.mojang.authlib.minecraft;

import java.util.UUID;

public interface SocialInteractionsService {
    boolean serversAllowed();

    boolean realmsAllowed();

    boolean chatAllowed();

    boolean isBlockedPlayer(UUID var1);
}
После того, как мы нашли нужный класс, создаём у себя в проекте пекедж hooks (чисто для нашего же удобства)

Далее в этом пекедже создаем класс 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());
Где mc - экземпляр нужного нам класса
Minecraft.class, SocialInteractionsService.class то, что мы заменяем АКА

Minecraft.class:
/* field */

private final SocialInteractionsService socialInteractionsService;
Ну и соответственно SocialInteractionsServiceHook() - наш хук.

После всех этих действий запускаем майнкрафт и видим чудо, мультиплеер и чат работают!

Пока чумбы, спасибо за внимание.
:CoolCat:
 
Начинающий
Статус
Оффлайн
Регистрация
4 Июл 2024
Сообщения
84
Реакции[?]
3
Поинты[?]
2K
Пасани, всем здарова йоу

Сегодня показываю как короче крутые штуки делать да жи ес

Научимся хукать классы и использовать это в своих селфкодах пастах на Forge 1.16.5

Покажу на примере фикса мультиплеера

Для начала, нам нужно скачать срц нашего форж майнкрафта в Intellij

Пишем в любом классе например
Java:
Minecraft
Наводимся и нажимаем CTRL+ЛКМ, а далее на Download Sources

После того, как у нас всё скачалось, нам нужно найти класс, который как раз таки отвечает за блокировку мультиплеера и чата
В нашем случае это класс SocialInteractionsService
Java:
package com.mojang.authlib.minecraft;

import java.util.UUID;

public interface SocialInteractionsService {
    boolean serversAllowed();

    boolean realmsAllowed();

    boolean chatAllowed();

    boolean isBlockedPlayer(UUID var1);
}
После того, как мы нашли нужный класс, создаём у себя в проекте пекедж hooks (чисто для нашего же удобства)

Далее в этом пекедже создаем класс 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());
Где mc - экземпляр нужного нам класса
Minecraft.class, SocialInteractionsService.class то, что мы заменяем АКА

Minecraft.class:
/* field */

private final SocialInteractionsService socialInteractionsService;
Ну и соответственно SocialInteractionsServiceHook() - наш хук.

После всех этих действий запускаем майнкрафт и видим чудо, мультиплеер и чат работают!

Пока чумбы, спасибо за внимание.
загруженное.jpg
 
Сверху Снизу