Skocz do zawartości
  • 0

Problem z czescia kodu


1Hubilol0

Pytanie

Czesc mam taki kod

    @EventHandler(ignoreCancelled = false, priority = EventPriority.HIGHEST)
    public void onDamage(EntityDamageEvent e){
        Player p = (Player) e.getEntity();
            p.sendMessage("§aDostales damage!");
            p.sendMessage("§cDostales damage!");
            p.getInventory().getHelmet().setDurability((short) -1);
            p.getInventory().getChestplate().setDurability((short) -1);
            p.getInventory().getLeggings().setDurability((short) -1);
            p.getInventory().getBoots().setDurability((short) -1);
    }
}

Chodzi zeby zbroja nie tracila na wytrzymalosci, z tym uderze z miecza sharpness 200 i zbroja peka... Pomocy.

Probowalem z 0 i +10 ale tez nie dzialalo

Edytowane przez Ixidi
[code]
Odnośnik do komentarza
Udostępnij na innych stronach

14 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
p.getInventory().getInventory().getHelmet().setDurability(
		(short) (p.getInventory().getHelmet().getDurability() - 1));
p.updateInventory();

nie wiem co dokladniej chcesz osiagnac, ale chyba o cos tkaiego ci chodzilo, i co do samego eventu ;/ jak juz chcesz to wybierz entitydamagebyentityevent, i do tego sprawdzaj czy e.getentity instanceof player bo inaczej castujesz playera do np. zombie i wywali bledy

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
@EventHandler(ignoreCancelled = false, priority = EventPriority.HIGHEST)
    public void onDamage(EntityDamageEvent e){
        Player p = (Player) e.getEntity();
		p.getInventory().setHelmet(p.getInventory().getHelmet().getDurability() - 1);
		p.getInventory().setChestplate(p.getInventory().getChestplate().getDurability() - 1);
		p.getInventory().setLeggings(p.getInventory().getLeggings().getDurability() - 1);
		p.getInventory().setBoots(p.getInventory().getBoots().getDurability() - 1);
    }

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

@1Hubilol0
Tak na wstępie. Krótko. Nie używaj paragrafów do nadawania kolorów, wystarczy korzystać z ChatColor.translateAlternateColorCodes. Efekt ten sam, a mniej obciąża.

Ustawiasz parametr dla EventHandlera z ignoreCancelled na "false". Nie ma takiej potrzeby, domyślnie jest już tak ustawiony.

Napisałem kawałek kodu:

public class ArmorDurability implements Listener {

    @EventHandler(priority = EventPriority.HIGHEST)
    public void armorDurability(EntityDamageEvent e) {
        final Player player = (Player) e.getEntity();
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aDostales damage !"));
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cDostales damage !"));
        player.getInventory().setHelmet(restoreDurability(player.getInventory().getHelmet()));
        player.getInventory().setChestplate(restoreDurability(player.getInventory().getChestplate()));
        player.getInventory().setLeggings(restoreDurability(player.getInventory().getLeggings()));
        player.getInventory().setBoots(restoreDurability(player.getInventory().getBoots()));

    }

    protected ItemStack restoreDurability(final ItemStack itemStack) {
        itemStack.setDurability(itemStack.getType().getMaxDurability());
        return itemStack;
    }

}

Powinno działać. Wystarczy sprawdzać maksymalną wytrzymałość danego przedmiotu, a następnie ustawić obecną na tą pobraną.

Edytowane przez krzysek
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ę...