Skocz do zawartości
  • 0

Przedmioty z configu


Virosel

Pytanie

Cześć,

Chciałem zapytać w jaki sposób mogę wyciągnąć z configu wiele ItemStack'ów, np.: DHx5Iav.png

"Tytuł" listy, to slot, a co do reszty łatwo się domyślić. Z góry dzięki za pomoc.

 

 

 

     

Edytowane przez Wojciu
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/
Udostępnij na innych stronach

  • Odpowiedzi 83
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy dla tego pytania

Rekomendowane odpowiedzi

  • 0
7 minut temu, kerpson napisał:

testowałem u siebie i to już musi działać


final ItemStack remove = is.clone();
            final ItemMeta im1 = is.getItemMeta();
            im1.setDisplayName(null);
            im1.setLore(new ArrayList<>());
            remove.setItemMeta(im1);

 

Nie, nie działa. Ale sprzedawanie itemkow bez enchantu za to tak xD

Edytowane przez Virosel
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-249989
Udostępnij na innych stronach

  • 0
27 minut temu, Virosel napisał:

Nie, nie działa. Ale sprzedawanie itemkow bez enchantu za to tak xD

Testowalem u sb z echantami i dzialalo-_- czy item w ekwipunku jest zenchantowany?

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-249992
Udostępnij na innych stronach

  • 0

Miałbym jeszcze jedno pytanie, co do tego samego pluginu. Mianowicie, piszę kategorię premium i chcę, aby po kupnie jakiejś "usługi" z tej kategorii wykonała się konsolowa komenda. Config wygląda tak: https://prnt.sc/t6bu0t 

 

"wyciąganie" broadcasta i komend wygląda tak: 

InventoryListener:

 

Edytowane przez Virosel
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250707
Udostępnij na innych stronach

  • 0

Po zakupie: 

for (String cmd : mapka.get(item)) {
	cmd = cmd.replace("{PLAYER}", p.getDisplayName());
	Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd);

 

Edytowane przez kerpson
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250708
Udostępnij na innych stronach

  • 0
W dniu 25.06.2020 o 16:15, kerpson napisał:

Po zakupie: 


for (String cmd : mapka.get(item)) {
	cmd = cmd.replace("{PLAYER}", p.getDisplayName());
	Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd);

 

Nie działa :/

Błąd z konsoli:

16:42:56 INFO]: VIROZ_PL issued server command: /sklep
[16:43:00 ERROR]: Could not pass event InventoryClickEvent to vShop v1.2
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1630) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_251]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_251]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
Caused by: java.lang.NullPointerException
        at pl.viroz.shop.Listeners.ShopPremiumInventoryListener.onInventoryClick(ShopPremiumInventoryListener.java:44) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_251]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_251]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more

 

Edytowane przez Wojciu
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250712
Udostępnij na innych stronach

  • 0
3 minuty temu, Virosel napisał:

Nie działa :/

Błąd z konsoli:

16:42:56 INFO]: VIROZ_PL issued server command: /sklep
[16:43:00 ERROR]: Could not pass event InventoryClickEvent to vShop v1.2
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1630) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_251]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_251]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
Caused by: java.lang.NullPointerException
        at pl.viroz.shop.Listeners.ShopPremiumInventoryListener.onInventoryClick(ShopPremiumInventoryListener.java:44) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_251]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_251]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_251]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        ... 15 more

pokaż tą linijkę

ShopPremiumInventoryListener.java: linijka 44

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250713
Udostępnij na innych stronach

  • 0
1 minutę temu, kerpson napisał:

zaraz pokminie, a na szybko to spróbuj


Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), cmd.replace("{PLAYER}", p.getDisplayName()));

 

Czyli zamienic tamtego for'a na to, tak? nie wazne, sorry, ale dzis caly dzien przed kompem :/

 

Edytowane przez Virosel
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250716
Udostępnij na innych stronach

  • 0
				consoleCommands.put(item, consoleCmds);

                List<String> bc = new ArrayList<>();
                for (String s : Main.getInst().getConfig().getStringList(path + ".broadcast")) {
                    bc.add(s);
                }

                broadcasts.put(item, bc);

                item.addUnsafeEnchantments(map);

zamień na:

				item.addUnsafeEnchantments(map);
consoleCommands.put(item, consoleCmds);

                List<String> bc = new ArrayList<>();
                for (String s : Main.getInst().getConfig().getStringList(path + ".broadcast")) {
                    bc.add(s);
                }

                broadcasts.put(item, bc);

             

 

Edytowane przez kerpson
musisz wcześniej dodać enchanty, nie wykrywa itemu bo dodałeś go do mapki przed nadaniem mu enchantu
Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250719
Udostępnij na innych stronach

  • 0
