Skocz do zawartości
  • 0

Null Location


rozumek29

Pytanie

Witam, jest mi ktoś w stanie powiedzieć dlaczego dostaje nulla przy próbie teleportacji ?

private Location playerLocation;

@EventHandler
    public void onPlayerJoin(PlayerJoinEvent event){
        event.setJoinMessage(null);
        Player player = event.getPlayer();
  		playerLocation = getLocation(player);
}

private Location getLocation(Player player){
        PW = player.getWorld();
        PX = player.getLocation().getBlockX();
        PY = player.getLocation().getBlockY();
        PZ = player.getLocation().getBlockZ();
        Location playerLocation = new Location(SW, SX, SY, SZ);
        return playerLocation;
    }

a później próba teleportacji

player.teleport(playerLocation);

Błąd jaki się pokazuję

Spoiler

org.bukkit.command.CommandException: Unhandled exception executing command 'login' in plugin LoginSystem v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.craftbukkit.v1_16_R2.CraftServer.dispatchCommand(CraftServer.java:758) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PlayerConnection.handleCommand(PlayerConnection.java:1697) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PlayerConnection.a(PlayerConnection.java:1540) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.TickTask.run(SourceFile:18) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.ba(MinecraftServer.java:941) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.executeNext(MinecraftServer.java:934) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.sleepForTick(MinecraftServer.java:918) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:850) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]
Caused by: java.lang.IllegalArgumentException: location
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer.teleport(CraftPlayer.java:616) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.craftbukkit.v1_16_R2.entity.CraftEntity.teleport(CraftEntity.java:468) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at me.rozumek29.loginsystem.LoginMenager.onCommand(LoginMenager.java:86) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        ... 18 more

 

Odnośnik do komentarza
Udostępnij na innych stronach

12 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
39 minut temu, rozumek29 napisał:

Witam, jest mi ktoś w stanie powiedzieć dlaczego dostaje nulla przy próbie teleportacji ?


private Location playerLocation;

@EventHandler
    public void onPlayerJoin(PlayerJoinEvent event){
        event.setJoinMessage(null);
        Player player = event.getPlayer();
  		playerLocation = getLocation(player);
}

private Location getLocation(Player player){
        PW = player.getWorld();
        PX = player.getLocation().getBlockX();
        PY = player.getLocation().getBlockY();
        PZ = player.getLocation().getBlockZ();
        Location playerLocation = new Location(SW, SX, SY, SZ);
        return playerLocation;
    }

a później próba teleportacji


player.teleport(playerLocation);

Błąd jaki się pokazuję

  Pokaż ukrytą zawartość

org.bukkit.command.CommandException: Unhandled exception executing command 'login' in plugin LoginSystem v1.0-SNAPSHOT
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.craftbukkit.v1_16_R2.CraftServer.dispatchCommand(CraftServer.java:758) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PlayerConnection.handleCommand(PlayerConnection.java:1697) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PlayerConnection.a(PlayerConnection.java:1540) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.TickTask.run(SourceFile:18) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.ba(MinecraftServer.java:941) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.executeNext(MinecraftServer.java:934) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.sleepForTick(MinecraftServer.java:918) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:850) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at net.minecraft.server.v1_16_R2.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]
Caused by: java.lang.IllegalArgumentException: location
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer.teleport(CraftPlayer.java:616) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at org.bukkit.craftbukkit.v1_16_R2.entity.CraftEntity.teleport(CraftEntity.java:468) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        at me.rozumek29.loginsystem.LoginMenager.onCommand(LoginMenager.java:86) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-1.16.3.jar:git-Spigot-17d78db-5c77bd2]
        ... 18 more

 

Spójrz na to:

PW = player.getWorld();
PX = player.getLocation().getBlockX();
PY = player.getLocation().getBlockY();
PZ = player.getLocation().getBlockZ();

a następnie spójrz na to:

Location playerLocation = new Location(SW, SX, SY, SZ);

Jak możesz zauważyć, nazwy zmiennych się nie zgadzają.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

