Recupérer un Pseudo et un String dans une Commande



  • Je cherche à récuprérer dans l'argument[1] un String et dans l'argument[2] un Joueur, comment faire ?

    Je vous montre ma classe

    
    @Override
    public void processCommand(ICommandSender sender, String[] arguments) {
    if (arguments.length <= 0)
    throw new WrongUsageException(this.getCommandUsage(sender));
    if (arguments[0].matches("add")) {
    
    }
    if (arguments[0].matches("remove")) {
    
    }
    if (arguments[0].matches("set")) {
    
    }
    
    }
    


  • Salut, inspire toi du fonctionnement des commandes mc, qui requièrent elles aussi un pseudo.



  • Les commandes MC ?



  • Les commandes de base présentes dans MC



  • Je regarde ça comment ? Avec MCP ?



  • Non avec forge tu peux.

    1. Soit dans le jar de forge, dans "Referenced Librairies", en bas de ton projet Java.
    2. Soit en orthographiant correctement, le nom de la classe, et en ctrl+clic gauche dessus.

  • Administrateurs

    .equals pour comparer des string, .match c'est pour les regex.



  • J'ai réussis à récupérer un String mais pour récupéré le joueur grace au string je ne trouve pas 😕 un ppeu d'aide ? S'il vous plait ?



  • De l'aide ? Je pense que tu n'as pas suffisamment cherché comme la majorité des débutants en modding.
    Voici la classe CommandGameMode:

    
    package net.minecraft.command;
    
    import java.util.List;
    import net.minecraft.entity.player.EntityPlayerMP;
    import net.minecraft.server.MinecraftServer;
    import net.minecraft.util.ChatComponentTranslation;
    import net.minecraft.world.WorldSettings;
    
    public class CommandGameMode extends CommandBase
    {
    private static final String __OBFID = "CL_00000448";
    
    public String getCommandName()
    {
    return "gamemode";
    }
    
    /**
    * Return the required permission level for this command.
    */
    public int getRequiredPermissionLevel()
    {
    return 2;
    }
    
    public String getCommandUsage(ICommandSender p_71518_1_)
    {
    return "commands.gamemode.usage";
    }
    
    public void processCommand(ICommandSender p_71515_1_, String[] p_71515_2_)
    {
    if (p_71515_2_.length > 0)
    {
    WorldSettings.GameType gametype = this.getGameModeFromCommand(p_71515_1_, p_71515_2_[0]);
    EntityPlayerMP entityplayermp = p_71515_2_.length >= 2 ? getPlayer(p_71515_1_, p_71515_2_[1]) : getCommandSenderAsPlayer(p_71515_1_);
    entityplayermp.setGameType(gametype);
    entityplayermp.fallDistance = 0.0F;
    ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("gameMode." + gametype.getName(), new Object[0]);
    
    if (entityplayermp != p_71515_1_)
    {
    func_152374_a(p_71515_1_, this, 1, "commands.gamemode.success.other", new Object[] {entityplayermp.getCommandSenderName(), chatcomponenttranslation});
    }
    else
    {
    func_152374_a(p_71515_1_, this, 1, "commands.gamemode.success.self", new Object[] {chatcomponenttranslation});
    }
    }
    else
    {
    throw new WrongUsageException("commands.gamemode.usage", new Object[0]);
    }
    }
    
    /**
    * Gets the Game Mode specified in the command.
    */
    protected WorldSettings.GameType getGameModeFromCommand(ICommandSender p_71539_1_, String p_71539_2_)
    {
    return !p_71539_2_.equalsIgnoreCase(WorldSettings.GameType.SURVIVAL.getName()) && !p_71539_2_.equalsIgnoreCase("s") ? (!p_71539_2_.equalsIgnoreCase(WorldSettings.GameType.CREATIVE.getName()) && !p_71539_2_.equalsIgnoreCase("c") ? (!p_71539_2_.equalsIgnoreCase(WorldSettings.GameType.ADVENTURE.getName()) && !p_71539_2_.equalsIgnoreCase("a") ? WorldSettings.getGameTypeById(parseIntBounded(p_71539_1_, p_71539_2_, 0, WorldSettings.GameType.values().length - 2)) : WorldSettings.GameType.ADVENTURE) : WorldSettings.GameType.CREATIVE) : WorldSettings.GameType.SURVIVAL;
    }
    
    /**
    * Adds the strings available in this command to the given list of tab completion options.
    */
    public List addTabCompletionOptions(ICommandSender p_71516_1_, String[] p_71516_2_)
    {
    return p_71516_2_.length == 1 ? getListOfStringsMatchingLastWord(p_71516_2_, new String[] {"survival", "creative", "adventure"}): (p_71516_2_.length == 2 ? getListOfStringsMatchingLastWord(p_71516_2_, this.getListOfPlayerUsernames()) : null);
    }
    
    /**
    * Returns String array containing all player usernames in the server.
    */
    protected String[] getListOfPlayerUsernames()
    {
    return MinecraftServer.getServer().getAllUsernames();
    }
    
    /**
    * Return whether the specified command parameter index is a username parameter.
    */
    public boolean isUsernameIndex(String[] p_82358_1_, int p_82358_2_)
    {
    return p_82358_2_ == 1;
    }
    }
    
    

    Dis moi ce qui te bloque et ce qui t'empêche de trouver la ligne permettant d'instancier un joueur en fonction de son pseudo, rentré en argument dans ta commande ?



  • Bon je pense qu'il ne reviendras pas mais je donne quand même une réponse si des gens cherchent la réponse.
    En 1.7.10 on utilise cette méthode pour récupérer un EntityPlayerMP à partir d'une String.

    FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().func_152612_a(**PSEUDO**)