Skocz do zawartości
  • 0

Inventory


kerpson

Pytanie

siema zrobiłem plugin na ustawienia itd. Ale trudno. Gui miało być jedno, ale dla każdego gracza sloty miały się ustawiać kiedy on kliknie. A wyszło, że się setowały kiedy ktoś inny kliknął

	public static Inventory settings;
	public ItemStack glass, spawn;
	public ItemStack spawnon, spawnoff;
	
	public Settings(){
		glass = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 15).setName(MessageUtil.colored("&0#")).toItemStack();
		
		spawn = new ItemBuilder(Material.PAPER, 1).addEnchant(Enchantment.DURABILITY, 10).setName(MessageUtil.colored("&cTeleportacja na spawn")).setLore(MessageUtil.colored("&8» &7Teleportacja na spawn po wejsciu na serwer")).toItemStack();
		spawnon = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 5).setName(MessageUtil.colored("&aWLACZONE")).toItemStack();
		spawnoff = new ItemBuilder(Material.STAINED_GLASS_PANE, 1).setDurability((short) 14).setName(MessageUtil.colored("&cWYLACZONE")).toItemStack();
	
	}
	
	private void openInventory(Player p){
		User u = User.get(p);
		settings = Bukkit.getServer().createInventory(p, 36, "§c» Ustawienia konta");
		for(int i = 0; i < 36; i++){
			settings.setItem(i, glass);
			settings.setItem(10, spawn);
		}
		
		if(u.getSpawn() == true){
			settings.setItem(19, spawnon);
		} else if(u.getSpawn() == false){
			settings.setItem(19, spawnoff);
		}
		p.openInventory(settings);
	}
	
	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args) {
		if(cmd.getName().equalsIgnoreCase("settings")){
			if(sender instanceof Player){
				Player p = (Player) sender;
				openInventory(p);
			}
		}
		return false;
	}
	
	@EventHandler(priority = EventPriority.HIGH)
	public void onInvClick(InventoryClickEvent e){
		if(e.isCancelled()) return;
		if(e.getInventory() == null) return;
		if(e.getCurrentItem() == null) return;
		if(e.getCurrentItem().getType().equals(Material.AIR)) return;
		
		if(e.getInventory().getName() == "§c» Ustawienia konta"){
			e.setCancelled(true);
			if(e.getCurrentItem().getItemMeta().getDisplayName().equals(MessageUtil.colored("&cTeleportacja na spawn"))){
				Player p = (Player) e.getWhoClicked();
				User u = User.get(p);
				if(u.getSpawn() == true){
					u.setSpawn(false);
					settings.setItem(19, spawnoff);
				} else if(u.getSpawn() == false){
					u.setSpawn(true);
					settings.setItem(19, spawnon);
				}
			}
		}
	}
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
5 minut temu, Ixidi napisał:

No skoro otwierasz i modyfikujesz każdemu to samo Inventory to tak się dzieje.
Musisz dla każdego gracza tworzyć osobne.

Tylko nie mam pomysłu jak. 

Próbowałem wielu metod, spędziłem nad tym ponad godzinę i nic.

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ę...