Skocz do zawartości
  • 0

Problem z getDurability.


rozumek29
 Udostępnij

Pytanie

Witam, chcę sprawić aby przedmiot stał się nie używalny gdy ma 1 punkt durability, ale mój kod nie działa z jakiegoś powodu. W internecie znalazłem coś o interfejsie Damagable, ale nie wiem za bardzo jak go użyć bo dostaje błąd. Działam na Spigocie 1.17 jeśli to pomoże. 

@EventHandler
    public void blockBreakEvent(BlockBreakEvent event){
        Player player = event.getPlayer();
        ItemStack itemStack = player.getInventory().getItemInMainHand();
        if (itemStack.getDurability() <= 1){
            itemStack.setDurability((short) 1);
            event.setCancelled(true);
            return;
        }
  // Dalszy kod.
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

6 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
24 minuty temu, rozumek29 napisał:

No dobra ale wtedy nie zablokuję eventu kopania bloku prawda ?

Tak, kopanie bloku to tylko jeden z kilku przypadków, kiedy ktoś może zniszczyć narzędzie. Takie rzeczy jak debugowanie tego skrawka kodu i sprawdzanie durability mamy za sobą?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
@EventHandler
	public void onBlockBreak(BlockBreakEvent event)
	{
		Player player = event.getPlayer();
		ItemStack tool = event.getPlayer().getInventory().getItemInMainHand();
		if(tool == null || tool.getType().equals(Material.AIR)) return;
		Damageable meta = (Damageable) tool.getItemMeta();
		int md = tool.getType().getMaxDurability();
		int cd = meta.getDamage();
		if(md-cd == 1){
			event.setCancelled(true);
			player.sendMessage(ChatColor.RED + "Twój przedmiot jest zbyt słaby aby to wykopać.");
			return;
		}
	}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
W dniu 24.08.2021 o 17:00, Shooterowy napisał:
@EventHandler
	public void onBlockBreak(BlockBreakEvent event)
	{
		Player player = event.getPlayer();
		ItemStack tool = event.getPlayer().getInventory().getItemInMainHand();
		if(tool == null || tool.getType().equals(Material.AIR)) return;
		Damageable meta = (Damageable) tool.getItemMeta();
		int md = tool.getType().getMaxDurability();
		int cd = meta.getDamage();
		if(md-cd == 1){
			event.setCancelled(true);
			player.sendMessage(ChatColor.RED + "Twój przedmiot jest zbyt słaby aby to wykopać.");
			return;
		}
	}

 

nie mam takiej metody jak getDamage() z jakiegoś powodu.

 

EDIT.

Dobra okazało się że są dwa interfejsy Damageable i autoimport zaimplementował niewłasciwy

Edytowane przez rozumek29
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...