first commit

This commit is contained in:
smsteel
2019-02-06 15:08:56 +03:00
commit 23e8120c82
9 changed files with 262 additions and 0 deletions

View File

@ -0,0 +1,6 @@
package mcwebhooks;
public final class Config
{
public String hookUrl;
}

View File

@ -0,0 +1,12 @@
package mcwebhooks;
final class DeathHookEvent extends PlayerHookEvent
{
public String deathMessage;
public DeathHookEvent(String displayName, String deathMessage) {
super(displayName);
this.type = "death";
this.deathMessage = deathMessage;
}
}

View File

@ -0,0 +1,6 @@
package mcwebhooks;
abstract class HookEvent
{
public String type;
}

View File

@ -0,0 +1,9 @@
package mcwebhooks;
final class JoinHookEvent extends PlayerHookEvent
{
public JoinHookEvent(String displayName) {
super(displayName);
this.type = "login";
}
}

View File

@ -0,0 +1,78 @@
package mcwebhooks;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
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 java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.File;
import com.fasterxml.jackson.core.JsonProcessingException;
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();
try {
getLogger().info("Loading config");
this.config = this.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);
}
@Override
public void onDisable() {
getLogger().info("Web hooks are disabled");
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
JoinHookEvent hookEvent = new JoinHookEvent(event.getPlayer().getDisplayName());
this.sendHookedEvent(hookEvent);
}
@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
DeathHookEvent hookEvent = new DeathHookEvent(event.getEntity().getDisplayName(), event.getDeathMessage());
this.sendHookedEvent(hookEvent);
}
private final void sendHookedEvent(HookEvent event) {
getLogger().info(String.format("Event: %s", event.type));
HttpPost request = new HttpPost(this.config.hookUrl);
request.addHeader("content-type", "application/json");
try {
StringEntity params = new StringEntity(this.mapper.writeValueAsString(event));
request.setEntity(params);
} catch (JsonProcessingException | UnsupportedEncodingException e1) {
getLogger().info("Parsing failed");
e1.printStackTrace();
return;
}
try {
this.httpClient.execute(request);
getLogger().info("Request sent");
} catch (IOException e) {
getLogger().info("Request failed");
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,10 @@
package mcwebhooks;
abstract class PlayerHookEvent extends HookEvent
{
public String displayName;
public PlayerHookEvent(String displayName) {
this.displayName = displayName;
}
}

View File

@ -0,0 +1,3 @@
name: mcwebhooks
main: mcwebhooks.MCWebHooks
version: 0.1