java - Bukkit / Spigot API: Mapping damager and Victim -


i'm trying add damager name key, , victim name value, hashmap that's called damagecheck. done in entitydamagebyentityevent. however, when try store both victim , damager, goes wrong.

code:

    private hashmap<string, string> damagecheck = new hashmap<string, string>();  @eventhandler public void onentitydamagebyentityevent(entitydamagebyentityevent event) {      if(event.getentity() instanceof player || event.getdamager() instanceof player) {         player victim = (player) event.getentity();         player damager = (player) event.getdamager();          string victimname = victim.getdisplayname(); // getting victim name         string damagername = damager.getdisplayname(); // getting damager name          bukkit.getserver().broadcastmessage("");         bukkit.getserver().broadcastmessage(victim.getdisplayname() + " victim!");         bukkit.getserver().broadcastmessage(damager.getdisplayname() + " damager!");         bukkit.getserver().broadcastmessage("");          try {             if(!damagecheck.containskey(damagername)) {                 damagecheck.put(victimname, damagername);                  bukkit.getserver().broadcastmessage("");                 bukkit.getserver().broadcastmessage(damagecheck.get(victimname) + " victim!");                 bukkit.getserver().broadcastmessage(damagecheck.get(damagername) + " damager!");                 bukkit.getserver().broadcastmessage("");             } else if(damagecheck.containskey(damagername)) {                 damagecheck.replace(damagername, damagername, damagername);                  bukkit.getserver().broadcastmessage("");                 bukkit.getserver().broadcastmessage(damagecheck.get(victimname) + " victim!");                 bukkit.getserver().broadcastmessage(damagecheck.get(damagername) + " damager!");                 bukkit.getserver().broadcastmessage("");             }         } catch (nullpointerexception e) {             // nothing lol         }      } else {         bukkit.getserver().broadcastmessage("there no entity or damager!");     } } 

enter image description here

first message correct. getsparked victim , fendyk damager. in second message when trying names out of hashmap output's wrong values.

edit: i'v changed damagecheck.put(victimname, damagername); damagecheck.put(damagername, victimname);

but gives victim null (the first time hitting), why that?

enter image description here

so, testing out complete new way of doing this, since didn't understand referring to, anyways code, think need

no need new hashmap <string, string>

private hashmap<string, string> damagecheck = new hashmap<>(); 

code:

@eventhandler public void onentitydamagebyentityevent(entitydamagebyentityevent event) {      if(!(event.getdamager() instanceof player) || !(event.getentity() instanceof player) ) return;      string damagername = event.getdamager().getname();     string victimname = event.getentity().getname();      damagecheck.put(victimname, damagername);      bukkit.broadcastmessage(chatcolor.gray + "" + chatcolor.strikethrough + "-------------[ x ]-------------");     bukkit.broadcastmessage(chatcolor.dark_aqua + damagername + chatcolor.gray + " damager");     bukkit.broadcastmessage(chatcolor.dark_aqua + victimname + chatcolor.gray + " victim");     bukkit.broadcastmessage(chatcolor.gray + "" + chatcolor.strikethrough + "-------------[ x ]-------------");      bukkit.getlogger().info(damagecheck.tostring());  } 

removing entity data hashmap though it's not accurate sometimes

@eventhandler public void onentitydeathevent(entitydeathevent event){     damagecheck.remove(event.getentity().getname());     damagecheck.remove(event.getentity().getkiller().getname()); } 

you can remove check players only, it'll work on entity just remove

if(!(event.getdamager() instanceof player) || !(event.getentity() instanceof player) ) return;


Comments

Popular posts from this blog

c# - Update a combobox from a presenter (MVP) -

How to understand 2 main() functions after using uftrace to profile the C++ program? -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -