команди

Версия Minecraft
1.16.5
API
Forge
В одиночном мире команд отображаютса но на сервах нет


Java:
@SubscribeEvent
    public static void onRegisterCommandEvent(RegisterCommandsEvent event){
        CommandDispatcher<CommandSource> commandDispatcher =event.getDispatcher();
        addbind.register(commandDispatcher);
        spawn.register(commandDispatcher);
        vanish.register(commandDispatcher);
    }


Java:
package com.example.examplemod;

import com.mojang.brigadier.Command;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
import net.minecraft.util.text.ITextComponent;

public class addbind implements Command<CommandSource> {
    private static final addbind CMD = new addbind();

    public static void register(CommandDispatcher<CommandSource> dispatcher) {
        LiteralArgumentBuilder<CommandSource> addbind = Commands.literal("addbind")
                .requires((commandSource -> commandSource.hasPermission(0)))
                .executes(CMD);

        dispatcher.register(addbind);
    }

    @Override
    public int run(CommandContext<CommandSource> context) throws CommandSyntaxException {
        System.out.println(context);
        Minecraft.getInstance().setScreen(new TestGui());
        return 0;
    }
}
class spawn implements Command<CommandSource> {
    private static final spawn CMD = new spawn();

    public static void register(CommandDispatcher<CommandSource> dispatcher) {
        LiteralArgumentBuilder<CommandSource> spawn = Commands.literal("s")
                .requires((commandSource -> commandSource.hasPermission(0)))
                .executes(CMD);

        dispatcher.register(spawn);
    }

    @Override
    public int run(CommandContext<CommandSource> context) throws CommandSyntaxException {
        System.out.println(context);
        ((ClientPlayerEntity) Minecraft.getInstance().player).chat("/spawn");

        return 0;
    }
}
class vanish implements Command<CommandSource> {
    private static final vanish CMD = new vanish();

    public static void register(CommandDispatcher<CommandSource> dispatcher) {
        LiteralArgumentBuilder<CommandSource> vanish = Commands.literal("v")
                .requires((commandSource -> commandSource.hasPermission(0)))
                .executes(CMD);

        dispatcher.register(vanish);
    }

    @Override
    public int run(CommandContext<CommandSource> context) throws CommandSyntaxException {
        System.out.println(context);
        ((ClientPlayerEntity) Minecraft.getInstance().player).chat("/vanish");

        return 0;
    }
}
 
на старих версиях в модах точно есть свои команди что мешает перехвативать отправление команд?
В локальном мире ты имеешь Integrated сервер, к которому ты имеешь непосредственный доступ. К Dedicated-серверам (чужим) ты по умолчанию не имеешь доступ ввиду клиент-серверной архитектуры. Так что серверные команды исполнить на других серверах ты не сможешь, только клиентские.

А вообще, если это клиентские команды, но ты зарегистрировал их на сервере (не уверен насчёт RegisterCommandsEvent), то они и будут доступны только на сервере. Попробуй сделать регистрацию через какой-нибудь RegisterClientCommandsEvent или другое клиентское событие, работающее с командами.
 
Последнее редактирование:
А где можно глянуть список клиенских ивентов?
RegisterClientCommandsEvent нету такой
Если ты работаешь в Intellij Idea, то нажми два раза Shift и пропиши что-то типа "CommandsEvent" и поищи те, которые связаны с сервером
 
Попробуй поискать на клиенте что-то типа кэша сообщений в чате, а после сделай проверку на сообщение от клиентского игрока (Вроде в классе NewChatGui есть контейнеры с сообщениями, перебирай содержимое и обрабатывай нужное. Однако для доступа к этим контейнерам возможно придется использовать Access Transformer)
 
Последнее редактирование:
Назад
Сверху