Счетчик посещений учитывается дважды в плагине PaperMCJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Счетчик посещений учитывается дважды в плагине PaperMC

Сообщение Anonymous »

Я работаю над плагином 1.19.4 PaperMC, который подсчитывает попадания для суператаки. Моя проблема в том, что когда я нажимаю на объект, удар засчитывается как два. Счетчик попаданий необходим для активации суператаки, которая активируется, когда количество попаданий достигает 20.
Вот соответствующий код для метода подсчета попаданий:

Код: Выделить всё

@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»