Гайд Пишем базу Forge 1.16.5

Начинающий
Статус
Онлайн
Регистрация
4 Июл 2024
Сообщения
81
Реакции[?]
2
Поинты[?]
1K

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

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

Спасибо!

Приветствую, это небольшой гайд о том, как написать свою базу на Forge 1.16.5.

И так, давайте начнём:
1. Установим в нашу idea плагин -
Пожалуйста, авторизуйтесь для просмотра ссылки.


2. После установки выбираем File > New > Project > Minecraft (в самом низу). И настраиваем под себя (Use Mixins обязательно)

3. Настроим наш главный класс, у меня это Extend
Extend.java:
@Mod("extend")
public class Extend {

    public Extend() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }
}
ваш главный класс должен выглядить примерно так, но в поле @Mod("вашмод") заместо "вашмод", должно быть ваше название мода/чита.

4. Создадим модули и бинд (при нажатии на клавиатуре кнопки вкл/выкл функции):
Первое создадим package modules, в нём создадим enum Category и пропишим код:
Category.java:
public enum Category {
    COMBAT,
    MOVEMENT,
    RENDER,
    UTILS,
    CLIENT
}
Далее создадим класс Module:
Module.java:
public class Module {
    private final String name;
    private int binding;
    private boolean enable;
    private final Category category;

    public static Minecraft mc = Minecraft.getInstance();

    public Module(String name, Category category, int binding) {
        this.name = name;
        this.category = category;
        this.binding = binding;
    }

    public String getName() {
        return name;
    }

    public int getBinding() {
        return binding;
    }

    public void setBinding(int binding) {
        this.binding = binding;
    }

    public boolean isEnable() {
        return enable;
    }

    public void setEnable(boolean enable) {
        this.enable = enable;
        if (enable) {
            this.onEnable();
        } else {
            this.onDisable();
        }
    }

    public Category getCategory() {
        return category;
    }

    public void onEnable() {
        mc.player.sendMessage(ITextComponent.nullToEmpty(TextFormatting.GREEN + getName() + TextFormatting.RESET + " was Enabled!"), mc.player.getUUID());

        MinecraftForge.EVENT_BUS.register(this);
    }

    public void onDisable() {
        mc.player.sendMessage(ITextComponent.nullToEmpty(TextFormatting.RED + getName() + TextFormatting.RESET + " was Disabled!"), mc.player.getUUID());

        MinecraftForge.EVENT_BUS.unregister(this);
    }

    public void toggle() {
        setEnable(! enable);
    }
}
Пояснение кода:
name, binding, category и enable - переменные для работы с будущими функциями, название, бинд, категория и т.д.

get...и set... думаю по названиям понятно, что getter (get...) передаёт уже имеющиеся значения, а setter (set...) устанавливает значение.

onEnable и onDisable отвечают за регистрацию вкл и выкл функции, например в моём коде видны строки, которые выводят текст в чат при вкл и выкл функции.

toggle сама реализация того, чтобы при включении функция работала, а при выключении нет.

Думаю с этим закончили, остались Key и ModuleManager.


5. Напишем ModuleManager для инициализации функций:
ModuleManager.java:
public class ModuleManager {
    public static ArrayList<Module> modules = new ArrayList<>();

    public static void list() {
        add(new Speed());
        add(new NoFall());
    }

    public static void add(Module m) {
        modules.add(m);
    }

    public static ArrayList<Module> getModules() {
        return modules;
    }

    public static void keyPressed(int key, int action) {
        if (action == 1) {
            for (Module m : getModules()) {
                if (m.getBinding() == key) {
                    m.toggle();
                }
            }
        }
    }
}
опишем что за что отвечает и делает.
ArrayList<Module> создаёт список, который будет хранить наши функции.

public static void list() метод в котором будет инициализировать наши функции.

public static ArrayList<Module> getModules() гетает все наши фукнции.

