Skocz do zawartości
  • 0

Task i Player z pliku yml.


Pytanie

Witam, od jakiegoś czasu mam pewien problem, a więc zapisuje sobie gracza do yml:

Player p = ((Player) cs).getPlayer();
Main.getInst().getConfig().set("aukcja.gracz", (Player) p);

cs - CommandSenser.

Jeszcze wcześniej sprawdzam czy wysyłający jest graczem, poprzez instaceof Player.

No i dochodzę do tego, że gdy zapisałem już go, to chce go odczytać:

Player p = Bukkit.getPlayer((String) Main.getInst().getConfig().get("aukcja.gracz"));

Dodaje (String), ponieważ Eclipse bez tego wyrzuca błąd i sam sugeruje dodanie tego.

No i niby okej, ale przy tasku, wyżej sypie się :/ A potem muszę do ekwipunku gracza p dodać ItemStacka. Do tego jeszcze nie chce mi zastopować taska, w którym właśnie wyrzuca błąd. Już sam nie wiem jak pobrać tego gracza. Z góry dziękuje za pomoc! :)

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/
Udostępnij na innych stronach

19 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Sypie się, bo zapisujesz obiekt Player, a odczytujesz go jako nazwa gracza.
Powinieneś zapisywać UUID (ew. nazwę). Uzyskujesz je przez metody p.getUniqueId() i p.getName().
A co do odczytywania, rzutowanie jest nie potrzebne bo istnieją metody takie jak config.getString(), config.getInt() itp. 

(Pomijam to ze zapisywanie graczy w configu jest glupie)
 

Edytowane przez Ixidi
Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143719
Udostępnij na innych stronach

  • 0
28 minut temu, Ixidi napisał:

Sypie się, bo zapisujesz obiekt Player, a odczytujesz go jako nazwa gracza.
Powinieneś zapisywać UUID (ew. nazwę). Uzyskujesz je przez metody p.getUniqueId() i p.getName().
A co do odczytywania, rzutowanie jest nie potrzebne bo istnieją metody takie jak config.getString(), config.getInt() itp. 

(Pomijam to ze zapisywanie graczy w configu jest glupie)
 

Czemu uważasz ze zapisywanie graczy w configu jest głupie?

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143728
Udostępnij na innych stronach

  • 0
40 minut temu, Ixidi napisał:

Sypie się, bo zapisujesz obiekt Player, a odczytujesz go jako nazwa gracza.
Powinieneś zapisywać UUID (ew. nazwę). Uzyskujesz je przez metody p.getUniqueId() i p.getName().
A co do odczytywania, rzutowanie jest nie potrzebne bo istnieją metody takie jak config.getString(), config.getInt() itp. 

(Pomijam to ze zapisywanie graczy w configu jest glupie)
 

Zapisując gracza dostaje takie coś:

gracz:
    ==: Player
    name: KrejzolekPR0

Więc analogicznie chciałbym go pobrać jako Player x i określać x.getName(), czy x.getUniqueId. Co do tego, że istnieje getInt() czy inne to wiem, ponieważ wykorzystuje je, ale właśnie brakuje mi czegoś w stylu [...].getConfig().getPlayer("aukcja.gracz"); Coś na przykładzie ItemStacka, zapisując go, odczytam go jako getItemStack() i mogę go używać jako ItemStacka, a z Playerem już nie.

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143737
Udostępnij na innych stronach

  • 0
25 minut temu, KrejzolekPRO napisał:

Zapisując gracza dostaje takie coś:


gracz:
    ==: Player
    name: KrejzolekPR0

Więc analogicznie chciałbym go pobrać jako Player x i określać x.getName(), czy x.getUniqueId. Co do tego, że istnieje getInt() czy inne to wiem, ponieważ wykorzystuje je, ale właśnie brakuje mi czegoś w stylu [...].getConfig().getPlayer("aukcja.gracz"); Coś na przykładzie ItemStacka, zapisując go, odczytam go jako getItemStack() i mogę go używać jako ItemStacka, a z Playerem już nie.

No bo tak się z graczem nie robi, gracz nie jest prostym obiektem jak ItemStack który można zapisać do pliku a potem wczytać, trzeba zapisywać po swojemu, np ręcznie uuid i nick

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143750
Udostępnij na innych stronach

  • 0
25 minut temu, GotoFinal napisał:

No bo tak się z graczem nie robi, gracz nie jest prostym obiektem jak ItemStack który można zapisać do pliku a potem wczytać, trzeba zapisywać po swojemu, np ręcznie uuid i nick

No dobra, zapisze jako UUID, ale jak to mam odczytać? getInt(), getString()?

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143760
Udostępnij na innych stronach

  • 0
3 godziny temu, Ixidi napisał:

getString() i potem do UUID metodą UUID.fromString(string); 

A jeszcze jedno, nie nawiązując do tematu, gdzie źle w tym kodzie tworzę lore? Gdy wywale linijkę im.setLore(lore); Jest wszystko okej.