https://github.com/Rozumek29/MindLogin/blob/master/src/main/java/me/rozumek29/loginsystem/LoginMenager.java Proszę, to cały kod. Sorki że dopiero teraz, ale na imprezie byłem.

Ogólnie na początku chciałem wykozysztać do tego Hashmape, ale ona również z jakiegoś powodu zwracała nulla, więc próbowałem inaczej

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@rozumek29 cały ten kod to proszenie się o kłopoty. Zamiast SW, SX i całej reszty zmiennych powinieneś używać zmiennych lokalnych, a najlepiej nie używać ich w ogóle. Bo jaki sens ma metoda getLocation która od nowa tworzy całą lokację gracza skoro wystarczy użyć player.getLocation()? Metoda getSpawn ma trochę więcej sensu, ale nadal nie powinno się to absolutnie odbywać w ten sposób tylko od razu zwracać

return new Location(
  Bukkit.getWorld(plugin.getConfig().getString("Options.Spawn.World")),
  plugin.getConfig().getInt("Options.Spawn.X"),
  plugin.getConfig().getInt("Options.Spawn.Y"),
  plugin.getConfig().getInt("Options.Spawn.Z")
)

A wracając do nulla - wystarczy że któraś z wartości nie zostanie umieszczona w configu.

Spoiler

Reszty kodu nie skomentuję bo to spaghetti kompletne, ale zakładam że tylko się uczysz. Bo przecież nie zamierzasz używać własnego napisanego w ten sposób systemu logowania na produkcji - w dodatku niebezpiecznego przez zahardcodowany salt "abcdefghiijklmnoprstuwxyz" - skoro jest tyle dobrze przetestowanych rozwiązań jak AuthMe, prawda?

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 godziny temu, Libter napisał:

Reszty kodu nie skomentuję bo to spaghetti kompletne, ale zakładam że tylko się uczysz. Bo przecież nie zamierzasz używać własnego napisanego w ten sposób systemu logowania na produkcji - w dodatku niebezpiecznego przez zahardcodowany salt "abcdefghiijklmnoprstuwxyz" - skoro jest tyle dobrze przetestowanych rozwiązań jak AuthMe, prawda?

yep, tylko się uczę, nic więcej. 

2 godziny temu, Libter napisał:

return new Location( Bukkit.getWorld(plugin.getConfig().getString("Options.Spawn.World")), plugin.getConfig().getInt("Options.Spawn.X"), plugin.getConfig().getInt("Options.Spawn.Y"), plugin.getConfig().getInt("Options.Spawn.Z") )

ale to nie z tą częścią kodu jest problem, ta akurat działa prawidłowo. 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
59 minut temu, rozumek29 napisał:

ale to nie z tą częścią kodu jest problem, ta akurat działa prawidłowo. 

To zobacz jeszcze jedną uwagę którą wstawiłem:

3 godziny temu, Libter napisał:

Zamiast SW, SX i całej reszty zmiennych powinieneś używać zmiennych lokalnych, a najlepiej nie używać ich w ogóle. Bo jaki sens ma metoda getLocation która od nowa tworzy całą lokację gracza skoro wystarczy użyć player.getLocation()?

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
13 godzin temu, Libter napisał:

Zamiast SW, SX i całej reszty zmiennych powinieneś używać zmiennych lokalnych, a najlepiej nie używać ich w ogóle. Bo jaki sens ma metoda getLocation która od nowa tworzy całą lokację gracza skoro wystarczy użyć player.getLocation()?

HashMapa nie działała, bo też zwracała nulla więc kombinowałem innym sposobem

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Hashmapa zwracała nulla najprawdopodobniej dlatego, że jej nie zainicjowałeś

HashMap<K, V> locations = new HashMap<>();

Przed rozpoczęciem nauki SpigotAPI bardzo polecam Ci naukę podstaw Javy, wszystko stanie się łatwiejsze, a takie problemy będziesz załatwiał od ręki.

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...