Discord

  • 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 Erledigt Irgendwas mit HashMaps und Locations.

Max Scha

Minecrafter
Mitglied seit
30 Juni 2017
Beiträge
24
Alter
31
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.
 

SirYwell

Vorarbeiter
Osterei Experte
Mitglied seit
30 Juni 2017
Beiträge
266
Alter
20
Minecraft
SirYwell
Spontan würde ich vermuten, dass die Welt nicht gefunden wird, eventuell ist sie null.
 

Max Scha

Minecrafter
Mitglied seit
30 Juni 2017
Beiträge
24
Alter
31
Wenns so einfach wäre.. Leider nicht. Die Welt wird mir mit dem korrekten Namen geprintet und das "World" Objekt ist leider auch richtig erstellt worden.
 

DerFrZocker

Miner
Osterei Experte
Mitglied seit
10 Dezember 2017
Beiträge
155
Alter
19
Minecraft
DerFrZocker

Max Scha

Minecrafter
Mitglied seit
30 Juni 2017
Beiträge
24
Alter
31
Ich Profi xd
Das ist ein sehr interessanter Denkansatz. Das überprüfe ich jetzt mal.

EDIT: Du bist mein Held und Retter! Ich danke dir!! xD
 
Oben