当前位置: 首页 > 知识库问答 >
问题:

Minecraft Forge Mod命令不起作用?

孔和风
2023-03-14

我为minecraft 1.8.9编程了一个forge mod,如果玩家输入了命令,每隔20秒就会发送一条消息,当我在单人游戏中输入命令时,它是有效的,但如果我在多人游戏中输入命令,它会说:“未知命令。输入”help“以获取帮助”。下面是command类的代码:

package AutoAd;

import java.util.Timer;
import java.util.TimerTask;

import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandBase;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;
import net.minecraftforge.event.entity.player.PlayerEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;

public class CommandAutoAD extends CommandBase{

    @Override
    public String getCommandName() {
        return "startAutoad";
    }

    @Override
    public String getCommandUsage(ICommandSender sender) {
        return "/startAutoad";
    }

    @Override
    public void processCommand(final ICommandSender sender, String[] args) throws CommandException {
        if(sender instanceof EntityPlayer) {
            Thread t = new Thread() {
                public void run() {
                    EntityPlayer player = (EntityPlayer) sender;
                    for(int i = 0; i<=20; i++) {
                        MSG(player, "Beacons, Karten, Banner und mehr bei /p h 5ty1ne");
                        try {
                            Thread.sleep(20000);
                        } catch (InterruptedException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                        MSG(player, "Karten, Banner, stackweise Eisenblöcke, Emeraldblöcke und mehr bei /p h 5ty1ne");
                        try {
                            Thread.sleep(20000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        MSG(player, "Shop bei /p h 5ty1ne");
                        try {
                            Thread.sleep(20000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        MSG(player, "Günstig für deinen Shop einkaufen? /p h 5ty1ne");
                        try {
                            Thread.sleep(20000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            };
            t.start();
        }
        else {
            sender.addChatMessage(new ChatComponentText("In der Konsole nicht verfügbar."));
        }
    }

    public void MSG(EntityPlayer player, String message) {
        Minecraft.getMinecraft().thePlayer.sendChatMessage(message);
    }
}

下面是主代码:

package AutoAd;

import net.minecraft.command.ServerCommandManager;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.ModMetadata;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import proxy.ServerProxy;

@Mod(modid = AutoAD.MODID)

public class AutoAD {


    public static final String MODID = "autoad";
    @SidedProxy(clientSide = "proxy.ClientProxy", serverSide = "proxy.ServerProxy")
    public static ServerProxy proxy;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {

    }

    @EventHandler
    public void init(FMLInitializationEvent event) {

    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {

    }
    @EventHandler
    public void registerCommands(FMLServerStartingEvent event) {
        ServerCommandManager manager = (ServerCommandManager) event.getServer().getCommandManager();
        manager.registerCommand(new CommandAutoAD());
    }
}

共有1个答案

戚兴邦
2023-03-14

我想你已经在你的Minecraft客户端上安装了这个mod,而不是在你的服务器上。您可以使用Minecraft Forge gradle启动本地开发服务器,或者通过编译到一个JAR中并将该JAR拖放到Minecraft Forge服务器的/mods文件夹中。

 类似资料:
  • 我只是在Windows中安装jdk和jre版本8。环境变量已设置。我尝试在cmd中运行“java-version”,它显示了安装的java版本。但是当我尝试用“javac projectname”编译java项目时,系统说javac不能被识别为内部命令或外部命令。有谁能告诉我怎么修好它吗? 下面是我的环境变量: C:\users\foody>echo%路径%C:\ProgramData\Oracl

  • 问题内容: 我正在运行Ubuntu 10.10 64位。我安装了ia32-libs以及Android Debug Bridge版本1.0.26。 我的问题: >>> ???????????? 没有权限 >>>> sudo:adb:找不到命令 >>>错误:设备权限不足 我想这些都有关。这是相关信息。 使用运行CM6.1的植根Moto Droid和运行基于CM7的ROM植根的G-Tab,可以得到相同的

  • 我试图在一个网站上使用gettext,为此我遵循O'Reilly媒体教程。在第一页的末尾,它说我需要使用命令,但是我的命令行返回以下内容:我在XAMPP上运行我的网站,所以我的整个目录是这样的: 我有考试。php在gettext文件夹中,以及消息。采购订单位于文件夹中。即使我尝试使用poedit,它也不起作用。这是我的测验。php代码: 我不确定bindtextdomain函数中的字符串是否正确。

  • 我想我已经正确安装了hadoop。如果我做我可以看到namenode和datanode,没有问题。 这是不管我是否把'.'或“/”或我所在的任何目录。 这一切意味着什么?我怎样才能得到正常的,预期的输出?我错过了什么?

  • 我想我已经正确安装了hadoop。如果我做了我可以看到namenode和datanode,没有问题。 当我键入时,我得到错误: 当我键入hadoop dfs-ls时 我得到错误: 当我键入时,我得到错误: 这是不管我是否把或者“/”或者我所在的任何目录。 这一切意味着什么?如何获得正常的预期输出?我错过了什么?

  • 我使用ubuntu 14.04,当我在终端上使用节点hello.js命令时,什么都不会发生。我使用sudo apt-get命令安装了这些包。我不知道出了什么问题。没有错误消息或任何东西。我寻找我的问题,但什么也没找到。