public static void add(Module m) сокращение чтобы не писать modules.add() мы пишем просто add()

public static void keyPressed(int key, int action) логика нажатия на клавишу и действия при нажатии.



6. Почти конец, остался Key и инициализация всего в гл.классе:
Key.java:
public class Key {
    private final Minecraft mc = Minecraft.getInstance();

    @SubscribeEvent
    public void onKeyPress(InputEvent.KeyInputEvent e) {
        if (mc.player != null && mc.level != null && mc.screen == null) {
            ModuleManager.keyPressed(e.getKey(), e.getAction());
        }
    }
}
что делает каждая часть.

@SubscribeEvent ну думаю по названию будет понятно, что это нужно для работы ивентов.
public void onKeyPress(InputEvent.KeyInputEvent e) создаём метод и в параметрах задаём ивент для наших нажатий.
if (mc.player != null && mc.level != null && mc.screen == null) проверки на то чтобы игрок находился в мире или на сервере и чтобы не было открыто настроек и чата.
ModuleManager.keyPressed(e.getKey(), e.getAction()); финальная строчка для работы нажатий, без неё вряд ли бы у вас работали забинженые функции (работали бы, но вкл и выкл вы их не смогли бы).


7. Финал, инициализация всего:
Extend.java:
@Mod("extend")
public class Extend {

    public Extend() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
        MinecraftForge.EVENT_BUS.register(new Key());

        ModuleManager.list();
    }

    private void setup(final FMLCommonSetupEvent event) {
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }
}
Думаю тут всем понятно что мы инициализируем Key и ModuleManager.list(); для их работы.





Вот и конец гайда, я бы не сказал что это сложно но, советую немного изучить основы языка программирования Java и основные понятия ООП. В дальнейшем без них будет довольно трудно, да и многих любимый ChatGPT может и не помочь.
 
Новичок
Статус
Оффлайн
Регистрация
21 Апр 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
я щас пытаюсь сделать по твоему тутору,вот Первое создадим package modules, в нём создадим enum Category и пропишим код: это надо создать пакет packsge modules,modules или module,или вообще класс создать
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2021
Сообщения
1,021
Реакции[?]
18
Поинты[?]
22K
Приветствую, это небольшой гайд о том, как написать свою базу на Forge 1.16.5.

И так, давайте начнём:
1. Установим в нашу idea плагин -
Пожалуйста, авторизуйтесь для просмотра ссылки.


2. После установки выбираем File > New > Project > Minecraft (в самом низу). И настраиваем под себя (Use Mixins обязательно)

3. Настроим наш главный класс, у меня это Extend
Extend.java:
@Mod("extend")
public class Extend {

    public Extend() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }
}
ваш главный класс должен выглядить примерно так, но в поле @Mod("вашмод") заместо "вашмод", должно быть ваше название мода/чита.

4. Создадим модули и бинд (при нажатии на клавиатуре кнопки вкл/выкл функции):
Первое создадим package modules, в нём создадим enum Category и пропишим код:
Category.java:
public enum Category {
    COMBAT,
    MOVEMENT,
    RENDER,
    UTILS,
    CLIENT
}
Далее создадим класс Module:
Module.java:
public class Module {
    private final String name;
    private int binding;
    private boolean enable;
    private final Category category;

    public static Minecraft mc = Minecraft.getInstance();

    public Module(String name, Category category, int binding) {
        this.name = name;
        this.category = category;
        this.binding = binding;
    }

    public String getName() {
        return name;
    }

    public int getBinding() {
        return binding;
    }

    public void setBinding(int binding) {
        this.binding = binding;
    }

    public boolean isEnable() {
        return enable;
    }

    public void setEnable(boolean enable) {
        this.enable = enable;
        if (enable) {
            this.onEnable();
        } else {
            this.onDisable();
        }
    }

    public Category getCategory() {
        return category;
    }

