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