Luohuayu / CatServer

高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
https://catmc.org
GNU Lesser General Public License v3.0
1.95k stars 204 forks source link

[1.16.5] Can't get the real name of the projectile #812

Open dayd21git opened 11 months ago

dayd21git commented 11 months ago

Minecraft version: 1.16.5 Build version: 1.16.5-671de43b Mods/Plugins: MyMod, MyPlugin Description: When I throw a coin from my mod, I get a projectile with the name SNOWBALL. The class of my coin is inherited from the snowball class, but the coin has its own name ITEM_COIN_BRONZE. Maybe I'm doing something wrong?

Code:

@EventHandler
public void EntityDamageByEntityEvent(EntityDamageByEntityEvent e) {
    Entity taker = e.getEntity();
    // if(!(taker instanceof Player)) return;
    Entity damager = e.getDamager();
    DamageCause cause = e.getCause();
    Bukkit.getConsoleSender().sendMessage("========== EntityDamageByEntityEvent");

    String shooter;
    if(cause != DamageCause.PROJECTILE) shooter = damager.getName();
    else {
        ProjectileSource ptileSource = ((Projectile) damager).getShooter();
        if(!(ptileSource instanceof Player)) shooter = "NULL";
        else shooter = ((Player) ptileSource).getName();
    }

    Bukkit.getConsoleSender().sendMessage("TAKER: " + (taker == null ? "NULL" : taker.getName()));
    Bukkit.getConsoleSender().sendMessage("DAMAGER: " + (damager == null ? "NULL" : damager.getName() + "(" + damager.getType().name() + ")"));
    Bukkit.getConsoleSender().sendMessage("CAUSE: " + (cause == null ? "NULL" : cause.name()));
    Bukkit.getConsoleSender().sendMessage("SHOOTER: " + shooter);
    Bukkit.getConsoleSender().sendMessage("DAMAGE: " + e.getDamage());
    Bukkit.getConsoleSender().sendMessage("FINALDAMAGE: " + e.getFinalDamage());
}

Log:

[13:55:08] [Server thread/INFO]: ========== EntityDamageByEntityEvent
[13:55:08] [Server thread/INFO]: TAKER: Goose
[13:55:08] [Server thread/INFO]: DAMAGER: Snowball(SNOWBALL)
[13:55:08] [Server thread/INFO]: CAUSE: PROJECTILE
[13:55:08] [Server thread/INFO]: SHOOTER: day-d
[13:55:08] [Server thread/INFO]: DAMAGE: 0.0
[13:55:08] [Server thread/INFO]: FINALDAMAGE: 0.0
Kotori0629 commented 10 months ago

Upload this mod, thx

dayd21git commented 10 months ago

Upload this mod, thx

Published on Google drive link