3 minuty temu, kerpson napisał:

				consoleCommands.put(item, consoleCmds);

                List<String> bc = new ArrayList<>();
                for (String s : Main.getInst().getConfig().getStringList(path + ".broadcast")) {
                    bc.add(s);
                }

                broadcasts.put(item, bc);

                item.addUnsafeEnchantments(map);

zamień na:


				item.addUnsafeEnchantments(map);
consoleCommands.put(item, consoleCmds);

                List<String> bc = new ArrayList<>();
                for (String s : Main.getInst().getConfig().getStringList(path + ".broadcast")) {
                    bc.add(s);
                }

                broadcasts.put(item, bc);

             

 

A jak z broadcastem, też muszęzrobić fora, czy poprostu "pokolorować" listę i Bukkit.broadcastMessage

 

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250720
Udostępnij na innych stronach

  • 0
4 minuty temu, Virosel napisał:

A jak z broadcastem, też muszęzrobić fora, czy poprostu "pokolorować" listę i Bukkit.broadcastMessage

 

Zależy czy chcesz wysyłać wiadomości również do konsoli czy tylko do graczy.

Jak to 1 to robisz to samo co przy komendzie tylko wysyłasz wiadomości na Bukkit.broadcastMessage(ChatColor.translate());

A jak tylko do graczy:

Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(wiadomosc));

 

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250721
Udostępnij na innych stronach

  • 0
2 minuty temu, kerpson napisał:

Zależy czy chcesz wysyłać wiadomości również do konsoli czy tylko do graczy.

Jak to 1 to robisz to samo co przy komendzie tylko wysyłasz wiadomości na Bukkit.broadcastMessage(ChatColor.translate());

A jak tylko do graczy:


Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(wiadomosc));

 

Broadcast się wyświetla, ale zanim to się stanie jest jakby "chwilowy lag", mam na myśli, że item "odkłada" się po jakiejś sekundzie, broadcast tak samo

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250722
Udostępnij na innych stronach

  • 0
Teraz, kerpson napisał:

możliwy lag serwera przy tej akcji. może za słaba maszyna czy coś

Serwer jest postawiony na moim komputerze i miał przypisany 1 GB, ale jednak był to problem ramu, po przypisaniu 2 GB wszystko śmiga bez opóźnień, dzięki :)

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250724
Udostępnij na innych stronach

  • 0

Sorry, że piszę kolejną odpowiedź, ale napotkałem kolejny problem. Mam na myśli to, że chciałem "zabezpieczyć" sklep premium, tak żeby nie można było kupić np. rangi VIP dwa razy, w tym celu stworzyłem plik services.yml, w którym chcę zapisywać kupione przedmioty/usługi. Każdej usłudze w pliku konfiguracyjnym przypisuję ID, wszystko działa, lecz po kupieniu jednej rzeczy o ID np. 0, nie można zakupić innej, o ID 1.

 

Kod z PremiumServicesManager(Manager odpowiadający za usługi):

 

Kod z Inventory Listenera: 

 

 

Zapomniałem dodać, że w configu ustalam też czy item/usługę można kupić kilka razy.

sekcja config.yml:

 

 

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250748
Udostępnij na innych stronach

  • 0
public static boolean canBuy(Player p, int serviceID){
        File f = new File(Main.getInst().getDataFolder(), "services.yml");
        YamlConfiguration config = YamlConfiguration.loadConfiguration(f);
        List<Integer> services = config.getIntegerList("Players." + p.getName() + ".servicesBought");

        if(services.contains(serviceID)){
            return true;
        }else{
            return false;
        }

Nie powinno być na odwrót ? Pierw chyba return false, bo przecież gracz ma zakupioną tą usługę, a potem return true po else.

 

O wiele łatwiej byłoby ci zrobić obiekt Shop i tam zapisywać usługi itd itd itd. https://javastart.pl/baza-wiedzy/programowanie-obiektowe

public class Shop {

	private final ItemStack is;
	private final int price;

	public Shop(ItemStack is, int price) {
		this.is = is;
		this.price = price;
	}

	public ItemStack getItem() {
		return is;
	}

	public int getPrice() {
		return price;
public class ShopManager {

	private final static Map<ItemStack, shop> map = new HashMap>();
      
    public static Shop getShop(ItemStack is) {
    	if (map.containsKey(is)) {
      		return map.get(is);
      	} 
      
      	return null;
    }
      
    public static void add(ItemStack is, Shop shop) {
      	map.put(is, shop);
    }

No i w configu np;

Shop shop = new Shop(is, price);
ShopManager.add(is, shop);

/W jakiejś metodzie
Shop shop = ShopManager.getShop(is);
int price = shop.getPrice(); /cena

 

Odnośnik do komentarza
https://skript.pl/temat/39888-przedmioty-z-configu/#findComment-250756
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ę...