Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak zrobić inventory w innej klasie


Zimmex

Rekomendowane odpowiedzi

Opublikowano

Witam,

Mam problem z pluginem.

Jestem początkujący w javie i mam problem z inventory.

W innych klasach planuje zrobić inventory aby mieć w miare porządek :)

Niestety gdy wpisze p.openInventory(nazwaklasy.nazwagui) inventory wyświetla się, ale bez itemów. Ktoś pomoże?

 

Klasy:

 

Inventory (invboy):
 

	public static Inventory invboy = Bukkit.createInventory(null, 9, "test");{
		invboy.setItem(0, invitems.inv1pusto());
	}

Komenda:

	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		if(cmd.getName().equalsIgnoreCase("test")){
			if(!(sender instanceof Player)){
				sender.sendMessage("error");
				return false;
			}
			Player p = (Player) sender;
			p.openInventory(invboy.invboy);
		}
		return false;
	}
Opublikowano

  • Nie robimy takich cudów jak bloki w klamrach po polach

Na końcu onCommand powinno być true

Radzę robić sensowniejsze nazwy zmiennych, pól i metod

Nie wiemy co zwraca "invitem.inv1pusto()". Zdebuguj to.

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("test")){
            if(!(sender instanceof Player)){
                sender.sendMessage("error");
                return false;
            }
            Player p = (Player) sender;
           invboy.openInv(p);
        }
        return false;
    }
public static void openInv(Player p){
    public static Inventory invboy = Bukkit.createInventory(null, 9, "test");
        invboy.setItem(0, invitems.inv1pusto());
 p.openInventory(invbov);
    }

to tak troche bez sensu

 

    public static Inventory invboy = Bukkit.createInventory(null, 9, "test");{
        invboy.setItem(0, invitems.inv1pusto());
    }
Opublikowano

 

  • Nie robimy takich cudów jak bloki w klamrach po polach
  • Na końcu onCommand powinno być true
  • Radzę robić sensowniejsze nazwy zmiennych, pól i metod
  • Nie wiemy co zwraca "invitem.inv1pusto()". Zdebuguj to.

 

 

invitem.inv1pusto to itemstack w innej klasie 

	public static ItemStack inv1pusto(){
		@SuppressWarnings("deprecation")
		ItemStack invpusto1 = new ItemStack(160, 1, (short)15);
		ItemMeta invpusto1m = invpusto1.getItemMeta();
		invpusto1m.setDisplayName("§7");
		invpusto1.setItemMeta(invpusto1m);
		return invpusto1;
	}
Opublikowano

Pewnie się sypie bo dodajesz to poza konstruktorem czy czymkolwiek co ma ręce i nogi jako init.

Dodaj mój nick do posta jeśli potrzebujesz pomocy | Piszę pluginy na zlecenie | Pomagam z Linuxem

newlogo.png

Opublikowano
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if(cmd.getName().equalsIgnoreCase("test")){
            if(!(sender instanceof Player)){
                sender.sendMessage("error");
                return false;
            }
            Player p = (Player) sender;
           invboy.openInv(p);
        }
        return false;
    }
public static void openInv(Player p){
    public static Inventory invboy = Bukkit.createInventory(null, 9, "test");
        invboy.setItem(0, invitems.inv1pusto());
 p.openInventory(invbov);
    }

to tak troche bez sensu

    public static Inventory invboy = Bukkit.createInventory(null, 9, "test");{
        invboy.setItem(0, invitems.inv1pusto());
    }

 

Działa! Itemki wyświetlają się nawet z nazwą :D Można zamknąć

Opublikowano

Ja od siebie jeszcze trochę wniosę, bo nikt tego tutaj nie podał - co jest dziwne..

O ile w inventory masz ,,stałą" wartość, to powinno one być stworzone raz i trzymane w jakieś zmiennej i z niej otwierane, tak samo w przypadku itemstacku.
Nie ma sensu, by przy każdym otwarciu, tworzyło kolejne i kolejne menu wraz z kolejnymi i kolejnymi itemstack'ami. 

784091427630431250239.png

Regulamin sygnatur

Opublikowano

Ja od siebie jeszcze trochę wniosę, bo nikt tego tutaj nie podał - co jest dziwne..

O ile w inventory masz ,,stałą" wartość, to powinno one być stworzone raz i trzymane w jakieś zmiennej i z niej otwierane, tak samo w przypadku itemstacku.

Nie ma sensu, by przy każdym otwarciu, tworzyło kolejne i kolejne menu wraz z kolejnymi i kolejnymi itemstack'ami. 

 

Jestem początkujący w pisaniu pluginów i nie bardzo wiem o co chodzi :)

Opublikowano

 

Ja od siebie jeszcze trochę wniosę, bo nikt tego tutaj nie podał - co jest dziwne..

O ile w inventory masz ,,stałą" wartość, to powinno one być stworzone raz i trzymane w jakieś zmiennej i z niej otwierane, tak samo w przypadku itemstacku.

Nie ma sensu, by przy każdym otwarciu, tworzyło kolejne i kolejne menu wraz z kolejnymi i kolejnymi itemstack'ami. 

 

Jestem początkujący w pisaniu pluginów i nie bardzo wiem o co chodzi :)

 

Jeśli inventory np. pokazujące informacje, która ciągle będzie taka sama (NAZWA-SERWERA) to tworzysz je raz i zapisujesz do zmiennej i tak samo z itemstackiem

Jeśli inventory to np. informacje o dropie, gdzie lore sie zmienia bo np. dany drop bedzie mial zmieniana szanse,aktywnosc(true/false) turbodrop bedzie mial zmieniane lore itd to musisz robic to od nowa

Opublikowano

 

 

Ja od siebie jeszcze trochę wniosę, bo nikt tego tutaj nie podał - co jest dziwne..

O ile w inventory masz ,,stałą" wartość, to powinno one być stworzone raz i trzymane w jakieś zmiennej i z niej otwierane, tak samo w przypadku itemstacku.

Nie ma sensu, by przy każdym otwarciu, tworzyło kolejne i kolejne menu wraz z kolejnymi i kolejnymi itemstack'ami. 

 

Jestem początkujący w pisaniu pluginów i nie bardzo wiem o co chodzi :)

 

Jeśli inventory np. pokazujące informacje, która ciągle będzie taka sama (NAZWA-SERWERA) to tworzysz je raz i zapisujesz do zmiennej i tak samo z itemstackiem

Jeśli inventory to np. informacje o dropie, gdzie lore sie zmienia bo np. dany drop bedzie mial zmieniana szanse,aktywnosc(true/false) turbodrop bedzie mial zmieniane lore itd to musisz robic to od nowa

 

 

A już wiem o co chodzi, skorzystam z tego rozwiązania gdyż nazwa inventory będzie taka sama

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...