0

Я пишу команду, которая покажет фейерверк, когда вы запустите команду /fireworks в командной строке Minecraft. Есть ли что-то, что я должен сделать, в частности, для подключения этой команды сервера с клиентской стороной, чтобы показать фейерверк внутри игры? Я использую команду world.makefireworks(x,y,z,motionX,motionY,motionZ,compound). Спасибо заранее.Minecraft-Forge Java-кодирование: как подключить серверные команды с клиентской стороной, чтобы мгновенно отображать изменения в мире?

ответ

1

Сначала создайте команду. Вот одна из моих команд (урезанных некоторых полезных реализаций которые вы можете изменить Ваши пожелания.

Вы должны зарегистрировать его в собственном автобусе событий

/*@EventHandler 
public void stop(FMLServerStoppingEvent event) { 
    WhoTookMyCookies.mainThread.interrupt(); 
}*/ 
@EventHandler 
public void start(FMLServerStartingEvent event) { 
    startDatabase(); 
    WhoTookMyCookies.log.warn("Setting up commands"); 
    event.registerServerCommand(new InspectCommand()); 
} 

И самой команде

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

import akka.actor.FSM.Event; 
import tschallacka.whotookmycookies.WhoTookMyCookies; 
import tschallacka.whotookmycookies.player.ExtendedPlayer; 
import net.minecraft.command.CommandException; 
import net.minecraft.command.ICommand; 
import net.minecraft.command.ICommandSender; 
import net.minecraft.entity.Entity; 
import net.minecraft.entity.player.EntityPlayer; 
import net.minecraft.entity.player.EntityPlayerMP; 
import net.minecraft.event.ClickEvent; 
import net.minecraft.event.HoverEvent; 
import net.minecraft.util.BlockPos; 
import net.minecraft.util.ChatComponentText; 
import net.minecraft.util.EnumChatFormatting; 
import net.minecraft.world.World; 
import net.minecraftforge.fml.common.FMLCommonHandler; 



public class InspectCommand implements ICommand 
{ 
    private final List aliases; 

    protected String fullEntityName; 
    protected Entity conjuredEntity; 

    public InspectCommand() 
    { 
     aliases = new ArrayList(); 

     aliases.add("whotookmycookies"); 

     aliases.add("wtmc"); 

     aliases.add("co"); 

    } 

    @Override 
    public int compareTo(Object o) 
    { 
     return 0; 

    } 

    @Override 
    public String getName() 
    { 
     return "whotookmycookies"; 

    } 

    @Override   
    public String getCommandUsage(ICommandSender var1) 
    { 
     return "whotookmycookies <text>"; 

    } 


    @Override 
    public boolean isUsernameIndex(String[] var1, int var2) 
    { 

     return true; 

    } 


    @Override 
    public List getAliases() { 

     return this.aliases; 

    } 

    @Override 
    public void execute(ICommandSender sender, String[] args) 
      throws CommandException { 

     World world = sender.getEntityWorld(); 


      if (world.isRemote) 

      { 

      } 

      else 

      { 


       if(args.length == 0) 

       { 

        sender.addChatMessage(new ChatComponentText("WHO TOOK MY COOKIES! Seriously though. type an argument. type /wtmc help to see available commands")); 

        return; 

       } 

       if(sender instanceof EntityPlayer) { 
        ExtendedPlayer thedude = ExtendedPlayer.get((EntityPlayer) sender); 
        if(thedude != null) { 

         if(args[0].equalsIgnoreCase("help")) { 
          handleHelpCommand(sender,args);       
         }     } 
       } 




      } 
     // TODO Auto-generated method stub 

    } 



    private void handleHelpCommand(ICommandSender sender, String[] args) { 
     String argument = "default"; 
     if(args.length >= 2) { 
      argument = args[1]; 
     } 
     ChatComponentText messageTitle,messageSecond; 
     argument = argument.toLowerCase().trim(); 

     messageTitle = new ChatComponentText("===================//=========\\\\==================="); 
     messageTitle.getChatStyle().setColor(EnumChatFormatting.DARK_AQUA); 
     sender.addChatMessage(messageTitle); 
     switch(argument) { 
      case "help" : 
       messageTitle = new ChatComponentText("I NEED HELP WITH MY HELP"); 
       messageTitle.getChatStyle().setColor(EnumChatFormatting.GOLD); 
       messageSecond = new ChatComponentText(" Srsly halp me!"); 
       messageSecond.getChatStyle().setColor(EnumChatFormatting.GRAY).setItalic(Boolean.valueOf(true)); 
       messageTitle.appendSibling(messageSecond); 
       sender.addChatMessage(messageTitle); 

       messageTitle = new ChatComponentText("/wtmc help"); 
       messageTitle.getChatStyle().setColor(EnumChatFormatting.GOLD); 
       messageSecond = new ChatComponentText(" shows the help file listing all the commands of this blocklogging mod"); 
       messageSecond.getChatStyle().setColor(EnumChatFormatting.WHITE); 
       messageTitle.appendSibling(messageSecond); 
       sender.addChatMessage(messageTitle); 
       messageTitle = new ChatComponentText("/wtmc help help"); 
       messageTitle.getChatStyle().setColor(EnumChatFormatting.GOLD); 
       messageSecond = new ChatComponentText(" Explains to you that the help command shows the help... really... it does."); 
       messageSecond.getChatStyle().setColor(EnumChatFormatting.WHITE); 
       messageTitle.appendSibling(messageSecond); 
       sender.addChatMessage(messageTitle); 
       break; 
      } 
    } 
    @Override 
    public boolean canCommandSenderUse(ICommandSender sender) { 
     if(sender.getCommandSenderEntity() instanceof EntityPlayer) { 
      return FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().canSendCommands(((EntityPlayer)(sender.getCommandSenderEntity())).getGameProfile()); 
     } 
     if(sender.getCommandSenderEntity() instanceof EntityPlayerMP) { 
      return FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().canSendCommands(((EntityPlayer)(sender.getCommandSenderEntity())).getGameProfile()); 
     } 
     return false; 
    } 

    @Override 
    public List addTabCompletionOptions(ICommandSender sender, String[] args, 
      BlockPos pos) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

}