java - Minecraft Forge 自定义播放器命令问题

标签 java minecraft minecraft-forge

我第一次尝试创建一个新命令,并且正在关注 this tutorial 这有点旧,但我相信仍然可以使用。完成后,我尝试运行我的 mod,一切运行良好,但我的命令不存在。这是我的代码:

public class MainRegistry {
    @EventHandler
    public void serverStart(FMLServerStartingEvent event) {
        MinecraftServer server = MinecraftServer.getServer();
        ICommandManager command = server.getCommandManager();
        ServerCommandManager manager = (ServerCommandManager) command;
        manager.registerCommand(new FireBall5());
    }

}

还有我实际的 CommandBase 类:

public class FireBall5 extends CommandBase {
    @Override
    public String getCommandName() {
        return "fireball 5";
    }

    @Override
    public String getCommandUsage(ICommandSender var1) {
        return "Shoots fireball with explosive power 5";
    }

    @Override
    public void processCommand(ICommandSender icommandsender, String[] var2) {
        if (icommandsender instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) icommandsender;
            World par2World = player.worldObj;
            if (!par2World.isRemote)
                par2World.spawnEntityInWorld(new PlayerFireBall(par2World, 5.0f));
        }

    }

}

它正在调用我自己创建的实体 PlayerFireBall,它只是一个具有增强爆炸力的火球。

最佳答案

命令不能包含空格。要执行您的命令,请遵循以下步骤:

@Override
public String getCommandName() {
    return "fireball"; // Remove the argument - Leave the command only.
}

参数必须这样读:

{
    if (sender instanceof EntityPlayer) {
        final EntityPlayer player = (EntityPlayer) sender;
        final World par2World = player.worldObj;

        final float power;

    // The "default" method:
        // power = 5; // Write the default value here!
        if (var2.length > 0) try {
            power = Float.parseFloat(var2[0]); // Parse the first argument.
        } catch(NumberFormatException ex) {}

    // The "validation" method:
        if (var2.length == 0) {
            sender.sendMessage("You forgot to specify the fireball power.");
            return;
        }
        if ( !var2[0].matches("\\d{2}")) { // Asserts this argument is two digits
            sender.sendMessage("Incorrect.");
            return;
        }
        power = Float.parseFloat(var2[0]);

        if ( !par2World.isRemote)
            par2World.spawnEntityInWorld(new PlayerFireBall(par2World, power));
    }
}

阅读更多:

关于java - Minecraft Forge 自定义播放器命令问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196339/

相关文章:

java - 旋转矩阵的逆序

java - 如何解决 "The required mechanism ' BASIC' 在 HttpAuthenticationFactory 的机制 [KEYCLOAK] 中不可用”

java - 通过添加/减去相应的值来合并 map

java - 在 :reobfJar java. util.zip.ZipException 处编译 mod 时出现问题:重复条目

c++ - 与 Minecraft bukkit 服务器握手 - 发送服务器主机字段失败

java - 尝试使用forge修改minecraft 1.12.2的问题。无法包装和测试构建

maven - Intellij IDEA Maven 导入问题

java - 如何在间隔内重新加载jqgrid

java - 通过二维数组重新开始迭代

java - 在我的世界 1.8 上使用 forge api 创建生物