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
{
public String deathMessage;
public String deathType;
public String killerName;
public DeathHookEvent(String displayName, String deathMessage) {
public DeathHookEvent(String displayName, String deathType) {
super(displayName);
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) {
super(displayName);
this.type = "login";
this.type = "join";
}
}

View File

@ -1,11 +1,14 @@
package mcwebhooks;
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.Listener;
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.client.HttpClient;
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 {
private Config config;
private HttpClient httpClient;
private ObjectMapper mapper;
@Override
public void onEnable() {
this.mapper = new ObjectMapper();
ObjectMapper mapper = new ObjectMapper();
try {
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));
} catch (IOException e) {
getLogger().info("Config loading failed");
e.printStackTrace();
}
this.httpClient = HttpClientBuilder.create().build();
getServer().getPluginManager().registerEvents(this, this);
}
@ -50,17 +50,26 @@ public final class MCWebHooks extends JavaPlugin implements Listener {
}
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
DeathHookEvent hookEvent = new DeathHookEvent(event.getEntity().getDisplayName(), event.getDeathMessage());
this.sendHookedEvent(hookEvent);
public void onEntityDeath(EntityDeathEvent event) {
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);
}
}
private final void sendHookedEvent(HookEvent event) {
getLogger().info(String.format("Event: %s", event.type));
ObjectMapper mapper = new ObjectMapper();
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost request = new HttpPost(this.config.hookUrl);
request.addHeader("content-type", "application/json");
try {
StringEntity params = new StringEntity(this.mapper.writeValueAsString(event));
StringEntity params = new StringEntity(mapper.writeValueAsString(event));
request.setEntity(params);
} catch (JsonProcessingException | UnsupportedEncodingException e1) {
getLogger().info("Parsing failed");
@ -68,7 +77,7 @@ public final class MCWebHooks extends JavaPlugin implements Listener {
return;
}
try {
this.httpClient.execute(request);
httpClient.execute(request);
getLogger().info("Request sent");
} catch (IOException e) {
getLogger().info("Request failed");