    public void onEnable() {
        mc.player.sendMessage(ITextComponent.nullToEmpty(TextFormatting.GREEN + getName() + TextFormatting.RESET + " was Enabled!"), mc.player.getUUID());

        MinecraftForge.EVENT_BUS.register(this);
    }

    public void onDisable() {
        mc.player.sendMessage(ITextComponent.nullToEmpty(TextFormatting.RED + getName() + TextFormatting.RESET + " was Disabled!"), mc.player.getUUID());

        MinecraftForge.EVENT_BUS.unregister(this);
    }

    public void toggle() {
        setEnable(! enable);
    }
}
Пояснение кода:
name, binding, category и enable - переменные для работы с будущими функциями, название, бинд, категория и т.д.

get...и set... думаю по названиям понятно, что getter (get...) передаёт уже имеющиеся значения, а setter (set...) устанавливает значение.

onEnable и onDisable отвечают за регистрацию вкл и выкл функции, например в моём коде видны строки, которые выводят текст в чат при вкл и выкл функции.

toggle сама реализация того, чтобы при включении функция работала, а при выключении нет.

Думаю с этим закончили, остались Key и ModuleManager.


5. Напишем ModuleManager для инициализации функций:
ModuleManager.java:
public class ModuleManager {
    public static ArrayList<Module> modules = new ArrayList<>();

    public static void list() {
        add(new Speed());
        add(new NoFall());
    }

    public static void add(Module m) {
        modules.add(m);
    }

    public static ArrayList<Module> getModules() {
        return modules;
    }

    public static void keyPressed(int key, int action) {
        if (action == 1) {
            for (Module m : getModules()) {
                if (m.getBinding() == key) {
                    m.toggle();
                }
            }
        }
    }
}
опишем что за что отвечает и делает.
ArrayList<Module> создаёт список, который будет хранить наши функции.

public static void list() метод в котором будет инициализировать наши функции.

public static ArrayList<Module> getModules() гетает все наши фукнции.

public static void add(Module m) сокращение чтобы не писать modules.add() мы пишем просто add()

public static void keyPressed(int key, int action) логика нажатия на клавишу и действия при нажатии.



6. Почти конец, остался Key и инициализация всего в гл.классе:
Key.java:
public class Key {
    private final Minecraft mc = Minecraft.getInstance();

    @SubscribeEvent
    public void onKeyPress(InputEvent.KeyInputEvent e) {
        if (mc.player != null && mc.level != null && mc.screen == null) {
            ModuleManager.keyPressed(e.getKey(), e.getAction());
        }
    }
}
что делает каждая часть.

@SubscribeEvent ну думаю по названию будет понятно, что это нужно для работы ивентов.
public void onKeyPress(InputEvent.KeyInputEvent e) создаём метод и в параметрах задаём ивент для наших нажатий.
if (mc.player != null && mc.level != null && mc.screen == null) проверки на то чтобы игрок находился в мире или на сервере и чтобы не было открыто настроек и чата.
ModuleManager.keyPressed(e.getKey(), e.getAction()); финальная строчка для работы нажатий, без неё вряд ли бы у вас работали забинженые функции (работали бы, но вкл и выкл вы их не смогли бы).


7. Финал, инициализация всего:
Extend.java:
@Mod("extend")
public class Extend {

    public Extend() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
        MinecraftForge.EVENT_BUS.register(new Key());

        ModuleManager.list();
    }

    private void setup(final FMLCommonSetupEvent event) {
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }
}
Думаю тут всем понятно что мы инициализируем Key и ModuleManager.list(); для их работы.





Вот и конец гайда, я бы не сказал что это сложно но, советую немного изучить основы языка программирования Java и основные понятия ООП. В дальнейшем без них будет довольно трудно, да и многих любимый ChatGPT может и не помочь.
на фордже врядли кто то сидеть будет)
фабрик/mcp намного лучше, как по мне
 
