Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Плагин Minecraft Spigot

Игро Акаунт Ученик (76), на голосовании 1 месяц назад
Всем доброго дня, столкнулся с такой проблемой, при попытке изменить урон скелетам следующим кодом:
package hostingminecraft.pro .mobs;

import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Skeleton;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Skel extends JavaPlugin implements Listener {

@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);

}

@Override
public void onDisable() {

}

@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Arrow) {
Arrow arrow = (Arrow) event.getDamager();
if (arrow.getShooter() instanceof Skeleton) {
event.setDamage(30.0);
}
}
}
}


Нечего не происходит, урон НЕ меняется, не ближний не дальний. Подскажите кто знает, как исправить данную ошибку.(у всех остальных мобов урон меняется)

Так же пробовал такой код:
package com.example;

import org.bukkit.entity.EntityType;
import org.bukkit.entity.Skeleton;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class SkeletonDamagePlugin extends JavaPlugin implements Listener {

@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}

@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
if (event.getEntityType() == EntityType.SKELETON && event.getEntity() instanceof Skeleton) {
event.setDamage(30.0);
}
}
}
Голосование за лучший ответ
@Synergyst Мыслитель (8692) 2 месяца назад
EntityDamageByEntityEvent срабатывает до того, как Minecraft рассчитает базовый урон для атаки скелета. То-есть игра перезаписывает это значение своим расчетом. В чем проблема использовать атрибутику и GENERIC_ATTACK_DAMAGE?
     @EventHandler 
public void onEntitySpawn(EntitySpawnEvent event) {
if (event.getEntityType() == EntityType.SKELETON) {
Skeleton skeleton = (Skeleton) event.getEntity();
skeleton.getAttribute(Attribute.GENERIC_ATTACK_DAMAGE).setBaseValue(30.0);
}
}
Похожие вопросы