• MONEY за подписку! Ничего делать не надо совсем, всего-то подписаться на тг одмена и нажать кнопку "Принять участие" в розыгрыше: https://t.me/govthing/7650

Часть функционала AutoServerSetup

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
25 Янв 2024
Сообщения
519
Реакции
3
Выберите загрузчик игры
  1. Fabric
  2. OptiFine
  3. ForgeOptiFine
AutoServerSetup - уникальная функция с появлением которой полностью отпадает надобность в покупке конфигов. Т.к вы сам девелопер сможет настраивать определенные модули под разные сервера

1.Делаем основу
Создадим enum (при надобности можно добавить еще сервера):
Server.java:
Expand Collapse Copy
package dev.lasio.wuq.systems.server;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;

@RequiredArgsConstructor
[USER=270918]@Getter[/USER]
public enum Server {
    REALYWORLD("RealyWorld"),
    FUNTIME("FunTime"),
    SPOOKYTIME("SpookyTime"),
    HOLYWORLD("HolyWorld");

    final String ReadableName;

    public static boolean isValid(String name) {
        return Arrays.stream(values()).anyMatch(s -> s.name().equalsIgnoreCase(name));
    }

    public static List<String> getAllNames() {
        return Arrays.stream(values()).map(Enum::name).map(String::toLowerCase).toList();
    }

    public static Server getByName(String name) {
        return Arrays.stream(values())
                .filter(s -> s.name().equalsIgnoreCase(name))
                .findFirst()
                .orElse(null);
    }
}
Создадим интерфейс (для модулей):
IServerOptionable:
Expand Collapse Copy
package dev.lasio.wuq.systems.server;

public interface IServerOptionable {
    default void setupToServer(Server server) {
    }
    default boolean hasAutoServerSetup() {
        return false;
    }
}
Изменяем ваш суперкласс модуля :
Module.java:
Expand Collapse Copy
public class Module implements IServerOptionable {
2. Пример :
Теперь в любой из ваших модулей можно настроить под любой сервер,сначало изменяем hasAutoServerSetup на true и в setupToServer делаем вашу логику пример:
setupToServer:
Expand Collapse Copy
   [USER=1367676]@override[/USER]
    public void setupToServer(Server server) {
        switch (server) {
            case HOLYWORLD, REALYWORLD -> {
                this.toggle();
                display.setValue(true);
            }
            case FUNTIME, SPOOKYTIME -> {
                this.toggle();
            }
        }
    }
3.Создание комманды (для удобства можно сделать и гуишкой) :
Создадим аргумент
ServerArgumentType:
Expand Collapse Copy
package dev.lasio.wuq.features.command.arguments;

import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import dev.lasio.wuq.systems.server.Server;
import net.minecraft.command.CommandSource;
import net.minecraft.text.Text;

import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.CompletableFuture;

public class ServerArgumentType implements ArgumentType<Server> {

    private static final Collection<String> EXAMPLES = Arrays.asList("realyworld", "funtime", "holyworld");

    private static final DynamicCommandExceptionType INVALID_SERVER =
            new DynamicCommandExceptionType(name -> Text.literal("Сервер с именем '" + name + "' не найден."));

    public static ServerArgumentType create() {
        return new ServerArgumentType();
    }

    [USER=1367676]@override[/USER]
    public Server parse(StringReader reader) throws CommandSyntaxException {
        String name = reader.readString();
        if (!Server.isValid(name)) throw INVALID_SERVER.create(name);
        return Server.getByName(name);
    }

    [USER=1367676]@override[/USER]
    public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
        return CommandSource.suggestMatching(Server.getAllNames(), builder);
    }

    [USER=1367676]@override[/USER]
    public Collection<String> getExamples() {
        return EXAMPLES;
    }
}
Далее в вашу конфиг или любую другую команду вставляем
ConfigCommand.java:
Expand Collapse Copy
        builder.then(literal("setup") .then(argument("server", ServerArgumentType.create())
                        .executes(context -> {
                            Server server = context.getArgument("server", Server.class);

                            int setuppedModules = 0;
                            for (Module module : ModuleRepository.getModules()) {
                                if (module.hasAutoServerSetup()) {
                                    module.setupToServer(server);
                                    setuppedModules++;
                                }
                            }
                            IMessageSender.print("Успешно настроил " + setuppedModules + " модулей под сервер " + server.getReadableName());
                            return SINGLE_SUCCESS;
                        })
                )
        );
Все готово!
 
