Minecraft-Forge Java coding: Comment connecter les commandes du serveur avec le côté client pour afficher instantanément les changements dans le monde?


J'écris une commande qui afficherait des feux d'artifice lorsque vous exécutez la commande /fireworks dans la ligne de commande Minecraft. Y at-il quelque chose que je devrais faire en particulier pour connecter cette commande de serveur avec le côté client pour montrer les feux d'artifice à l'intérieur du jeu? J'utilise le world.makefireworks(x,y,z,motionX,motionY,motionZ,compound) dans la commande. Merci à l'avance.

Author: spacegeek224, 2016-02-04

1 answers

Créez d'abord une commande. Voici une de mes commandes (réduite à quelques implémentations utiles que vous pouvez modifier à vos souhaits.

Vous devez l'enregistrer dans le bus d'événements approprié

/*@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());
}

Et la commande elle-même

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;
    } 

}
 1
Author: Tschallacka, 2016-02-08 10:18:39