Начинающий
Статус
Оффлайн
Регистрация
25 Фев 2024
Сообщения
188
Реакции[?]
4
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2021
Сообщения
1,021
Реакции[?]
18
Поинты[?]
22K
Начинающий
Статус
Оффлайн
Регистрация
7 Мар 2024
Сообщения
294
Реакции[?]
6
Поинты[?]
4K
Приветствую, это небольшой гайд о том, как написать свою базу на Forge 1.16.5.

И так, давайте начнём:
1. Установим в нашу idea плагин -
Пожалуйста, авторизуйтесь для просмотра ссылки.


2. После установки выбираем File > New > Project > Minecraft (в самом низу). И настраиваем под себя (Use Mixins обязательно)

3. Настроим наш главный класс, у меня это Extend
Extend.java:
@Mod("extend")
public class Extend {

    public Extend() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }
}
ваш главный класс должен выглядить примерно так, но в поле @Mod("вашмод") заместо "вашмод", должно быть ваше название мода/чита.

4. Создадим модули и бинд (при нажатии на клавиатуре кнопки вкл/выкл функции):
Первое создадим package modules, в нём создадим enum Category и пропишим код:
Category.java:
public enum Category {
    COMBAT,
    MOVEMENT,
    RENDER,
    UTILS,
    CLIENT
}
Далее создадим класс Module:
Module.java:
public class Module {
    private final String name;
    private int binding;
    private boolean enable;
    private final Category category;

    public static Minecraft mc = Minecraft.getInstance();

    public Module(String name, Category category, int binding) {
        this.name = name;
        this.category = category;
        this.binding = binding;
    }

    public String getName() {
        return name;
    }

    public int getBinding() {
        return binding;
    }

    public void setBinding(int binding) {
        this.binding = binding;
    }

    public boolean isEnable() {
        return enable;
    }

    public void setEnable(boolean enable) {
        this.enable = enable;
        if (enable) {
            this.onEnable();
        } else {
            this.onDisable();
        }
    }

    public Category getCategory() {
        return category;
    }

    public void onEnable() {
        mc.player.sendMessage(ITextComponent.nullToEmpty(TextFormatting.GREEN + getName() + TextFormatting.RESET + " was Enabled!"), mc.player.getUUID());

        MinecraftForge.EVENT_BUS.register(this);
    }

    public void onDisable() {
        mc.player.sendMessage(ITextComponent.nullToEmpty(TextFormatting.RED + getName() + TextFormatting.RESET + " was Disabled!"), mc.player.getUUID());

        MinecraftForge.EVENT_BUS.unregister(this);
    }

    public void toggle() {
        setEnable(! enable);
    }
}
Пояснение кода:
name, binding, category и enable - переменные для работы с будущими функциями, название, бинд, категория и т.д.

get...и set... думаю по названиям понятно, что getter (get...) передаёт уже имеющиеся значения, а setter (set...) устанавливает значение.

onEnable и onDisable отвечают за регистрацию вкл и выкл функции, например в моём коде видны строки, которые выводят текст в чат при вкл и выкл функции.

toggle сама реализация того, чтобы при включении функция работала, а при выключении нет.

Думаю с этим закончили, остались Key и ModuleManager.


5. Напишем ModuleManager для инициализации функций:
ModuleManager.java:
public class ModuleManager {
    public static ArrayList<Module> modules = new ArrayList<>();

    public static void list() {
        add(new Speed());
        add(new NoFall());
    }

    public static void add(Module m) {
        modules.add(m);
    }

    public static ArrayList<Module> getModules() {
        return modules;
    }

    public static void keyPressed(int key, int action) {
        if (action == 1) {
            for (Module m : getModules()) {
                if (m.getBinding() == key) {
                    m.toggle();
                }
            }
        }
    }
}
опишем что за что отвечает и делает.
ArrayList<Module> создаёт список, который будет хранить наши функции.

public static void list() метод в котором будет инициализировать наши функции.

public static ArrayList<Module> getModules() гетает все наши фукнции.

