• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Fehler ohne Fehlermeldung [gelöst]

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300


Hei Community,


ich habe gerade den mysteriösesten Fehler , den ich je hatte. Durch einen Vektor sollte der spieler , wenn er eine bestimmte Koordinate erreicht, nach oben geschleudert werden.

MoveEvent , indem der Spieler nach oben geschleudert werden sollte :
Code:
package Events;



import java.util.HashMap;



import org.bukkit.Bukkit;

import org.bukkit.ChatColor;

import org.bukkit.Location;

import org.bukkit.World;

import org.bukkit.configuration.file.FileConfiguration;

import org.bukkit.entity.Player;

import org.bukkit.event.EventHandler;

import org.bukkit.event.Listener;

import org.bukkit.event.player.PlayerMoveEvent;

import org.bukkit.util.Vector;



public classMove EventimplementsListener{



    /*

    * The first HashMap is for falldamage.

    * The second one is for the admin message.

    */

    public static HashMap<Player,Boolean> HMPB =newHashMap<Player,Boolean>();

    public static HashMap<Player,Boolean> hmpb1 =newHashMap<Player,Boolean>();



    @EventHandler

    public void onMoveSave(PlayerMoveEvente){



        FileConfiguration PosFile = Files.Pos.getPos();



        Player p =e.getPlayer();

        if(PosFile.getConfigurationSection("jumpUp")!=null){

            for(String strg : PosFile.getConfigurationSection("jumpUp").getKeys(false)){

      

                World world = Bukkit.getWorld(PosFile.getString("jumpUp." + strg + ".World"));

                Location loc = new Location(world, PosFile.getInt("jumpUp." + strg + ".X"), PosFile.getInt("jumpUp." + strg + ".Y"), PosFile.getInt("jumpUp." + strg + ".Z"));

      

                if(p.getLocation().getBlock().getLocation().distance(loc.getBlock().getLocation())<=0.5){

                    if(PosFile.getBoolean("jumpUp."+ strg +".Vector.Direction.Boolean")==Boolean.FALSE){

              

                        Vector vec = new Vector(PosFile.getInt("jumpUp." + strg + ".Vector.X"), PosFile.getInt("jumpUp." + strg + ".Vector.Y"), PosFile.getInt("jumpUp." + strg + ".Vector.Z"));

                        p.setVelocity(vec);

                        HMPB.put(p, true);

                        sendAdminMessage(p, strg);

                    }

                }

                else{

                    p.setVelocity(p.getLocation().getDirection().multiply(PosFile.getInt("jumpUp."+ strg +".Vector.Direction.Multiply")));

                    HMPB.put(p, true);

          

                    sendAdminMessage(p, strg);

                }

            }

        }

    }



    private void sendAdminMessage(Player p,String strg){



        if(p.hasPermission("Nr.1.Admin")){

            if(hmpb1.containsKey(p)){

                if(Files.Config.getCon().getBoolean("jumpUp.MessagesForAdmin")==Boolean.TRUE){

                    if(hmpb1.get(p).booleanValue()==true){

              

                        p.sendMessage(ChatColor.AQUA + "Your now jumping over " + ChatColor.RED + strg);

                        hmpb1.put(p, false);

                    }

                }

            }

            else{

                hmpb1.put(p, false);

                p.sendMessage(ChatColor.AQUA + "Your now jumping over " + ChatColor.RED + strg);

            }      

        }

    }

}

Der Command , der die position absichert.
Code:
package Commands;



import org.bukkit.ChatColor;

import org.bukkit.command.Command;

import org.bukkit.command.CommandExecutor;

import org.bukkit.command.CommandSender;

import org.bukkit.configuration.file.FileConfiguration;

import org.bukkit.entity.Player;



public class save implements CommandExecutor{



    @Override

    public boolean onCommand(CommandSendersender,Commandcmd,Stringlabel,String[]args){



        FileConfiguration PosFile = Files.Pos.getPos();



        if(sender instancef Player){

            Player p =(Player)sender;

            if(args.length == 2){

                if(args[0].equalsIgnoreCase("jumpUp")){

                    if(p.hasPermission("Nr.1.Admin")){

              

                        //Location

                        PosFile.set("jumpUp." + args[1] + ".X", p.getLocation().getBlockX());

                        PosFile.set("jumpUp." + args[1] + ".Y", p.getLocation().getBlockY());

                        PosFile.set("jumpUp." + args[1] + ".Z", p.getLocation().getBlockZ());

                        PosFile.set("jumpUp." + args[1] + ".World", p.getLocation().getWorld().getName());

              

                        //First vector if boolean false

                        PosFile.set("jumpUp."+args[1]+".Vector.X",(int)0);

                        PosFile.set("jumpUp."+args[1]+".Vector.Y",(int)0);

                        PosFile.set("jumpUp."+args[1]+".Vector.Z",(int)0);

              

                        //Second vector if boolean true

                        PosFile.set("jumpUp."+args[1]+".Vector.Direction.Boolean",(Boolean)true);

                        PosFile.set("jumpUp."+args[1]+".Vector.Direction.Multiply",(int)1.5);

                        Files.Pos.savePos();

              

                        p.sendMessage(ChatColor.AQUA + "The location for jumpUp, called " + ChatColor.BLUE + args[1] + ChatColor.AQUA + ", has been seted.");

                    }

                }

            }

            else{

                p.sendMessage(ChatColor.BLUE + "Arguments !");

            }



        }

        return false;

    }



}

Sobald ich eine Location in den File eintrage , beginnt der Spieler die ganze Zeit mit dem PosFile.getInt("jumpUp."+ strg +".Vector.Direction.Multiply") herum zu fliegen.
Ich habe bei der Fehlersuche begonnen , indem ich bei jedem abschnitt eine "soyso" hingeschrieben hab , doch ist die "soyso" nie durchgelaufen. Danach habe ich bei dem Abschnitt "jumpUp."+ strg +".Vector.Direction.Multiply" die Zahl rausgenommen und reloaded, eigentlich müsste doch dann die Fehlermeldung NullPointerExeption kommen , doch dann nimmt er die 0 als multiply her.
Es hat zuerst eigentlich alles funktioniert , bis ich den private void Teil geschrieben hab, doch nachdem ich den Teil wieder ausgeklammert hab , gab es immer noch den gleichen Fehler.

Vielleicht habe ich irgendwas übersehen oder habe einfach nur einen dummen Fehler gemacht :confused: aber trotzdem hoffe ich ihr könnt mir weiterhelfen und wenn ihr noch mehr Informationen braucht , dann schreibt es in die Kommentare. :)

Mit freundlichen Grüßen
payno4
 
Zuletzt bearbeitet:
Oben