ItemMeta im = is.getItemMeta();
			List<String> lore;
			lore = StringUtil.replace(Settings.ITEM_LORE, "{MIN-Y}", drop.getMinY().toString());
			lore = StringUtil.replace(lore, "{MAX-Y}", drop.getMaxY().toString());
			String biomy = "Wszystkie";
			if(drop.getBiome().size() > 0){
				StringBuilder sb = new StringBuilder();
				for(Biome b : drop.getBiome()) sb.append(b.toString() + ", ");
				biomy = sb.toString();
			}
			lore = StringUtil.replace(lore, "{BIOM}", biomy);
			String pickaxe = "Wszystkie";
			if(drop.getPickaxe().size() > 0){
				StringBuilder sb = new StringBuilder();
				for(Material m : drop.getPickaxe()) sb.append(m.toString() + ", ");
				pickaxe = sb.toString();
				pickaxe = StringUtil.replace(pickaxe, "DIAMOND_PICKAXE", "diamentowy");
				pickaxe = StringUtil.replace(pickaxe, "IRON_PICKAXE", "zelazny");
				pickaxe = StringUtil.replace(pickaxe, "GOLD_PICKAXE", "zloty");
				pickaxe = StringUtil.replace(pickaxe, "STONE_PICKAXE", "kamienny");
				pickaxe = StringUtil.replace(pickaxe, "WOOD_PICKAXE", "drewniany");
				if(pickaxe.contains("drewniany")){
					pickaxe = "Drewniany";
				} else if(pickaxe.contains("kamienny")){
					pickaxe = "Kamienny";
				} else if(pickaxe.contains("zloty")){
					pickaxe = "Zloty";
				} else if(pickaxe.contains("zelazny")){
					pickaxe = "Zelazny";
				} else if(pickaxe.contains("diamentowy")){
					pickaxe = "Diamentowy";
				}
			}
			lore = StringUtil.replace(lore, "{PICKAXE}", pickaxe);
			lore = StringUtil.replace(lore, "{STATUS}", (user.isDropOff(drop) ? "§2Wlaczone" : "§cWylaczone"));
			lore = StringUtil.replace(lore, "{LEVEL-DROP}", drop.getLevel().toString());
			Double chance = drop.getDefault() + user.getTurboChance();
			lore = StringUtil.replace(lore, "{CHANCE}", chance.toString());
			lore = StringUtil.replace(lore, "{CHANCE-VIP}", drop.getVip().toString());
			for(String x : lore){
				player.sendMessage(x);
			}
			im.setLore(lore);
			is.setItemMeta(im);
			inv.setItem(drop.getSlot(), is);

 

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143815
Udostępnij na innych stronach

  • 0
11 minut temu, GotoFinal napisał:

Ale jaki masz bład z tym lore?

Sam nie wiem, ale jak usunę linie dodającą lore do ItemMety to jest okej, a jak lore jest w ItemMecie to konsolka sypie błędami, ale wyświetliłem sobie to lore w wiadomości i wygląda tak jak podałem w configu, i tu jest problem :/

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143844
Udostępnij na innych stronach

  • 0
null
org.bukkit.command.CommandException: Unhandled exception executing command 'drop' in plugin kp-Drop v0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
Caused by: java.lang.NullPointerException
        at com.krejzolekpro.kp_drop.utils.GuiUtil.guiDrop(GuiUtil.java:69) ~[?:?]
        at com.krejzolekpro.kp_drop.commands.DropCommand.onCommand(DropCommand.java:15) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.8.jar:git-Spigot-21fe707-e1ebe52]
        ... 15 more

 

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143862
Udostępnij na innych stronach

  • 0
Caused by: java.lang.NullPointerException
        at com.krejzolekpro.kp_drop.utils.GuiUtil.guiDrop(GuiUtil.java:69) ~[?:?]

No to coś co używasz w tej klasie GuiUtil w 69 linijce jest nullem

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143865
Udostępnij na innych stronach

  • 0
4 godziny temu, GotoFinal napisał:

Caused by: java.lang.NullPointerException
        at com.krejzolekpro.kp_drop.utils.GuiUtil.guiDrop(GuiUtil.java:69) ~[?:?]

No to coś co używasz w tej klasie GuiUtil w 69 linijce jest nullem

No właśnie pisałem do góry, że jest to linia od ustawinia lore im.setLore(lore);

Oj przepraszam to linia od ustawiania is.setItemMeta(im); Bez niej działa.

Edytowane przez KrejzolekPRO
Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-143909
Udostępnij na innych stronach

  • 0
16 godzin temu, Ixidi napisał:

A to normalnie Ci printuje?


			for(String x : lore){
				player.sendMessage(x);
			}

 

Tak.

16 godzin temu, GotoFinal napisał:

			im.setLore(lore); - jak to ci się psuje to "im" jest nullem
			is.setItemMeta(im); - jak to,  to "is" jest nullem, proste... cokolwiek masz w tej 69 linijce

No własnie im jest prawdopidbnie nullem, zaraz coś sprawdze.

Odnośnik do komentarza
https://skript.pl/temat/21159-task-i-player-z-pliku-yml/#findComment-144027
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ę...