From 66a9e8d209bfaad0c1879d804fa91560911f20a7 Mon Sep 17 00:00:00 2001 From: "Timofey.Kovalev" Date: Tue, 8 Jun 2021 06:36:48 +1100 Subject: [PATCH] commit --- Makefile | 1 - pom.xml | 4 +- src/main/java/mcwebhooks/DeathHookEvent.java | 4 +- src/main/java/mcwebhooks/MCWebHooks.java | 51 ++++++++++++++------ 4 files changed, 40 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index d535fc8..ab3fb43 100644 --- a/Makefile +++ b/Makefile @@ -2,5 +2,4 @@ all: build build: - export JAVA_HOME=/usr/lib/jvm/default-java mvn clean compile assembly:single \ No newline at end of file diff --git a/pom.xml b/pom.xml index aa51e07..9991e94 100644 --- a/pom.xml +++ b/pom.xml @@ -14,8 +14,8 @@ UTF-8 - 1.7 - 1.7 + 1.8 + 1.8 diff --git a/src/main/java/mcwebhooks/DeathHookEvent.java b/src/main/java/mcwebhooks/DeathHookEvent.java index e2fca43..c8d0143 100644 --- a/src/main/java/mcwebhooks/DeathHookEvent.java +++ b/src/main/java/mcwebhooks/DeathHookEvent.java @@ -5,10 +5,10 @@ final class DeathHookEvent extends PlayerHookEvent public String deathType; public String killerName; - public DeathHookEvent(String displayName, String deathType) { + public DeathHookEvent(String displayName, String deathType, String killerName) { super(displayName); this.type = "death"; this.deathType = deathType; - this.killerName = "?"; + this.killerName = killerName; } } diff --git a/src/main/java/mcwebhooks/MCWebHooks.java b/src/main/java/mcwebhooks/MCWebHooks.java index e7f1c53..ddb9f27 100644 --- a/src/main/java/mcwebhooks/MCWebHooks.java +++ b/src/main/java/mcwebhooks/MCWebHooks.java @@ -1,5 +1,6 @@ package mcwebhooks; +import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; @@ -13,12 +14,15 @@ import org.bukkit.event.player.PlayerLevelChangeEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; - +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageByBlockEvent; +import org.bukkit.event.entity.ArrowBodyCountChangeEvent; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; +import org.apache.http.conn.HttpHostConnectException; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -74,16 +78,28 @@ public final class MCWebHooks extends JavaPlugin implements Listener { if (ent instanceof Player) { Player p = (Player)ent; DamageCause damageCause = entDamageEvent.getCause(); - DeathHookEvent hookEvent = new DeathHookEvent(p.getDisplayName(), damageCause.toString()); + String killer = ""; + + if (entDamageEvent instanceof EntityDamageByEntityEvent) { + EntityDamageByEntityEvent entByEntityEvent = (EntityDamageByEntityEvent)entDamageEvent; + killer = entByEntityEvent.getDamager().getName(); + } + + if (entDamageEvent instanceof EntityDamageByBlockEvent) { + EntityDamageByBlockEvent entByEntityEvent = (EntityDamageByBlockEvent)entDamageEvent; + killer = entByEntityEvent.getDamager().toString(); + } + + DeathHookEvent hookEvent = new DeathHookEvent(p.getDisplayName(), damageCause.toString(), killer); this.sendHookedEvent(hookEvent); } else if (ent instanceof LivingEntity) { - LivingEntity e = (LivingEntity)ent; - if (e.getKiller() == null) { + LivingEntity le = (LivingEntity)ent; + if (le.getKiller() == null) { return; } PlayerKilledEntityEvent hookEvent = new PlayerKilledEntityEvent( - e.getKiller().getDisplayName(), - e.getName() + le.getKiller().getDisplayName(), + le.getName() ); this.sendHookedEvent(hookEvent); } @@ -108,17 +124,22 @@ public final class MCWebHooks extends JavaPlugin implements Listener { try { StringEntity params = new StringEntity(mapper.writeValueAsString(event)); request.setEntity(params); - } catch (JsonProcessingException | UnsupportedEncodingException e1) { + } catch (JsonProcessingException | UnsupportedEncodingException e) { getLogger().info("Parsing failed"); - e1.printStackTrace(); + e.printStackTrace(); return; } - try { - httpClient.execute(request); - getLogger().info("Request sent"); - } catch (IOException e) { - getLogger().info("Request failed"); - e.printStackTrace(); - } + + Bukkit.getScheduler().runTaskAsynchronously(this, () -> { + try { + httpClient.execute(request); + getLogger().info("Request sent"); + } catch (HttpHostConnectException e) { + getLogger().info(String.format("Failed to connect to: [%s]", this.config.hookUrl)); + } catch (IOException e) { + getLogger().info("Request failed"); + e.printStackTrace(); + } + }); } }