• 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!

Spigot Irgendwas mit HashMaps und Locations.

MaxDerVerpeilte

Redstoneengineer
Registriert
30 Juni 2017
Beiträge
34
Alter
38
Diamanten
300
Moin Moin!
Ich bin heute leicht überfragt, da ich mit einem Problem mit meiner "Warp-Klasse" zu kämpfen habe. Ich zeige euch, ihr die mir helfen wollt, zunächst die Klasse und dann die Fehlermeldung...
Java:
package de.ZENSIERT.essentials.util;

import de.ZENSIERT.essentials.Main;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;

public class Taxi {

    HashMap<String, Location> warps;
    Main main;
    MySQL mySQL;

    public Taxi(Main main) {
        this.main = main;
        warps = new HashMap<>();
        mySQL = new MySQL();
        mySQL.connect();

        checkTables();

    }

    private void checkTables() {
        ResultSet warps1 = mySQL.select("SELECT * FROM warps");

        if (warps1 == null) {
            MySQL.execute(
                    "CREATE TABLE IF NOT EXISTS warps (\n" +
                            "    name VARCHAR(255) NOT NULL,\n" +
                            "    x INT(10) NOT NULL,\n" +
                            "    y INT(10) NOT NULL,\n" +
                            "    z INT(10) NOT NULL,\n" +
                            "    world VARCHAR(255) NOT NULL,\n" +
                            "   server VARCHAR(255) NOT NULL,\n" +
                            "    PRIMARY KEY (name)\n" +
                            ")  ENGINE=INNODB;");
        }

        ResultSet warplist = mySQL.select("SELECT * FROM warps");
        try {
            while (warplist.next()) {

                int x = warplist.getInt("x");
                int y = warplist.getInt("y");
                int z = warplist.getInt("z");

                String worldname = warplist.getString("world");

                worldname = worldname.trim();

                String name = warplist.getString("name");

                name = name.trim();
                name = name.toLowerCase();

                String servername = warplist.getString("server");

                if (servername.equalsIgnoreCase(Bukkit.getServerName())) {
                    System.out.println("Weltname: " + worldname);
                    System.out.println("Warpname:" + name);
                    World world = main.getServer().getWorld(worldname);

                    Location taxi = new Location(world, (double) x, (double) y, (double) z);
                    System.out.println(taxi);

                    warps.put(name, taxi);
                }

            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public void addWarp(String warpname, Location koord) {
        warps.put(warpname, koord);
        MySQL.execute("INSERT INTO `warps`(`name`, `world`, `server`, `x`, `y`, `z`) VALUES ('" + warpname.toLowerCase() + "','" + koord.getWorld().getName() + "'," +
                "'" + Bukkit.getServerName() + "'," + (int) koord.getX() + "," + (int) koord.getY() + "," + (int) koord.getZ() + ")");
    }

    public boolean getWarpAvailable(String warpname) {
        if (warps.containsKey(warpname)) {
            return true;
        } else return false;
    }

    public Location getLocation(String warpname) {
        if (warps.containsKey(warpname)) {
            return warps.get(warpname);
        } else {
            Location location = null;
            return null;
        }

    }

    public Boolean delWarp(String warpname) {
        if (warps.containsKey(warpname)) {
            warps.remove(warpname);
            return true;
        } else {
            return false;
        }
    }

    public boolean warpPlayer(Player player, String warpname) {

        if (player.isOnline()) {
            if(warps.containsKey(warpname)) {
                player.teleport(warps.get(warpname));
                return true;
            }else System.out.println("warp gibts nicht");
        }

        return false;
    }
}

Code:
[12:18:23 WARN]: [SUEssentials] Plugin SUEssentials v1.0.0 generated an exception whilst handling plugin message
java.lang.IllegalArgumentException: location.world
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) ~[spigot-1.13.2.jar:git-Spigot-f56e2e7-7fc66b2]
        at org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer.teleport(CraftPlayer.java:574) ~[spigot-1.13.2.jar:git-Spigot-f56e2e7-7fc66b2]
        at org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity.teleport(CraftEntity.java:295) ~[spigot-1.13.2.jar:git-Spigot-f56e2e7-7fc66b2]
        at de.sheepuniverse.essentials.util.Taxi.warpPlayer(Taxi.java:117) ~[?:?]
        at de.sheepuniverse.essentials.util.BungeeConnect.onPluginMessageReceived(BungeeConnect.java:31) ~[?:?]
        at org.bukkit.plugin.messaging.StandardMessenger.dispatchIncomingMessage(StandardMessenger.java:427) ~[spigot-1.13.2.jar:git-Spigot-f56e2e7-7fc66b2]
        at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:2446) ~[spigot-1.13.2.jar:git-Spigot-f56e2e7-7fc66b2]
        at net.minecraft.server.v1_13_R2.PacketPlayInCustomPayload.a(SourceFile:45) ~[spigot-1.13.2.jar:git-Spigot-f56e2e7-7fc66b2]

Jetzt die Frage. Woher kommt das zustande? Ich habe schon ausprobiert, ob es mit Warp-Punkten, die ich grade gesetzt habe und sozusagen neu in die Hashmap eingetragen worden sind funktioniert. Und ja das tut es. Es besteht also ein Problem aus dem Lesen aus der Datenbank und ich komme einfach nicht drauf woher das kommt.
 
Registriert
10 Dezember 2017
Beiträge
161
Alter
26
Diamanten
322
Minecraft
DerFrZocker
Oben