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

Puste GUI


MieciuXD1234

Rekomendowane odpowiedzi

Opublikowano

Siema jak wchodzę na serwer to mam puste GUI, to jest kod:

    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        Player p = e.getPlayer();
    
        new BukkitRunnable() {

            @Override
            public void run() {
                p.openInventory(Gui.inv);
            }
            
        }.runTaskLater(Main.getInst(), 2 * 20);
    }

Opublikowano

Macie:

    public static Inventory inv = Bukkit.getServer().createInventory(null, 9, "Tryby");
         
    public boolean onCommand(CommandSender sender, Command cmd, String l, String[] args) {
        if(cmd.getName().equalsIgnoreCase("tryby")) {
            Player p = (Player) sender;
            inv.setItem(0, ItemManager.getInstance().gracz);
            inv.setItem(1, ItemManager.getInstance().vip);
            inv.setItem(2, ItemManager.getInstance().youtuber);
            inv.setItem(3, ItemManager.getInstance().streamer);
            inv.setItem(4, ItemManager.getInstance().helper);
            inv.setItem(5, ItemManager.getInstance().moderator);
            inv.setItem(6, ItemManager.getInstance().admin);
            inv.setItem(7, ItemManager.getInstance().headadmin);
            inv.setItem(8, ItemManager.getInstance().wlasciciel);
            p.openInventory(inv); 
    }    
            
        
        return false;
    }

}

Opublikowano
    public static Inventory inv = Bukkit.getServer().createInventory(null, 9, "Tryby");

przeciez to jest puste, dopiero po wykonaniu komendy /tryby cos tam sie dzieje

 

//o ile sie nie myle

 

 

JAVA <3

 

Opublikowano

Jak to duzy plugin to lepiej zrobic tak;

tworzysz sobie klase ItemBuilder, 

https://pastebin.com/raw/gfJAXvWX

przy dolaczaniu zamiast p.openInventory(...);

dajesz:

    gui.inv(p);

i zamiast tego swojego tworzenia "inventory" dajesz przykladowo cos takiego:

  public static InventoryView inv(Player p)
  {
    Inventory inv = Bukkit.createInventory(p, 9, "Tryby.");
    ItemBuilder ITEM = new ItemBuilder(Material.DIAMOND_SWORD).setTitle("item");
    inv.setItem(inv.getSize() - 4, ITEM.build());
    return p.openInventory(inv);
  }

lub robisz normalnie latwiej;

//przy dolaczaniu tak jak miales
//w klasie gui robisz tak:
    Inventory inv = Bukkit.createInventory(null, 9, "Tryby");
    inv.setItem(4, new ItemStack(Material.DIAMOND_SWORD));

a jak wszystko masz w mainie to do inventory (tworzenia) wystarczy cos takiego;

package pl.entify.inventory;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class Main 
{
   {
    Inventory inv = Bukkit.createInventory(null, 9, "Tryby");
    inv.setItem(4, new ItemStack(Material.DIAMOND_SWORD));
}
}

 

 

 

JAVA <3

 

Opublikowano
public class Main 
{
   {
    Inventory inv = Bukkit.createInventory(null, 9, "Tryby");
    inv.setItem(4, new ItemStack(Material.DIAMOND_SWORD));
}
}

Nie, nie i nie. Nie jesteś w stanie znaleźć powodu na zastosowanie takiej składni, stosuje się to w ostateczności. Albo konstruktor, albo jakaś metoda albo statyczny blok. Swoją drogą, w takim przypadku zmiennej inv chyba kończy się scope linijkę później i znika...

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

newlogo.png

Opublikowano
Dnia 29.05.2017 o 14:57, Entify napisał:

Jak to duzy plugin to lepiej zrobic tak;

tworzysz sobie klase ItemBuilder, 


https://pastebin.com/raw/gfJAXvWX

przy dolaczaniu zamiast p.openInventory(...);

dajesz:


    gui.inv(p);

