processing fixes, additional death info

This commit is contained in:
smsteel 2019-02-06 18:24:35 +03:00
parent 23e8120c82
commit 7c522808f2
4 changed files with 28 additions and 16 deletions

1
build.bat Normal file
View File

@ -0,0 +1 @@
mvn clean compile assembly:single

View File

@ -2,11 +2,13 @@ package mcwebhooks;
final class DeathHookEvent extends PlayerHookEvent final class DeathHookEvent extends PlayerHookEvent
{ {
public String deathMessage; public String deathType;
public String killerName;
public DeathHookEvent(String displayName, String deathMessage) { public DeathHookEvent(String displayName, String deathType) {
super(displayName); super(displayName);
this.type = "death"; this.type = "death";
this.deathMessage = deathMessage; this.deathType = deathType;
this.killerName = "?";
} }
} }

View File

@ -4,6 +4,6 @@ final class JoinHookEvent extends PlayerHookEvent
{ {
public JoinHookEvent(String displayName) { public JoinHookEvent(String displayName) {
super(displayName); super(displayName);
this.type = "login"; this.type = "join";
} }
} }

View File

@ -1,11 +1,14 @@
package mcwebhooks; package mcwebhooks;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
@ -20,21 +23,18 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public final class MCWebHooks extends JavaPlugin implements Listener { public final class MCWebHooks extends JavaPlugin implements Listener {
private Config config; private Config config;
private HttpClient httpClient;
private ObjectMapper mapper;
@Override @Override
public void onEnable() { public void onEnable() {
this.mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
try { try {
getLogger().info("Loading config"); getLogger().info("Loading config");
this.config = this.mapper.readValue(new File("plugins/webhooks.json"), Config.class); this.config = mapper.readValue(new File("plugins/webhooks.json"), Config.class);
getLogger().info(String.format("Hooks will be sent to: %s", this.config.hookUrl)); getLogger().info(String.format("Hooks will be sent to: %s", this.config.hookUrl));
} catch (IOException e) { } catch (IOException e) {
getLogger().info("Config loading failed"); getLogger().info("Config loading failed");
e.printStackTrace(); e.printStackTrace();
} }
this.httpClient = HttpClientBuilder.create().build();
getServer().getPluginManager().registerEvents(this, this); getServer().getPluginManager().registerEvents(this, this);
} }
@ -50,17 +50,26 @@ public final class MCWebHooks extends JavaPlugin implements Listener {
} }
@EventHandler @EventHandler
public void onPlayerDeath(PlayerDeathEvent event) { public void onEntityDeath(EntityDeathEvent event) {
DeathHookEvent hookEvent = new DeathHookEvent(event.getEntity().getDisplayName(), event.getDeathMessage()); Entity ent = event.getEntity();
EntityDamageEvent entDamageEvent = ent.getLastDamageCause();
if (ent instanceof Player) {
DamageCause damageCause = entDamageEvent.getCause();
Player p = (Player)ent;
DeathHookEvent hookEvent = new DeathHookEvent(p.getDisplayName(), damageCause.toString());
this.sendHookedEvent(hookEvent); this.sendHookedEvent(hookEvent);
} }
}
private final void sendHookedEvent(HookEvent event) { private final void sendHookedEvent(HookEvent event) {
getLogger().info(String.format("Event: %s", event.type)); getLogger().info(String.format("Event: %s", event.type));
ObjectMapper mapper = new ObjectMapper();
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost request = new HttpPost(this.config.hookUrl); HttpPost request = new HttpPost(this.config.hookUrl);
request.addHeader("content-type", "application/json"); request.addHeader("content-type", "application/json");
try { try {
StringEntity params = new StringEntity(this.mapper.writeValueAsString(event)); StringEntity params = new StringEntity(mapper.writeValueAsString(event));
request.setEntity(params); request.setEntity(params);
} catch (JsonProcessingException | UnsupportedEncodingException e1) { } catch (JsonProcessingException | UnsupportedEncodingException e1) {
getLogger().info("Parsing failed"); getLogger().info("Parsing failed");
@ -68,7 +77,7 @@ public final class MCWebHooks extends JavaPlugin implements Listener {
return; return;
} }
try { try {
this.httpClient.execute(request); httpClient.execute(request);
getLogger().info("Request sent"); getLogger().info("Request sent");
} catch (IOException e) { } catch (IOException e) {
getLogger().info("Request failed"); getLogger().info("Request failed");