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

Bug | Niezniszczalny kilof


MineAnonim

Rekomendowane odpowiedzi

Opublikowano

Cześć! ostatnio napisałem plugin, który m.in po wykopaniu stone daje setCanceled, ustawia powietrze na danej lokacji i zabiera 1 użycie kilofa. Problem jest taki, że po wyczerpaniu tego kilofa użycia idą ciągle w dół :/ Na minus.. Tym sposobem można mieć kilof -100/131 użyć i dalej móc nim kopać. Moje pytanie brzmi: Jak po wykopaniu bloku sprawdzić, czy przedmiot w ręku ma więcej niż 0 użyć? Próbowałem tak, ale nie działa:

 

if(p.getInventory().getItemInHand().getDurability() > 0){

// usuwanie 1 użycia z kilofa

}else{

p.getInventory().getItemInHand().setType(Material.AIR);

}

 

Proszę o szybką pomoc :/

Opublikowano

player.getInventory().removeItem(p.getInventory().getItemInHand());
player.getInventory().updateInventory();

or

 

    public static void recalculateDurability(final Player player, final ItemStack item) {
        if (item == null) {
            return;
        }
        if (item.getType().equals(Material.AIR)) {
            return;
        }
        if (item.getType().getMaxDurability() == 0) {
            return;
        }
        final int enchantLevel = item.getEnchantmentLevel(Enchantment.DURABILITY);
        final short d = item.getDurability();
        if (enchantLevel > 0) {
            if (100 / (enchantLevel + 1) > getIntBetween(0, 100)) {
                if (d == item.getType().getMaxDurability()) {
                    player.getInventory().clear(player.getInventory().getHeldItemSlot());
                    player.playSound(player.getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
                } else {
                    item.setDurability((short) (d + 1));
                }
            }
        } else if (d == item.getType().getMaxDurability()) {
            player.getInventory().clear(player.getInventory().getHeldItemSlot());
            player.playSound(player.getLocation(), Sound.ENTITY_ITEM_BREAK, 1.0f, 1.0f);
        } else {
            item.setDurability((short) (d + 1));
        }
    }
Opublikowano

maxdurability to jest np w złotym kilofie 32? Maksymalna liczba użyć? Czyli można by to tak:

 

if(p.getInventory().getItemInHand().getDurability() <= p.getInventory().getItemInHand().getType().getMaxDurability()-p.getInventory().getItemInHand().getDurability()){

p.getInventory().clear(p.getInventory().getHeldItemSlot());

}

 

Nie wiem.. Chyba coś pomieszałem

Opublikowano

 

Nadal to samo :/ + Jeżeli kilof nie jest w ogóle zużyty także usuwa 

Dorzuciłem tam gotową metodę ;_;

 

getIntBetween błąd :/ Sory, ale możesz mi wytłumaczyć po co wgl jest ten fragment?

Opublikowano
if(p.getInventory().getItemInMainHand().getDurability() == p.getInventory().getItemInMainHand().getType().getMaxDurability()-1){

p.getInventory().clear(p.getInventory().getHeldItemSlot());

return;

}

 

Działa :) Dzięki za pomoc!

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...