/up одобрите уже
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
AutoServerSetup - уникальная функция с появлением которой полностью отпадает надобность в покупке конфигов. Т.к вы сам девелопер сможет настраивать определенные модули под разные сервера

1.Делаем основу
Создадим enum (при надобности можно добавить еще сервера):
Server.java:
Expand Collapse Copy
package dev.lasio.wuq.systems.server;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;

@RequiredArgsConstructor
[USER=270918]@Getter[/USER]
public enum Server {
    REALYWORLD("RealyWorld"),
    FUNTIME("FunTime"),
    SPOOKYTIME("SpookyTime"),
    HOLYWORLD("HolyWorld");

    final String ReadableName;

    public static boolean isValid(String name) {
        return Arrays.stream(values()).anyMatch(s -> s.name().equalsIgnoreCase(name));
    }

    public static List<String> getAllNames() {
        return Arrays.stream(values()).map(Enum::name).map(String::toLowerCase).toList();
    }

    public static Server getByName(String name) {
        return Arrays.stream(values())
                .filter(s -> s.name().equalsIgnoreCase(name))
                .findFirst()
                .orElse(null);
    }
}
Создадим интерфейс (для модулей):
IServerOptionable:
Expand Collapse Copy
package dev.lasio.wuq.systems.server;

public interface IServerOptionable {
    default void setupToServer(Server server) {
    }
    default boolean hasAutoServerSetup() {
        return false;
    }
}
Изменяем ваш суперкласс модуля :
Module.java:
Expand Collapse Copy
public class Module implements IServerOptionable {
2. Пример :
Теперь в любой из ваших модулей можно настроить под любой сервер,сначало изменяем hasAutoServerSetup на true и в setupToServer делаем вашу логику пример:
setupToServer:
Expand Collapse Copy
   [USER=1367676]@override[/USER]
    public void setupToServer(Server server) {
        switch (server) {
            case HOLYWORLD, REALYWORLD -> {
                this.toggle();
                display.setValue(true);
            }
            case FUNTIME, SPOOKYTIME -> {
                this.toggle();
            }
        }
    }
3.Создание комманды (для удобства можно сделать и гуишкой) :
Создадим аргумент
ServerArgumentType:
Expand Collapse Copy
package dev.lasio.wuq.features.command.arguments;

import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import dev.lasio.wuq.systems.server.Server;
import net.minecraft.command.CommandSource;
import net.minecraft.text.Text;

import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.CompletableFuture;

public class ServerArgumentType implements ArgumentType<Server> {

    private static final Collection<String> EXAMPLES = Arrays.asList("realyworld", "funtime", "holyworld");

    private static final DynamicCommandExceptionType INVALID_SERVER =
            new DynamicCommandExceptionType(name -> Text.literal("Сервер с именем '" + name + "' не найден."));

    public static ServerArgumentType create() {
        return new ServerArgumentType();
    }

    [USER=1367676]@override[/USER]
    public Server parse(StringReader reader) throws CommandSyntaxException {
        String name = reader.readString();
        if (!Server.isValid(name)) throw INVALID_SERVER.create(name);
        return Server.getByName(name);
    }

    [USER=1367676]@override[/USER]
    public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
        return CommandSource.suggestMatching(Server.getAllNames(), builder);
    }

    [USER=1367676]@override[/USER]
    public Collection<String> getExamples() {
        return EXAMPLES;
    }
}
Далее в вашу конфиг или любую другую команду вставляем
ConfigCommand.java:
Expand Collapse Copy
        builder.then(literal("setup") .then(argument("server", ServerArgumentType.create())
                        .executes(context -> {
                            Server server = context.getArgument("server", Server.class);

                            int setuppedModules = 0;
                            for (Module module : ModuleRepository.getModules()) {
                                if (module.hasAutoServerSetup()) {
                                    module.setupToServer(server);
                                    setuppedModules++;
                                }
                            }
                            IMessageSender.print("Успешно настроил " + setuppedModules + " модулей под сервер " + server.getReadableName());
                            return SINGLE_SUCCESS;
                        })
                )
        );
Все готово!
почему никто раньше до этого не додумался.. /up
 
можно на excellent?
 
AutoServerSetup - уникальная функция с появлением которой полностью отпадает надобность в покупке конфигов. Т.к вы сам девелопер сможет настраивать определенные модули под разные сервера

1.Делаем основу
Создадим enum (при надобности можно добавить еще сервера):
Server.java:
Expand Collapse Copy
package dev.lasio.wuq.systems.server;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.List;

