first commit
This commit is contained in:
6
src/main/java/mcwebhooks/Config.java
Normal file
6
src/main/java/mcwebhooks/Config.java
Normal file
@ -0,0 +1,6 @@
|
||||
package mcwebhooks;
|
||||
|
||||
public final class Config
|
||||
{
|
||||
public String hookUrl;
|
||||
}
|
12
src/main/java/mcwebhooks/DeathHookEvent.java
Normal file
12
src/main/java/mcwebhooks/DeathHookEvent.java
Normal 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;
|
||||
}
|
||||
}
|
6
src/main/java/mcwebhooks/HookEvent.java
Normal file
6
src/main/java/mcwebhooks/HookEvent.java
Normal file
@ -0,0 +1,6 @@
|
||||
package mcwebhooks;
|
||||
|
||||
abstract class HookEvent
|
||||
{
|
||||
public String type;
|
||||
}
|
9
src/main/java/mcwebhooks/JoinHookEvent.java
Normal file
9
src/main/java/mcwebhooks/JoinHookEvent.java
Normal file
@ -0,0 +1,9 @@
|
||||
package mcwebhooks;
|
||||
|
||||
final class JoinHookEvent extends PlayerHookEvent
|
||||
{
|
||||
public JoinHookEvent(String displayName) {
|
||||
super(displayName);
|
||||
this.type = "login";
|
||||
}
|
||||
}
|
78
src/main/java/mcwebhooks/MCWebHooks.java
Normal file
78
src/main/java/mcwebhooks/MCWebHooks.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
10
src/main/java/mcwebhooks/PlayerHookEvent.java
Normal file
10
src/main/java/mcwebhooks/PlayerHookEvent.java
Normal file
@ -0,0 +1,10 @@
|
||||
package mcwebhooks;
|
||||
|
||||
abstract class PlayerHookEvent extends HookEvent
|
||||
{
|
||||
public String displayName;
|
||||
|
||||
public PlayerHookEvent(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
}
|
3
src/main/resources/plugin.yml
Normal file
3
src/main/resources/plugin.yml
Normal file
@ -0,0 +1,3 @@
|
||||
name: mcwebhooks
|
||||
main: mcwebhooks.MCWebHooks
|
||||
version: 0.1
|
Reference in New Issue
Block a user