我想給銷燬器名稱添加爲重點,和值,進入我的HashMap這就是所謂的damageCheck的受害者的名字。這全部在EntityDamageByEntityEvent
完成。但是,當我嘗試存儲受害者和損害者時,一切都出錯了。Bukkit /插口API:映射銷燬器和受害者
代碼:
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 the victim name
String damagerName = damager.getDisplayName(); // getting the damager name
Bukkit.getServer().broadcastMessage("");
Bukkit.getServer().broadcastMessage(victim.getDisplayName() + " is the victim!");
Bukkit.getServer().broadcastMessage(damager.getDisplayName() + " is the damager!");
Bukkit.getServer().broadcastMessage("");
try {
if(!damageCheck.containsKey(damagerName)) {
damageCheck.put(victimName, damagerName);
Bukkit.getServer().broadcastMessage("");
Bukkit.getServer().broadcastMessage(damageCheck.get(victimName) + " is victim!");
Bukkit.getServer().broadcastMessage(damageCheck.get(damagerName) + " is damager!");
Bukkit.getServer().broadcastMessage("");
} else if(damageCheck.containsKey(damagerName)) {
damageCheck.replace(damagerName, damagerName, damagerName);
Bukkit.getServer().broadcastMessage("");
Bukkit.getServer().broadcastMessage(damageCheck.get(victimName) + " is victim!");
Bukkit.getServer().broadcastMessage(damageCheck.get(damagerName) + " is damager!");
Bukkit.getServer().broadcastMessage("");
}
} catch (NullPointerException e) {
// do nothing lol
}
} else {
Bukkit.getServer().broadcastMessage("There is no entity or damager!");
}
}
的第一條消息是正確的。 GetSparked是受害者和Fendyk是損害者。但在第二條消息中,當試圖從hashmap中獲取名稱時,輸出的值是錯誤的。
編輯:我換了 damageCheck.put(victimName,damagerName); 至 damageCheck.put(damagerName,victimName);
但它現在給受害者null(第一次擊中),爲什麼?
非常感謝您的信息和幫助。我真的很感激。 –