Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Block Webhook #26

Merged
merged 6 commits into from
Aug 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions src/main/java/com/shweit/serverapi/webhooks/RegisterWebHooks.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.shweit.serverapi.webhooks;

import com.shweit.serverapi.utils.Logger;
import com.shweit.serverapi.webhooks.block.*;
import com.shweit.serverapi.webhooks.server.PluginDisable;
import com.shweit.serverapi.webhooks.server.PluginEnable;
import com.shweit.serverapi.webhooks.server.ServerStart;
Expand Down Expand Up @@ -37,6 +38,24 @@ public void registerWebHooks(final FileConfiguration config) {

new PluginEnable().register();
Logger.debug("Registered plugin_enable WebHook");

new BlockBreak().register();
Logger.debug("Registered block_break WebHook");

new BlockPlace().register();
Logger.debug("Registered block_place WebHook");

new BlockBurn().register();
Logger.debug("Registered block_burn WebHook");

new BlockRedstone().register();
Logger.debug("Registered block_redstone WebHook");

new NotePlay().register();
Logger.debug("Registered note_play WebHook");

new SignChange().register();
Logger.debug("Registered sign_change WebHook");
}

public static void sendToAllUrls(final JSONObject jsonObject) {
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/com/shweit/serverapi/webhooks/WebHookEnum.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@ public enum WebHookEnum {
SERVER_START("server_start", "Triggered when the server starts"),
SERVER_STOP("server_stop", "Triggered when the server stops"),
PLUGIN_DISABLE("plugin_disable", "Triggered when a plugin is disabled"),
PLUGIN_ENABLE("plugin_enable", "Triggered when a plugin is enabled"),;
PLUGIN_ENABLE("plugin_enable", "Triggered when a plugin is enabled"),
BLOCK_BREAK("block_break", "Triggered when a block is broken"),
BLOCK_PLACE("block_place", "Triggered when a block is placed"),
BLOCK_BURN("block_burn", "Triggered when a block is burned"),
BLOCK_REDSTONE("block_redstone", "Triggered when a block is powered by redstone or a redstone current changes"),
NOTE_PLAY("note_play", "Triggered when a note block plays a note"),
SIGN_CHANGE("sign_change", "Triggered when a sign is changed"),;

public final String label;
public final String description;
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/com/shweit/serverapi/webhooks/block/BlockBreak.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.shweit.serverapi.webhooks.block;

import com.shweit.serverapi.MinecraftServerAPI;
import com.shweit.serverapi.webhooks.RegisterWebHooks;
import com.shweit.serverapi.webhooks.WebHook;
import com.shweit.serverapi.webhooks.WebHookEnum;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.json.JSONObject;

public final class BlockBreak implements WebHook, Listener {

private final String eventName = WebHookEnum.BLOCK_BREAK.label;

@Override
public void register() {
if (RegisterWebHooks.doActivateWebhook(eventName)) {
MinecraftServerAPI plugin = MinecraftServerAPI.getInstance();
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
}

@EventHandler
public void onBlockBreak(final BlockBreakEvent event) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("event", eventName);
jsonObject.put("player", event.getPlayer().getName());
jsonObject.put("block", event.getBlock().getType().name());
jsonObject.put("location", event.getBlock().getLocation().toString());

RegisterWebHooks.sendToAllUrls(jsonObject);
}
}
36 changes: 36 additions & 0 deletions src/main/java/com/shweit/serverapi/webhooks/block/BlockBurn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.shweit.serverapi.webhooks.block;

import com.shweit.serverapi.MinecraftServerAPI;
import com.shweit.serverapi.webhooks.RegisterWebHooks;
import com.shweit.serverapi.webhooks.WebHook;
import com.shweit.serverapi.webhooks.WebHookEnum;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBurnEvent;
import org.json.JSONObject;

import java.util.Objects;

public final class BlockBurn implements WebHook, Listener {

private final String eventName = WebHookEnum.BLOCK_BURN.label;

@Override
public void register() {
if (RegisterWebHooks.doActivateWebhook(eventName)) {
MinecraftServerAPI plugin = MinecraftServerAPI.getInstance();
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
}

@EventHandler
public void onBlockBurn(final BlockBurnEvent event) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("event", eventName);
jsonObject.put("block", event.getBlock().getType().name());
jsonObject.put("location", event.getBlock().getLocation().toString());
jsonObject.put("ignitingBlock", Objects.requireNonNull(event.getIgnitingBlock()).getType().name());

RegisterWebHooks.sendToAllUrls(jsonObject);
}
}
36 changes: 36 additions & 0 deletions src/main/java/com/shweit/serverapi/webhooks/block/BlockPlace.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.shweit.serverapi.webhooks.block;

import com.shweit.serverapi.MinecraftServerAPI;
import com.shweit.serverapi.webhooks.RegisterWebHooks;
import com.shweit.serverapi.webhooks.WebHook;
import com.shweit.serverapi.webhooks.WebHookEnum;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.json.JSONObject;

public final class BlockPlace implements WebHook, Listener {

private final String eventName = WebHookEnum.BLOCK_PLACE.label;

@Override
public void register() {
if (RegisterWebHooks.doActivateWebhook(eventName)) {
MinecraftServerAPI plugin = MinecraftServerAPI.getInstance();
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
}

@EventHandler
public void onBlockPlace(final BlockPlaceEvent event) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("event", eventName);
jsonObject.put("player", event.getPlayer().getName());
jsonObject.put("block", event.getBlock().getType().name());
jsonObject.put("location", event.getBlock().getLocation().toString());
jsonObject.put("placedAgainst", event.getBlockAgainst().getType().name());
jsonObject.put("hand", event.getHand().name());

RegisterWebHooks.sendToAllUrls(jsonObject);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.shweit.serverapi.webhooks.block;

import com.shweit.serverapi.MinecraftServerAPI;
import com.shweit.serverapi.webhooks.RegisterWebHooks;
import com.shweit.serverapi.webhooks.WebHook;
import com.shweit.serverapi.webhooks.WebHookEnum;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockRedstoneEvent;
import org.json.JSONObject;

public final class BlockRedstone implements WebHook, Listener {

private final String eventName = WebHookEnum.BLOCK_REDSTONE.label;

@Override
public void register() {
if (RegisterWebHooks.doActivateWebhook(eventName)) {
MinecraftServerAPI plugin = MinecraftServerAPI.getInstance();
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
}

@EventHandler
public void onBlockRedstone(final BlockRedstoneEvent event) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("event", eventName);
jsonObject.put("block", event.getBlock().getType().name());
jsonObject.put("location", event.getBlock().getLocation().toString());
jsonObject.put("oldCurrent", event.getOldCurrent());
jsonObject.put("newCurrent", event.getNewCurrent());

RegisterWebHooks.sendToAllUrls(jsonObject);
}
}
36 changes: 36 additions & 0 deletions src/main/java/com/shweit/serverapi/webhooks/block/NotePlay.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.shweit.serverapi.webhooks.block;

import com.shweit.serverapi.MinecraftServerAPI;
import com.shweit.serverapi.webhooks.RegisterWebHooks;
import com.shweit.serverapi.webhooks.WebHook;
import com.shweit.serverapi.webhooks.WebHookEnum;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.NotePlayEvent;
import org.json.JSONObject;

public final class NotePlay implements WebHook, Listener {

private final String eventName = WebHookEnum.NOTE_PLAY.label;

@Override
public void register() {
if (RegisterWebHooks.doActivateWebhook(eventName)) {
MinecraftServerAPI plugin = MinecraftServerAPI.getInstance();
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
}

@EventHandler
public void onNotePlay(final NotePlayEvent event) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("event", eventName);
jsonObject.put("instrument", event.getInstrument().name());
jsonObject.put("tone", event.getNote().getTone().name());
jsonObject.put("octave", event.getNote().getOctave());
jsonObject.put("pitch", event.getNote().getPitch());
jsonObject.put("location", event.getBlock().getLocation().toString());

RegisterWebHooks.sendToAllUrls(jsonObject);
}
}
39 changes: 39 additions & 0 deletions src/main/java/com/shweit/serverapi/webhooks/block/SignChange.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.shweit.serverapi.webhooks.block;

import com.shweit.serverapi.MinecraftServerAPI;
import com.shweit.serverapi.webhooks.RegisterWebHooks;
import com.shweit.serverapi.webhooks.WebHook;
import com.shweit.serverapi.webhooks.WebHookEnum;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import org.json.JSONObject;

public final class SignChange implements WebHook, Listener {

private final String eventName = WebHookEnum.SIGN_CHANGE.label;

@Override
public void register() {
if (RegisterWebHooks.doActivateWebhook(eventName)) {
MinecraftServerAPI plugin = MinecraftServerAPI.getInstance();
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
}

@EventHandler
public void onSignChange(final SignChangeEvent event) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("event", eventName);
jsonObject.put("block", event.getBlock().getType().name());
jsonObject.put("location", event.getBlock().getLocation().toString());
jsonObject.put("line1", event.getLine(0));
jsonObject.put("line2", event.getLine(1));
jsonObject.put("line3", event.getLine(2));
jsonObject.put("line4", event.getLine(3));
jsonObject.put("player", event.getPlayer().getName());
jsonObject.put("side", event.getSide().name());

RegisterWebHooks.sendToAllUrls(jsonObject);
}
}
6 changes: 6 additions & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ webhooks:
server_stop: true
plugin_disable: true
plugin_enable: true
block_break: true
block_place: true
block_burn: true
block_redstone: true
note_play: true
sign_change: true

# Here you can list an extra set of Files or Directories which should be saved by the Backup-System.
# Following directories and files are already saved by default: ["world", "world_nether", "world_the_end", "plugins", "config", "server.properties", "banned-ips.json", "banned-players.json", "ops.json", "whitelist.json"]
Expand Down
Loading