La teleportation



  • Bonjour tout le monde, j'ai épluché des dizaines de documentation sans trouver mon bonheur, je suis à la recherche du graal…

    Et-il possible avec forge de téléporter un joueur à des coordonnées précise?

    mon code qui actuellement crash:

    package fr.baptiste.notifia.commande;
    
    import java.util.List;
    
    import net.minecraft.command.CommandBase;
    import net.minecraft.command.ICommand;
    import net.minecraft.command.ICommandSender;
    import net.minecraft.entity.player.EntityPlayer;
    
    public class spawn extends CommandBase
    {
    EntityPlayer p;
    
    @Override
    public String getCommandName()
    {
    return "spawn";
    }
    
    @Override
    public String getCommandUsage(ICommandSender p_71518_1_)
    {
    return "commande.spawn.usage";
    }
    
    @Override
    public void processCommand(ICommandSender p_71515_1_, String[] p_71515_2_) [/font]
    {
    p.setPositionAndUpdate(-417, 67, -487);
    }
    
    }
    

    CrashLog:

    [18:53:22] [Server thread/ERROR]: Couldn't process command: 'spawn'
    java.lang.NullPointerException
    at fr.baptiste.notifia.commande.spawn.processCommand(spawn.java:29) ~[spawn.class:?]
    at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:96) [CommandHandler.class:?]
    at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:788) [NetHandlerPlayServer.class:?]
    at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:764) [NetHandlerPlayServer.class:?]
    at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:47) [C01PacketChatMessage.class:?]
    at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:68) [C01PacketChatMessage.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) [NetworkSystem.class:?]
    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) [MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) [IntegratedServer.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
    [18:53:22] [Client thread/INFO]: [CHAT] Cette commande a échoué suite à une erreur inconnue
    

    je vous remercie d'ores et déjà de votre réponse, 
    amicalement BaptisteG



  • Salut,
    tu as la méthode EntityPlayer#setLocationAndUpdate, il me semble, ou quelque chose dans le genre.



  • Hey Plaigon,
    Merci de ta réponse, je vais creuser de se coter là.
    Quelqu'un aurait plusieurs précis ?



  • Tu initialises jamais p,* *normal donc que ça crash avec un NPE.



  • 
    @Override
    public String getCommandUsage(ICommandSender p_71518_1_)
    {
    return "/spawn";
    }
    
    

    éssaie ça 🙂 dedans


  • Administrateurs

    Salut,
    Il faut utiliser :
    EntityPlayerMP playermp = this.getCommandSenderAsPlayer(sender);
    pour obtenir le joueur. Retires ta variable p qui est null et forcement cause un NullPointerException.



  • Salut Robin,
    Merci de ton aide mais la ligne que tu m'as fournie :

    EntityPlayerMP playermp = this.getCommandSenderAsPlayer(sender);
    

    Renvoie une erreur sur le "(sender)" que je n'arrive pas à régler.

    ERREUR:

    sender cannot be resolved to a variable
    

    Merci



  • Remplace sender par p_71518_1_



  • Même problème… erreur sur le [font=monospacep_71518_1_]

    package fr.baptiste.notifia.commande;
    
    import java.util.List;
    
    import net.minecraft.command.CommandBase;
    import net.minecraft.command.ICommand;
    import net.minecraft.command.ICommandSender;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.EntityPlayerMP;
    import net.minecraft.util.ChunkCoordinates;
    import net.minecraft.util.IChatComponent;
    import net.minecraft.world.World;
    
    public class spawn extends CommandBase
    {
    EntityPlayerMP playermp = this.getCommandSenderAsPlayer(p_71518_1_);
    
    @Override
    public String getCommandName() 
    {
    return "spawn";
    }
    
    @Override
    public String getCommandUsage(ICommandSender p_71518_1_) 
    {
    return "commande.spawn.usage";
    }
    
    @Override
    public void processCommand(ICommandSender p_71515_1_, String[] p_71515_2_) 
    {
    playermp.setPositionAndUpdate(-417, 67, -487);
    }
    
    }
    
    

    ERREUR:

    cannot be resolved to a variable
    


  • Oups par p_71515_1_
    Bref, tu ne devrais pas avoir de difficulté, c'est du Java.
    Tu vois bien que t'as un paramètre ICommandSender, donc sers toi en pour compléter la méthode getCommandSenderAsPlayer


  • Administrateurs

    C'est surtout que la ligne en question doit être dans la fonction processCommand et pas en haut de de la classe.



  • Et PAS en haut de la classe tu veux dire ?


  • Administrateurs

    En effet il manque le pas.



  • Salut

    Merci d'avoir apporté l'aide que j'attendais, 
    l'erreur était sous mes yeux mais je ne la voyais pas. Je marque le poste en résolu, bonne soirée.

    Amicalement,
    Baptiste


Log in to reply