Skocz do zawartości
  • 0

Problem z oddawaniem itemku


Pytanie

Witam, mam problem z moim pluginem, który dopiero tworzę, chciałem osiągnąć to, że jak ktoś kliknie na iron golema, mając w ręce 64 lub więcej niż 32 dyń to zabiera mu 32 dynie i zostaje reszta lub nie, jeżeli kliknął w niego 32 dyniami. Teraz jest tak, że jak ktoś ma 64 dynie w ręce to zabiera mu te 64 za jednym kliknięciem, ale ja chciałbym tak, że jak ma te 64 dynie w ręce to zabiera mu 32 za jednym kliknięciem i potem  za drugim kliknięciem kolejne 32

int amount = pumpkin.getAmount()
if (amount >= 32) {
pumpkin.setAmount(amount - 32);
player.setItemInHand(pumpkin);

Pozdrawiam

Odnośnik do komentarza
https://skript.pl/temat/23650-problem-z-oddawaniem-itemku/
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Teraz, GotoFinal napisał:

pokaż cały kod, bo niby wygląda ok.

Może upewnij się jakimś prostym player.sendMessage że kod nie wykonuje się 2x?

No właśnie jak mam w ręce 64 i klikam na Iron Golema to player.sendMessage wykonuje się dwa razy, ale jak klikam mając 32 dynie w ręce to wykonuje się raz
 

@EventHandler
public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
    Player player = event.getPlayer();
    ItemStack pumpkin = player.getInventory().getItemInMainHand();
        if (event.getRightClicked() instanceof IronGolem && event.getRightClicked().getCustomName() != null && event.getRightClicked().getCustomName().equals("§cSwiateczny golem")){
        	 if(pumpkin != null && pumpkin.getType() == Material.PUMPKIN) {  
        		 if(pumpkin.hasItemMeta() && pumpkin.getItemMeta().hasDisplayName() && pumpkin.getItemMeta().getDisplayName().equals("§cSwiateczna dynia")) {
        			int amount = pumpkin.getAmount();
        			if (amount >= 32){
        			pumpkin.setAmount(amount - 32);
        			player.setItemInHand(pumpkin);
        			player.sendMessage(ChatColor.GOLD + "Wymieniles dynie na skrzynki");
                getServer().dispatchCommand(getServer().getConsoleSender(), "xg xchest_premiumskrzynia" + player.getName() + " 7");
                getServer().dispatchCommand(getServer().getConsoleSender(), "xg xkey_premiumskrzynia" + player.getName() + " 7");          			     
                } else {
                player.sendMessage(ChatColor.GOLD + "cccc");
                }
        		 }
        	 }
        }
}
}
}

 

Odnośnik do komentarza
https://skript.pl/temat/23650-problem-z-oddawaniem-itemku/#findComment-160325
Udostępnij na innych stronach

  • 0

jeżusz maria, naucz się formatowac kod bo tego się nie da czytać, w eclipse: Ctrl + Shift + F, w jednym prawdziwym IDE - intellij: ctrl alt l

I wtedy wklej jeszcze raz, bo tak to gówno widać.

Edytowane przez GotoFinal
Odnośnik do komentarza
https://skript.pl/temat/23650-problem-z-oddawaniem-itemku/#findComment-160327
Udostępnij na innych stronach

  • 0
1 minutę temu, GotoFinal napisał:

jeżusz maria, naucz się formatowac kod bo tego się nie da czytać, w eclipse: Ctrl + Shift + F, w jednym prawdziwym IDE - intellij: ctrl alt l