public static void add(Module m) сокращение чтобы не писать modules.add() мы пишем просто add()

public static void keyPressed(int key, int action) логика нажатия на клавишу и действия при нажатии.



6. Почти конец, остался Key и инициализация всего в гл.классе:
Key.java:
public class Key {
    private final Minecraft mc = Minecraft.getInstance();

    @SubscribeEvent
    public void onKeyPress(InputEvent.KeyInputEvent e) {
        if (mc.player != null && mc.level != null && mc.screen == null) {
            ModuleManager.keyPressed(e.getKey(), e.getAction());
        }
    }
}
что делает каждая часть.

@SubscribeEvent ну думаю по названию будет понятно, что это нужно для работы ивентов.
public void onKeyPress(InputEvent.KeyInputEvent e) создаём метод и в параметрах задаём ивент для наших нажатий.
if (mc.player != null && mc.level != null && mc.screen == null) проверки на то чтобы игрок находился в мире или на сервере и чтобы не было открыто настроек и чата.
ModuleManager.keyPressed(e.getKey(), e.getAction()); финальная строчка для работы нажатий, без неё вряд ли бы у вас работали забинженые функции (работали бы, но вкл и выкл вы их не смогли бы).


7. Финал, инициализация всего:
Extend.java:
@Mod("extend")
public class Extend {

    public Extend() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
        MinecraftForge.EVENT_BUS.register(new Key());

        ModuleManager.list();
    }

    private void setup(final FMLCommonSetupEvent event) {
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }
}
Думаю тут всем понятно что мы инициализируем Key и ModuleManager.list(); для их работы.





Вот и конец гайда, я бы не сказал что это сложно но, советую немного изучить основы языка программирования Java и основные понятия ООП. В дальнейшем без них будет довольно трудно, да и многих любимый ChatGPT может и не помочь.
Ты создал менеджер для классов и называешь это базой?
 
Начинающий
Статус
Онлайн
Регистрация
4 Июл 2024
Сообщения
81
Реакции[?]
2
Поинты[?]
1K
Начинающий
Статус
Онлайн
Регистрация
4 Июл 2024
Сообщения
81
Реакции[?]
2
Поинты[?]
1K
Это такое говно,взяли базу башрута и обосрали ее🤮
Почему многие думают что это база бушрута, если такой вид баз ещё пендосы использовали xD. Да и если я делаю похоже, это не знаxяит то, что это его база.
 
Начинающий
Статус
Оффлайн
Регистрация
31 Авг 2023
Сообщения
699
Реакции[?]
6
Поинты[?]
5K
Почему многие думают что это база бушрута, если такой вид баз ещё пендосы использовали xD. Да и если я делаю похоже, это не знаxяит то, что это его база.
если ты переименовал классы то это не обозначает, что это мега супер селф код база
 
Начинающий
Статус
Онлайн
Регистрация
4 Июл 2024
Сообщения
81
Реакции[?]
2
Поинты[?]
1K
если ты переименовал классы то это не обозначает, что это мега супер селф код база
Если ты так считаешь то, твоё мнение, я делал для тех кто даже такого не может
если ты переименовал классы то это не обозначает, что это мега супер селф код база
Да и если я делал то, что знаю по опыту по типу просмотра башрута, не значит то что я просто взял его базу и переименовал/переделал.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
31 Авг 2023
Сообщения
699
Реакции[?]
6
Поинты[?]
5K
Если ты так считаешь то, твоё мнение, я делал для тех кто даже такого не может

Да и если я делал то, что знаю по опыту по типу просмотра башрута, не значит то что я просто взял его базу и переименовал/переделал.
вов бро успех добавил категории и то врят-ли ты сам их написал потому что в пхасме такой же код :joycat:
 
Начинающий
Статус
Онлайн
Регистрация
4 Июл 2024
Сообщения
81
Реакции[?]
2
Поинты[?]
1K
Сверху Снизу