Вот соответствующий код для метода подсчета попаданий:
Код: Выделить всё
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent event) {
// Sprawdzanie czy zadający jest graczem
if (!(event.getDamager() instanceof Player)) {
return;
}
Player player = (Player) event.getDamager();
ItemStack item = player.getInventory().getItemInMainHand();
if (item == null || item.getType() != Material.NETHERITE_AXE || !item.getItemMeta().hasDisplayName() || !item.getItemMeta().getDisplayName().equals(WEAPON_NAME)) {
return;
}
if (player.getAttackCooldown() < 0.9) return;
UUID playerId = player.getUniqueId();
// Sprawdź, czy gracz trzyma przedmiot w głównej ręce
if (player.getInventory().getItemInMainHand() != null && player.getInventory().getItemInMainHand().getType() != Material.AIR) {
int hits = hitCounter.getOrDefault(playerId, 0) + 1;
// Zaktualizuj licznik hitów
hitCounter.put(playerId, hits);
long currentTime = System.currentTimeMillis();
long lastHit = lastHitTime.getOrDefault(playerId, 0L);
// Jeśli atak był zbyt szybko po poprzednim ataku, nie licz go
if (currentTime - lastHit < HIT_INTERVAL) return;
lastHitTime.put(playerId, currentTime);
updateActionBar(player, hits);
// Sprawdzanie czy jest wystarczająca ilość hitów na super atak
if (hits >= 20 && !superAttackReady.getOrDefault(playerId, false)) {
superAttackReady.put(playerId, true);
player.sendMessage(slMessageCustom + ChatColor.GREEN + "ꜱᴜᴘᴇʀ ᴀᴛᴀᴋ ɢᴏᴛᴏᴡʏ! ᴋʟɪᴋɴɪᴊ ᴘᴘᴍ ᴀʙʏ ᴀᴋᴛʏᴡᴏᴡᴀᴄ.");
}
// Dodawanie efektu withera graczom podczas super ataku
if (isSuperAttackActive(player) && event.getEntity() instanceof LivingEntity) {
LivingEntity target = (LivingEntity) event.getEntity();
target.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 80, 1));
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... rmc-plugin
Мобильная версия