@RequiredArgsConstructor
[USER=270918]@Getter[/USER]
public enum Server {
    REALYWORLD("RealyWorld"),
    FUNTIME("FunTime"),
    SPOOKYTIME("SpookyTime"),
    HOLYWORLD("HolyWorld");

    final String ReadableName;

    public static boolean isValid(String name) {
        return Arrays.stream(values()).anyMatch(s -> s.name().equalsIgnoreCase(name));
    }

    public static List<String> getAllNames() {
        return Arrays.stream(values()).map(Enum::name).map(String::toLowerCase).toList();
    }

    public static Server getByName(String name) {
        return Arrays.stream(values())
                .filter(s -> s.name().equalsIgnoreCase(name))
                .findFirst()
                .orElse(null);
    }
}
Создадим интерфейс (для модулей):
IServerOptionable:
Expand Collapse Copy
package dev.lasio.wuq.systems.server;

public interface IServerOptionable {
    default void setupToServer(Server server) {
    }
    default boolean hasAutoServerSetup() {
        return false;
    }
}
Изменяем ваш суперкласс модуля :
Module.java:
Expand Collapse Copy
public class Module implements IServerOptionable {
2. Пример :
Теперь в любой из ваших модулей можно настроить под любой сервер,сначало изменяем hasAutoServerSetup на true и в setupToServer делаем вашу логику пример:
setupToServer:
Expand Collapse Copy
   [USER=1367676]@override[/USER]
    public void setupToServer(Server server) {
        switch (server) {
            case HOLYWORLD, REALYWORLD -> {
                this.toggle();
                display.setValue(true);
            }
            case FUNTIME, SPOOKYTIME -> {
                this.toggle();
            }
        }
    }
3.Создание комманды (для удобства можно сделать и гуишкой) :
Создадим аргумент
ServerArgumentType:
Expand Collapse Copy
package dev.lasio.wuq.features.command.arguments;

import com.mojang.brigadier.StringReader;
import com.mojang.brigadier.arguments.ArgumentType;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.DynamicCommandExceptionType;
import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import dev.lasio.wuq.systems.server.Server;
import net.minecraft.command.CommandSource;
import net.minecraft.text.Text;

import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.CompletableFuture;

public class ServerArgumentType implements ArgumentType<Server> {

    private static final Collection<String> EXAMPLES = Arrays.asList("realyworld", "funtime", "holyworld");

    private static final DynamicCommandExceptionType INVALID_SERVER =
            new DynamicCommandExceptionType(name -> Text.literal("Сервер с именем '" + name + "' не найден."));

    public static ServerArgumentType create() {
        return new ServerArgumentType();
    }

    [USER=1367676]@override[/USER]
    public Server parse(StringReader reader) throws CommandSyntaxException {
        String name = reader.readString();
        if (!Server.isValid(name)) throw INVALID_SERVER.create(name);
        return Server.getByName(name);
    }

    [USER=1367676]@override[/USER]
    public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
        return CommandSource.suggestMatching(Server.getAllNames(), builder);
    }

    [USER=1367676]@override[/USER]
    public Collection<String> getExamples() {
        return EXAMPLES;
    }
}
Далее в вашу конфиг или любую другую команду вставляем
ConfigCommand.java:
Expand Collapse Copy
        builder.then(literal("setup") .then(argument("server", ServerArgumentType.create())
                        .executes(context -> {
                            Server server = context.getArgument("server", Server.class);

                            int setuppedModules = 0;
                            for (Module module : ModuleRepository.getModules()) {
                                if (module.hasAutoServerSetup()) {
                                    module.setupToServer(server);
                                    setuppedModules++;
                                }
                            }
                            IMessageSender.print("Успешно настроил " + setuppedModules + " модулей под сервер " + server.getReadableName());
                            return SINGLE_SUCCESS;
                        })
                )
        );
Все готово!
/del useless
 
ждём на excellent
 
нихуя, можно не только так ее юзать к примеру функция онли на рв работает и если текущий сервер не рв то выводить в чат и отключать да и так применений куча
 
нихуя, можно не только так ее юзать к примеру функция онли на рв работает и если текущий сервер не рв то выводить в чат и отключать да и так применений куча
можно на экселлент?
 
нихуя, можно не только так ее юзать к примеру функция онли на рв работает и если текущий сервер не рв то выводить в чат и отключать да и так применений куча
ну хз я сделал около недели назад и удалил сразу же
 
Ну по сути да но функционал можно придумать
 
ну хз, типо можно сделать чтобы оно предлагало, но не ставило автоматом
 
Назад
Сверху Снизу