You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft Forge 1.8.9自定义命令参数实现求助

Minecraft Forge 1.8.9 自定义带字符串参数的命令实现方法

1. 创建命令类

新建类继承CommandBase,这是Forge自定义命令的基础类:

import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.util.ChatComponentText;

public class CommandSetText extends CommandBase {
    // 返回命令名称(不含前缀/)
    @Override
    public String getName() {
        return "settext";
    }

    // 返回命令使用提示
    @Override
    public String getCommandUsage(ICommandSender sender) {
        return "/settext <文本内容>";
    }

    // 设置命令权限等级,0为普通玩家可执行
    @Override
    public int getRequiredPermissionLevel() {
        return 0;
    }

    // 命令执行逻辑
    @Override
    public void execute(ICommandSender sender, String[] args) throws CommandException {
        // 校验参数数量
        if (args.length < 1) {
            sender.addChatMessage(new ChatComponentText("用法错误:" + getCommandUsage(sender)));
            return;
        }

        // 拼接参数为完整字符串(支持带空格的文本)
        StringBuilder textBuilder = new StringBuilder();
        for (String arg : args) {
            textBuilder.append(arg).append(" ");
        }
        String inputText = textBuilder.toString().trim();

        // 这里添加你的自定义业务逻辑,比如存储文本、反馈结果等
        sender.addChatMessage(new ChatComponentText("你输入的文本:" + inputText));
    }
}

2. 注册命令

在Mod主类的初始化方法中完成命令注册:

import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.client.ClientCommandHandler;

@Mod(modid = YourMod.MODID, name = YourMod.NAME, version = YourMod.VERSION)
public class YourMod {
    public static final String MODID = "yourmodid";
    public static final String NAME = "你的模组名称";
    public static final String VERSION = "1.0";

    @Mod.Instance(MODID)
    public static YourMod instance;

    // 注册客户端命令
    @Mod.EventHandler
    public void init(FMLInitializationEvent event) {
        ClientCommandHandler.instance.registerCommand(new CommandSetText());
    }

    // 注册服务端命令(如需跨端使用)
    @Mod.EventHandler
    public void serverStarting(FMLServerStartingEvent event) {
        event.registerServerCommand(new CommandSetText());
    }
}

关键说明

  • 若需要支持带空格的文本输入,必须手动拼接args数组元素,因为Forge默认按空格分割参数。
  • getRequiredPermissionLevel返回值:0为普通玩家权限,2为管理员权限,可按需调整。
  • 同时注册客户端和服务端命令,能让命令在单人模式和多人服务器中都生效。

内容的提问来源于stack exchange,提问作者vaclavak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:58:14