i zamiast tego swojego tworzenia "inventory" dajesz przykladowo cos takiego:


  public static InventoryView inv(Player p)
  {
    Inventory inv = Bukkit.createInventory(p, 9, "Tryby.");
    ItemBuilder ITEM = new ItemBuilder(Material.DIAMOND_SWORD).setTitle("item");
    inv.setItem(inv.getSize() - 4, ITEM.build());
    return p.openInventory(inv);
  }

lub robisz normalnie latwiej;


//przy dolaczaniu tak jak miales
//w klasie gui robisz tak:
    Inventory inv = Bukkit.createInventory(null, 9, "Tryby");
    inv.setItem(4, new ItemStack(Material.DIAMOND_SWORD));

a jak wszystko masz w mainie to do inventory (tworzenia) wystarczy cos takiego;


package pl.entify.inventory;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class Main 
{
   {
    Inventory inv = Bukkit.createInventory(null, 9, "Tryby");
    inv.setItem(4, new ItemStack(Material.DIAMOND_SWORD));
}
}

 

Czy ty wszystko musisz podpierdzielać ? ItemBuilder nie twój.

Nie znasz podstaw to sie nie wypowiadaj, bo uczysz gościa tego co ty potrafisz, czyli niczego.

 

@Topic

1. Zrób sobie metode statyczną która setuje i otwiera inventory.

public static Inventory openInventory(Player p){// Tu nie musi być typ Inventory możesz dać void a potem usunąć na koncu return inv;
	Inventory inv = Bukkit.create.....;
  	inv.setItem(0, jakisItemStack);
  	p.openInventory(inv);
    return inv;
}

2. Przy dolaczaniu użyj tej metody.

@EventHandler
  public void onJoin(PlayerJoinEvent e){
 //Ten twój task
  {
    NazwaKlasy.openInventory(e.getPlayer());
  }
}

3. Koniec

Opublikowano
1 godzinę temu, TheMajster napisał:

Czy ty wszystko musisz podpierdzielać ? ItemBuilder nie twój.

Nie znasz podstaw to sie nie wypowiadaj, bo uczysz gościa tego co ty potrafisz, czyli niczego.

 

@Topic

1. Zrób sobie metode statyczną która setuje i otwiera inventory.


public static Inventory openInventory(Player p){// Tu nie musi być typ Inventory możesz dać void a potem usunąć na koncu return inv;
	Inventory inv = Bukkit.create.....;
  	inv.setItem(0, jakisItemStack);
  	p.openInventory(inv);
    return inv;
}

2. Przy dolaczaniu użyj tej metody.


@EventHandler
  public void onJoin(PlayerJoinEvent e){
 //Ten twój task
  {
    NazwaKlasy.openInventory(e.getPlayer());
  }
}

3. Koniec

 

A ty uczysz kolejnych błędów, których nawet nie jesteś świadomy :|.

 

Jeśli Twoje inventory w żaden sposób nie wymaga ,,zmiennych", czy też jakiś dupereli, które się w stosunku do gracza zmieniają, to menu tworzysz tylko i wyłącznie raz, przy starcie serwera i trzymasz w zmiennej.
Później się tylko i wyłącznie do niego odwołujesz i go otwierasz.
Sprawa się ma inaczej, jeśli przykładowo w menu chcesz dać nick gracza, jego HP, czy też cokolwiek z nim związanego, wtedy używasz metody UP.

784091427630431250239.png

Regulamin sygnatur

Opublikowano
31 minut temu, Oldis napisał:

 

A ty uczysz kolejnych błędów, których nawet nie jesteś świadomy :|.

 

Jeśli Twoje inventory w żaden sposób nie wymaga ,,zmiennych", czy też jakiś dupereli, które się w stosunku do gracza zmieniają, to menu tworzysz tylko i wyłącznie raz, przy starcie serwera i trzymasz w zmiennej.
Później się tylko i wyłącznie do niego odwołujesz i go otwierasz.
Sprawa się ma inaczej, jeśli przykładowo w menu chcesz dać nick gracza, jego HP, czy też cokolwiek z nim związanego, wtedy używasz metody UP.

Oj oldisie, wiem, ale ten plugin zapewne będzie używany na jakimś małym serwerze i serwer tego nie odczuje jak nawet otwierac bedzie nowe gui co chwile. 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...