Oj, jestem początkującym dopiero :( Ale dziękuję za radę, nie wiedziałem, że tak się da

 

	@EventHandler
	public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
		Player player = event.getPlayer();
		ItemStack pumpkin = player.getInventory().getItemInMainHand();
		if (event.getRightClicked() instanceof IronGolem && event.getRightClicked().getCustomName() != null
				&& event.getRightClicked().getCustomName().equals("§cSwiateczny golem")) {
			if (pumpkin != null && pumpkin.getType() == Material.PUMPKIN) {
				if (pumpkin.hasItemMeta() && pumpkin.getItemMeta().hasDisplayName()
						&& pumpkin.getItemMeta().getDisplayName().equals("§cSwiateczna dynia")) {
					int amount = pumpkin.getAmount();
					if (amount >= 32) {
						pumpkin.setAmount(amount - 32);
						player.setItemInHand(pumpkin);
						player.sendMessage(ChatColor.GOLD + "Wymieniles dynie na skrzynki");
						getServer().dispatchCommand(getServer().getConsoleSender(),
								"xg xchest_premiumskrzynia" + player.getName() + " 7");
						getServer().dispatchCommand(getServer().getConsoleSender(),
								"xg xkey_premiumskrzynia" + player.getName() + " 7");
					} else {
						player.sendMessage(ChatColor.GOLD + "cccc");
					}
				}
			}
		}
	}
}

Proszę

Edytowane przez BumCyk
Odnośnik do komentarza
https://skript.pl/temat/23650-problem-z-oddawaniem-itemku/#findComment-160328
Udostępnij na innych stronach

  • 0

yhym, to pewnie event wykonuje się 2x - z tego co kojarzę chodziło o rękę - musisz sprawdzić czy event.getHand() == EquipmentSlot.HAND\

Bo teraz w mc są dwie ręcę - główna i poboczna - i event wykonuje się 2x dla obu rąk - bo minecraft traktuje tę interakcje jako osobną dla obu rąk

Edytowane przez GotoFinal
Odnośnik do komentarza
https://skript.pl/temat/23650-problem-z-oddawaniem-itemku/#findComment-160331
Udostępnij na innych stronach

  • 0
1 godzinę temu, GotoFinal napisał:

yhym, to pewnie event wykonuje się 2x - z tego co kojarzę chodziło o rękę - musisz sprawdzić czy event.getHand() == EquipmentSlot.HAND\

Bo teraz w mc są dwie ręcę - główna i poboczna - i event wykonuje się 2x dla obu rąk - bo minecraft traktuje tę interakcje jako osobną dla obu rąk

Działa! :D
Cudotwórca
Dziękuję bardzo za pomoc

@Edit
A podpowie jeszcze ktoś jak dodać tekst, żeby wyświetlał się na chacie nie klikając dynią na golema, tylko reką lub obojętnie jakim itemem i żeby podczas oddawania dyni nie pojawiał się?

 

	@EventHandler
	public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
		ArrayList<String> lore = new ArrayList<String>();
		lore.add("§7Zbierz §c32 §aswiateczne dynie");
		lore.add("§7i wymien je na spawnie");
		lore.add("§7u §aswiatecznego golema");
		lore.add("§7na §cskrzynie §7i §cklucze premium");
		Player player = event.getPlayer();
		ItemStack pumpkin = player.getInventory().getItemInMainHand();
		if (event.getRightClicked() instanceof IronGolem && event.getHand() == EquipmentSlot.HAND
				&& event.getRightClicked().getCustomName() != null
				&& event.getRightClicked().getCustomName().equals("§aSwiateczny golem")) {
			if (pumpkin != null && pumpkin.getType() == Material.PUMPKIN) {
				if (pumpkin.hasItemMeta() && pumpkin.getItemMeta().hasDisplayName()
						&& pumpkin.getItemMeta().getDisplayName().equals("§aSwiateczna dynia")
						&& pumpkin.getItemMeta().getLore().equals(lore)) {
					int amount = pumpkin.getAmount();
					if (amount >= 32) {
						pumpkin.setAmount(amount - 32);
						player.setItemInHand(pumpkin);
						player.sendMessage("§aWymieniles dynie na skrzynki");
						getServer().dispatchCommand(getServer().getConsoleSender(),
								"xg xchest_premiumskrzynia" + player.getName() + " 7");
						getServer().dispatchCommand(getServer().getConsoleSender(),
								"xg xkey_premiumskrzynia" + player.getName() + " 7");
					} else {
						player.sendMessage(
								"§7Potrzebujesz §c32 §aswiateczne dynie§7, aby wymienic ja na §cskrzynie §7i §cklucze premium");
					}
				}
			}
		}
	}

}

 

Edytowane przez BumCyk
Odnośnik do komentarza
https://skript.pl/temat/23650-problem-z-oddawaniem-itemku/#findComment-160334
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ę...