diff --git a/README.md b/README.md index e9ed21b..5a5e431 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,37 @@ # notify-on-start - -this project is made to just send messages to Discord webhooks when events trigger - -this was just made to remember whatever goofy things we did in a minecraft server, in discord - -or, you know, notify us when the server starts and ends (and other things...) - *(maki, 4/20/25)* -this is a personal project, there are DEFINITELY better alternatives; this plugin is mostly server-exclusive +this is a personal project, there are DEFINITELY better alternatives; this plugin is mostly server-exclusive. +it was made to notify a discord server whenever a event occurred in a minecraft server. + # Prerequisites Before using this plugin, you must: * Get Spigot * Get a JAR file from [the releases](https://git.sob.moe/sobrooms/notify-on-start/-/releases) or [Google Drive](https://drive.google.com/drive/folders/11wMPjOh2b8oRzpeJOrOI4ZAkImOlr93u?usp=sharing) (the drive folder is frequently updated) -# making webhooks -If you already know how, you can skip this step. + +# Webhook creation +If you already know how to make a webhook, disregard this section of the readme. To make a webhook: -1. Go to a Discord server.\ - You can make a new channel or use an existing one. -2. Right-click on the channel. -3. Click "Edit Channel". -4. Click "Integrations" and click "Webhooks". -5. Click "New Webhook". -6. Give the webhook a name. As an example, we will use `notify` as the webhook name. -7. You may change the channel where it is associated/linked to, change the webhook name, and set a picture for the webhook. -8. Copy the webhook link. +1. Go to your Discord server. +2. Edit a channel. +3. Go to "Integrations" and then "Webhooks" +4. Click "New Webhook" +5. Give the webhook a name. As an example, we will use `notify` as the webhook name. +6. You may change the channel where it is associated/linked to, change the webhook name, and set a picture for the webhook. +7. Copy the webhook link. +# Usage +To use this plugin, simply obtain a release and place the binary on the `plugins` folder of your Spigot/Paper/Bukkit server. -# using this thing -Of course, you must get a release first, as said in the prerequisites. After you get a jar, put it in the `plugins` folder +On the first run, it will make a folder in the server's directory, containing the plugin's configuration file named `config_webhook.json` -On first run, it will make a directory in the server's base directory.\ -In it, there will be one important file:\ -This file will be `NoS/config_webhook.json`. +The configuration file should have two fields with the value `default-ns`. Paste the webhook links in the space following the key name (such as `url_notify`), +or over the `default-ns` text. The configuration should look like this afterward: -Of course, put the webhook URL of where the events should be logged in the `url_notify` field. - -The `url_publicmsg` field is for a command named `/send-message`. This will simply send text to the webhook containing provided text.\ -Put the webhook link in it. - -An example of what the file's content should be: ```json { - "url_notify": "", - "url_publicmsg": "" + "url_notify": "https://discord.com/webhooks/webhook_for_notifications", + "url_publicmsg": "https://discord.com/webhooks/webhook_for_player_broadcasts" } -``` - -If you change this value, you have to restart the server to apply changes. - -By default, its value is: -```json -{ - "url_notify": "default-ns", - "url_publicmsg": "default-ns" -} -``` +``` \ No newline at end of file diff --git a/build.gradle b/build.gradle index 42d0eb0..7e4d0a1 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,8 @@ plugins { id 'java' } -group 'cf.sobrooms' -version '1.1.4' +group 'moe.sob' +version '1.2.0' repositories { mavenCentral() @@ -25,6 +25,6 @@ test { jar { manifest { - attributes 'Main-Class': 'cf.sobrooms.Main' + attributes 'Main-Class': 'moe.sob.Main' } } \ No newline at end of file diff --git a/src/main/java/cf/sobrooms/Main.java b/src/main/java/cf/sobrooms/Main.java deleted file mode 100644 index bef7e34..0000000 --- a/src/main/java/cf/sobrooms/Main.java +++ /dev/null @@ -1,281 +0,0 @@ -package cf.sobrooms; - -import cf.sobrooms.commands.InfoCommand; -import cf.sobrooms.commands.PingCommand; -import cf.sobrooms.commands.SendMessageCommand; -import cf.sobrooms.commands.SetLoggingModeCommand; -import cf.sobrooms.events.enchantment.EnchantItem; -import cf.sobrooms.events.enchantment.PrepareItemEnchant; -import cf.sobrooms.events.player.*; -import cf.sobrooms.events.server.ServerLoad; -import cf.sobrooms.events.vehicle.VehicleEnter; -import cf.sobrooms.events.vehicle.VehicleExit; -import cf.sobrooms.events.weather.LightningStrike; -import cf.sobrooms.events.weather.ThunderChange; -import cf.sobrooms.events.weather.WeatherChange; -import cf.sobrooms.events.world.WorldInit; -import cf.sobrooms.events.world.WorldLoad; -import cf.sobrooms.events.world.WorldUnload; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.plugin.java.JavaPlugin; - -import java.awt.*; -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Date; -import java.util.Objects; - -public class Main extends JavaPlugin { - public static File isLoggingConfig; - public static File webhookConfig; - private static boolean webhooksAreValidUrls; - public static boolean hdc; - public static File greetConfig; - public static void main(String... args) { - System.out.printf("Initializing using server address: %s...%n", ServerUtils.address); - } - @Override - public void onDisable() { - if (Main.webhooksAreValidUrls) { - DiscordWebhook notify = new DiscordWebhook(Main.getNotifyWebhook()); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("The server has been disabled.").setDescription(String.format("The server at %s:%d is now shutting down.", Utils.getServerHostPublicIP(), Bukkit.getServer().getPort())) - .addField("Date occurred (as a local timestamp)", new Date().toString(), false) - .setColor(Color.DARK_GRAY); - notify.addEmbed(embedObject); - try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - } - @Override - public void onEnable() { - String loggingDir = "./NoS"; - File directory = new File(loggingDir); - if (!directory.exists()) { - if (directory.mkdir()) { - System.out.println("Config dir created: " + loggingDir); - } else { - System.out.println("Failed to create config directory: " + loggingDir); - } - } - isLoggingConfig = new File("./NoS/willLogEvents"); - greetConfig = new File("./NoS/greetText.txt"); - webhookConfig = new File("./NoS/config_webhook.json"); - try { - if (isLoggingConfig.createNewFile()) { - System.out.println("Configuration file created: " + isLoggingConfig.getName()); - //FileWriter notifyWebhookConfigWriter = new FileWriter(notifyWebhookConfig); - //FileWriter pubMessageWebhookConfigWriter = new FileWriter(pubMessageWebhookConfig); - //notifyWebhookConfigWriter.write("{\"url_notify\": \"default-ns\"}"); - FileWriter linkConfigWriter = new FileWriter(webhookConfig); - FileWriter greetConfigWriter = new FileWriter(greetConfig); - greetConfigWriter.write("Welcome to $servername, $playername!"); - linkConfigWriter.write(""" - {"servername": "Nilou-PNK", "url_publicmsg": "default-ns", "url_notify": "default-ns", "entryMessage": "Welcome to @servername, @playername!"} - """); - linkConfigWriter.close(); - greetConfigWriter.close(); - //notifyWebhookConfigWriter.close(); - } else { - System.out.println("Tried to create config even while it already exists, skipping step..."); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - // such cap - //Bukkit.getConsoleSender().sendMessage("Note: This Spigot/Bukkit plugin is highly verbose, so it will log a lot of events..."); - // register commands - try { - Objects.requireNonNull(this.getCommand("info")).setExecutor(new InfoCommand()); - Objects.requireNonNull(this.getCommand("send-message")).setExecutor(new SendMessageCommand()); - Objects.requireNonNull(this.getCommand("set-logging")).setExecutor(new SetLoggingModeCommand()); - Objects.requireNonNull(this.getCommand("ping-server")).setExecutor(new PingCommand()); - } catch (NullPointerException e) { - throw new RuntimeException(e); - } - webhooksAreValidUrls = validateWebhook_Ntfy(); - hdc = validateWebhook_Pub(); - // register events - if (getLoggingConfig().equals("true") && webhooksAreValidUrls) - registerEvents(); - if (webhooksAreValidUrls) { - ServerLoad serverStart = new ServerLoad(); - getServer().getPluginManager().registerEvents(serverStart, this); - PlayerJoin playerJoin = new PlayerJoin(); - PlayerQuit playerQuit = new PlayerQuit(); - getServer().getPluginManager().registerEvents(playerJoin, this); - getServer().getPluginManager().registerEvents(playerQuit, this); - } - - } - - public static boolean validateWebhook_Pub() { - try { - if (getPublicMessageWebhook().equals("default-ns") || !getPublicMessageWebhook().contains("https://")) { - System.out.println("There was no webhook set for the public messages function. The send-message command cannot be used until you do."); - return true; - } - URL url = new URL(getPublicMessageWebhook()); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - int responseCode = connection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - return true; - } else { - System.out.println("Invalid webhook URL provided for your public messages. Please provide the correct webhook and check for any typos."); - return false; - } - } catch (Exception e) { - System.out.println("Invalid webhook URL provide for your public messages. Please provide the correct webhook and check for any typos. (Caught exception)"); - System.out.printf("Exception: %s%n", e); - return false; - } - } - public static boolean validateWebhook_Ntfy() { - try { - URL url = new URL(getNotifyWebhook()); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("GET"); - int responseCode = connection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_OK) { - return true; - } else { - System.out.println("Invalid webhook URL provided for the event logs. Please provide the correct webhook and check for any typos."); - return false; - } - } catch (Exception e) { - System.out.println("Invalid webhook URL provided for the event logs. Please provide the correct webhook and check for any typos. (Caught exception)"); - System.out.println("Exception: %s".formatted(e)); - return false; - } - } - public static String getPublicMessageWebhook() { - try { - BufferedReader brfmsg = new BufferedReader(new FileReader(webhookConfig)); - JsonParser jsonReader = new JsonParser(); - JsonElement MsgParse = jsonReader.parse(brfmsg.readLine()); - String lineMsg = MsgParse.getAsJsonObject().get("url_publicmsg").getAsString(); - - brfmsg.close(); - if (lineMsg.startsWith("https://") || lineMsg.startsWith("http://")) { - webhooksAreValidUrls = true; - return lineMsg; - } - - return "default-ns"; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - public static String getServerName() { - try { - BufferedReader brfmsg = new BufferedReader(new FileReader(webhookConfig)); - JsonParser jsonReader = new JsonParser(); - JsonElement MsgParse = jsonReader.parse(brfmsg.readLine()); - String serverName = MsgParse.getAsJsonObject().get("servername").getAsString(); - - brfmsg.close(); - - return serverName; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - public static String getGreetMessage(Player player) { - try { - BufferedReader brfmsg = new BufferedReader(new FileReader(webhookConfig)); - JsonParser jsonReader = new JsonParser(); - JsonElement MsgParse = jsonReader.parse(brfmsg.readLine()); - String entryMessage = MsgParse.getAsJsonObject().get("entryMessage").getAsString(); - String serverName = getServerName(); - String playername = player.getName(); - brfmsg.close(); - String finalOut = ""; - finalOut = entryMessage.replaceAll("@servername", serverName).replaceAll("@playername", playername); - - return finalOut; - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public static String getNotifyWebhook() { - try { - BufferedReader brfntfy = new BufferedReader(new FileReader(webhookConfig)); - JsonParser jsonReader = new JsonParser(); - JsonElement NtfyParse = jsonReader.parse(brfntfy.readLine()); - String lineNtfy = NtfyParse.getAsJsonObject().get("url_notify").getAsString(); - - brfntfy.close(); - if (lineNtfy.equals("default-ns")) { - System.out.printf("Please set the webhook URL in %s and restart the server", webhookConfig.getAbsolutePath()); - webhooksAreValidUrls = false; - return lineNtfy; - } else if (lineNtfy.startsWith("https://") || lineNtfy.startsWith("http://")) { - webhooksAreValidUrls = true; - return lineNtfy; - } else { - System.out.printf("Please set the webhook URL in %s and restart the server", webhookConfig.getAbsolutePath()); - webhooksAreValidUrls = false; - return lineNtfy; - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - public static String getLoggingConfig() { - try { - File file = new File("./NoS/willLogEvents"); - BufferedReader reader = new BufferedReader(new FileReader(file)); - String line; - while ((line = reader.readLine()) != null) { - if (line.equals("true") || line.equals("false")) - return line; - else - return ""; - } - } catch (IOException e) { - System.out.println("An error occurred while reading the configuration file."); - e.printStackTrace(); - return "err"; - } - return "err"; - } - - public void registerEvents() { - PlayerChat playerChat = new PlayerChat(); - PlayerCommandPreprocess playerCommandPreprocess = new PlayerCommandPreprocess(); - EnchantItem enchantItemEvent = new EnchantItem(); - PrepareItemEnchant prepareItemEnchant = new PrepareItemEnchant(); - PlayerBedEnter playerBedEnter = new PlayerBedEnter(); - PlayerBedLeave playerBedLeave = new PlayerBedLeave(); - LightningStrike lightningStrike = new LightningStrike(); - ThunderChange thunderChange = new ThunderChange(); - WeatherChange weatherChange = new WeatherChange(); - WorldInit worldInit = new WorldInit(); - WorldLoad worldLoad = new WorldLoad(); - WorldUnload worldUnload = new WorldUnload(); - VehicleEnter vehicleEnter = new VehicleEnter(); - VehicleExit vehicleExit = new VehicleExit(); - getServer().getPluginManager().registerEvents(playerChat, this); - getServer().getPluginManager().registerEvents(playerCommandPreprocess, this); - getServer().getPluginManager().registerEvents(enchantItemEvent, this); - getServer().getPluginManager().registerEvents(prepareItemEnchant, this); - getServer().getPluginManager().registerEvents(playerBedEnter, this); - getServer().getPluginManager().registerEvents(playerBedLeave, this); - getServer().getPluginManager().registerEvents(lightningStrike, this); - getServer().getPluginManager().registerEvents(thunderChange, this); - getServer().getPluginManager().registerEvents(weatherChange, this); - getServer().getPluginManager().registerEvents(worldInit, this); - getServer().getPluginManager().registerEvents(worldLoad, this); - getServer().getPluginManager().registerEvents(worldUnload, this); - getServer().getPluginManager().registerEvents(vehicleEnter, this); - getServer().getPluginManager().registerEvents(vehicleExit, this); - } -} \ No newline at end of file diff --git a/src/main/java/cf/sobrooms/events/enchantment/EnchantItem.java b/src/main/java/cf/sobrooms/events/enchantment/EnchantItem.java deleted file mode 100644 index b41be71..0000000 --- a/src/main/java/cf/sobrooms/events/enchantment/EnchantItem.java +++ /dev/null @@ -1,36 +0,0 @@ -package cf.sobrooms.events.enchantment; - -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.enchantment.EnchantItemEvent; - -import cf.sobrooms.DiscordWebhook; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class EnchantItem implements Listener { - @EventHandler - public void onEnchantItem(EnchantItemEvent event) { - Player player = event.getEnchanter(); - Bukkit.getConsoleSender().sendMessage("Triggered EnchantItem event"); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("Enchant item").setDescription("A player has enchanted an item...") - .addField("Datetime", new Date().toString(), false) - .addField("Player name", player.getName(), true) - .addField("Enchantment", event.getEnchantsToAdd().toString(), true) - .addField("Item name", event.getItem().toString(), true) - .addField("Amount", String.valueOf(event.getItem().getAmount()), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - /*try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - }*/ - } -} diff --git a/src/main/java/cf/sobrooms/events/enchantment/PrepareItemEnchant.java b/src/main/java/cf/sobrooms/events/enchantment/PrepareItemEnchant.java deleted file mode 100644 index d2bff00..0000000 --- a/src/main/java/cf/sobrooms/events/enchantment/PrepareItemEnchant.java +++ /dev/null @@ -1,33 +0,0 @@ -package cf.sobrooms.events.enchantment; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.enchantment.PrepareItemEnchantEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class PrepareItemEnchant implements Listener { - @EventHandler - public void onPrepareItemEnchant(PrepareItemEnchantEvent event) { - Bukkit.getConsoleSender().sendMessage("Triggered PrepareItemEnchant event."); - Player player = event.getEnchanter(); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("Enchantment prepare").setDescription("A player is about to enchant an item...") - .addField("Date of preparation", new Date().toString(), false) - .addField("Player name", player.getName(), true) - .addField("Item to be enchanted", event.getItem().toString(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - /*try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - }*/ - } -} diff --git a/src/main/java/cf/sobrooms/events/vehicle/VehicleEnter.java b/src/main/java/cf/sobrooms/events/vehicle/VehicleEnter.java deleted file mode 100644 index 7fe80e2..0000000 --- a/src/main/java/cf/sobrooms/events/vehicle/VehicleEnter.java +++ /dev/null @@ -1,31 +0,0 @@ -package cf.sobrooms.events.vehicle; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.vehicle.VehicleEnterEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class VehicleEnter implements Listener { - @EventHandler - public void onVehicleEnter(VehicleEnterEvent event) { - Bukkit.getConsoleSender().sendMessage("%s rode a vehicle.".formatted(event.getEntered().getName())); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("Vehicle Enter").setDescription("On a ridable animal") - .addField("Time", new Date().toString(), false) - .addField("Triggered by", event.getEntered().getName(), true) - .addField("Vehicle name", event.getVehicle().getName(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/cf/sobrooms/events/vehicle/VehicleExit.java b/src/main/java/cf/sobrooms/events/vehicle/VehicleExit.java deleted file mode 100644 index 97422cd..0000000 --- a/src/main/java/cf/sobrooms/events/vehicle/VehicleExit.java +++ /dev/null @@ -1,31 +0,0 @@ -package cf.sobrooms.events.vehicle; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.vehicle.VehicleExitEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class VehicleExit implements Listener { - @EventHandler - public void onVehicleExit(VehicleExitEvent event) { - Bukkit.getConsoleSender().sendMessage("%s left a vehicle.".formatted(event.getExited().getName())); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("Vehicle Exit").setDescription("Off a ridable animal") - .addField("Time", new Date().toString(), false) - .addField("Triggered by", event.getExited().getName(), true) - .addField("Vehicle name", event.getVehicle().getName(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/cf/sobrooms/events/weather/LightningStrike.java b/src/main/java/cf/sobrooms/events/weather/LightningStrike.java deleted file mode 100644 index bd37be7..0000000 --- a/src/main/java/cf/sobrooms/events/weather/LightningStrike.java +++ /dev/null @@ -1,31 +0,0 @@ -package cf.sobrooms.events.weather; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.weather.LightningStrikeEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class LightningStrike implements Listener { - @EventHandler - public void onLightningStrike(LightningStrikeEvent event) { - Bukkit.getConsoleSender().sendMessage("Triggered LightningStrike event."); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("LightningStrike").setDescription("lightning striked") - .addField("Time", new Date().toString(), false) - .addField("World in which event was triggered in", event.getWorld().getName(), true) - .addField("Cause of strike", event.getCause().name(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - /*try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - }*/ - } -} diff --git a/src/main/java/cf/sobrooms/events/weather/ThunderChange.java b/src/main/java/cf/sobrooms/events/weather/ThunderChange.java deleted file mode 100644 index 68f1a4b..0000000 --- a/src/main/java/cf/sobrooms/events/weather/ThunderChange.java +++ /dev/null @@ -1,30 +0,0 @@ -package cf.sobrooms.events.weather; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.weather.ThunderChangeEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class ThunderChange implements Listener { - @EventHandler - public void onThunderChange(ThunderChangeEvent event) { - Bukkit.getConsoleSender().sendMessage("Triggered ThunderChange event."); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("ThunderChange").setDescription("Tf is this") - .addField("Time", new Date().toString(), false) - .addField("Occurred in world", event.getWorld().getName(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - /*try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - }*/ - } -} diff --git a/src/main/java/cf/sobrooms/events/weather/WeatherChange.java b/src/main/java/cf/sobrooms/events/weather/WeatherChange.java deleted file mode 100644 index c2c3399..0000000 --- a/src/main/java/cf/sobrooms/events/weather/WeatherChange.java +++ /dev/null @@ -1,30 +0,0 @@ -package cf.sobrooms.events.weather; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.weather.WeatherChangeEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class WeatherChange implements Listener { - @EventHandler - public void onWeatherChange(WeatherChangeEvent event) { - Bukkit.getConsoleSender().sendMessage("Triggered WeatherChange event."); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("WeatherChange").setDescription("Weather was changed") - .addField("Time", new Date().toString(), false) - .addField("Occurred in world", event.getWorld().getName(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - /*try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - }*/ - } -} diff --git a/src/main/java/cf/sobrooms/events/world/WorldInit.java b/src/main/java/cf/sobrooms/events/world/WorldInit.java deleted file mode 100644 index 23ab8de..0000000 --- a/src/main/java/cf/sobrooms/events/world/WorldInit.java +++ /dev/null @@ -1,30 +0,0 @@ -package cf.sobrooms.events.world; - -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; -import org.bukkit.Bukkit; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.world.WorldInitEvent; - -import java.awt.*; -import java.io.IOException; -import java.util.Date; - -public class WorldInit implements Listener { - @EventHandler - public void onWorldInit(WorldInitEvent event) { - Bukkit.getConsoleSender().sendMessage("Triggered WorldInit event."); - DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("WorldInit").setDescription("World initialized") - .addField("Time", new Date().toString(), false) - .addField("World name", event.getWorld().getName(), true) - .setColor(Color.BLUE); - notify.addEmbed(embedObject); - try { - notify.execute(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/src/main/java/cf/sobrooms/DiscordWebhook.java b/src/main/java/moe/sob/DiscordWebhook.java similarity index 99% rename from src/main/java/cf/sobrooms/DiscordWebhook.java rename to src/main/java/moe/sob/DiscordWebhook.java index a5b77c4..f04561c 100644 --- a/src/main/java/cf/sobrooms/DiscordWebhook.java +++ b/src/main/java/moe/sob/DiscordWebhook.java @@ -1,4 +1,4 @@ -package cf.sobrooms; +package moe.sob; import javax.net.ssl.HttpsURLConnection; import java.awt.*; diff --git a/src/main/java/moe/sob/Main.java b/src/main/java/moe/sob/Main.java new file mode 100644 index 0000000..0e93de1 --- /dev/null +++ b/src/main/java/moe/sob/Main.java @@ -0,0 +1,203 @@ +package moe.sob; + +import moe.sob.commands.InfoCommand; +import moe.sob.commands.PingCommand; +import moe.sob.commands.SendMessageCommand; +import moe.sob.commands.SetLoggingModeCommand; +import moe.sob.commands.SetGreetMessageCommand; +import moe.sob.events.player.*; +import moe.sob.events.server.ServerLoad; +import moe.sob.events.world.WorldLoad; +import moe.sob.events.world.WorldUnload; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import org.bukkit.Bukkit; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import java.awt.*; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Date; +import java.util.Objects; + +public class Main extends JavaPlugin { + private static Main mainSmall; + private static boolean webhooksAreValidUrls; + public static boolean hdc; + public static File config; + public static FileConfiguration configR; + public static void main(String... args) { + System.out.printf("Initializing using server address: %s...%n", ServerUtils.address); + } + @Override + public void onDisable() { + if (Main.webhooksAreValidUrls) { + DiscordWebhook notify = new DiscordWebhook(Main.getNotifyWebhook()); + DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("The server has been disabled.").setDescription(String.format("The server at %s:%d is now shutting down.", Utils.getServerHostPublicIP(), Bukkit.getServer().getPort())) + .addField("Date occurred (as a local timestamp)", new Date().toString(), false) + .setColor(Color.DARK_GRAY); + notify.addEmbed(embedObject); + try { + notify.execute(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + @Override + public void onEnable() { + mainSmall = this; + config = new File(getDataFolder(), "config.yml"); + /*if (!config.exists()) { + saveResource("config.yml", false); + }*/ + configR = getConfig(); + configR = YamlConfiguration.loadConfiguration(config); + if (!configR.contains("firstrun")) { + configR.set("server.name", "Minecraft Server"); + configR.set("server.entry_message", "Welcome to @servername, @playername!"); + configR.set("server.webhooks.notify", "default-ns"); + configR.set("server.webhooks.broadcast", "default-ns"); + + configR.set("log", true); + configR.set("firstrun", 0); + + try { + configR.save(config); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + // such cap + //Bukkit.getConsoleSender().sendMessage("Note: This Spigot/Bukkit plugin is highly verbose, so it will log a lot of events..."); + // register commands + try { + Objects.requireNonNull(this.getCommand("info")).setExecutor(new InfoCommand()); + Objects.requireNonNull(this.getCommand("send-message")).setExecutor(new SendMessageCommand()); + Objects.requireNonNull(this.getCommand("set-logging")).setExecutor(new SetLoggingModeCommand()); + Objects.requireNonNull(this.getCommand("ping-server")).setExecutor(new PingCommand()); + Objects.requireNonNull(this.getCommand("set-greet-message")).setExecutor(new SetGreetMessageCommand()); + } catch (NullPointerException e) { + throw new RuntimeException(e); + } + webhooksAreValidUrls = validateWebhook_Ntfy(); + hdc = validateWebhook_Pub(); + // register events + if (webhooksAreValidUrls) + registerEvents(); + if (webhooksAreValidUrls) { + ServerLoad serverStart = new ServerLoad(); + getServer().getPluginManager().registerEvents(serverStart, this); + PlayerJoin playerJoin = new PlayerJoin(); + PlayerQuit playerQuit = new PlayerQuit(); + getServer().getPluginManager().registerEvents(playerJoin, this); + getServer().getPluginManager().registerEvents(playerQuit, this); + } + + } + + public static boolean validateWebhook_Pub() { + try { + if (getPublicMessageWebhook().equals("default-ns")) { + mainSmall.getLogger().warning("There is no webhook set for the public messages function. The send-message command cannot be used."); + return false; + } + + URL url = new URL(getPublicMessageWebhook()); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + int responseCode = connection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + return true; + } else { + mainSmall.getLogger().warning("Invalid webhook URL provided for your public messages. Please provide the correct webhook and check for any typos."); + return false; + } + } catch (Exception e) { + mainSmall.getLogger().warning("Invalid webhook URL provide for your public messages. Please provide the correct webhook and check for any typos. (Caught exception)"); + System.out.printf("Exception: %s%n", e); + return false; + } + } + + public static boolean validateWebhook_Ntfy() { + try { + if (getNotifyWebhook().equals("default-ns")) { + mainSmall.getLogger().warning("There is no webhook set for the notify function. No events will be logged."); + return false; + } + + URL url = new URL(getNotifyWebhook()); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + int responseCode = connection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_OK) { + return true; + } else { + mainSmall.getLogger().warning("Invalid webhook URL provided for the event logs. Please provide the correct webhook and check for any typos."); + return false; + } + } catch (Exception e) { + mainSmall.getLogger().warning("Invalid webhook URL provided for the event logs. Please provide the correct webhook and check for any typos. (Caught exception)"); + return false; + } + } + public static String getPublicMessageWebhook() { + String webhook = configR.getString("server.webhooks.broadcast"); + if (webhook.startsWith("https://") || webhook.startsWith("http://")) { + webhooksAreValidUrls = true; + return webhook; + } + + return "default-ns"; + } + + public static String getServerName() { + return configR.getString("server.name"); + } + public static String getGreetMessage(Player player) { + try { + String entryMessage = configR.getString("server.entry_message"); + String serverName = getServerName(); + String playername = player.getName(); + String finalOut = ""; + finalOut = entryMessage.replaceAll("@servername", serverName).replaceAll("@playername", playername); + + return finalOut; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static String getNotifyWebhook() { + String webhook = configR.getString("server.webhooks.notify"); + if (webhook.startsWith("https://") || webhook.startsWith("http://")) { + webhooksAreValidUrls = true; + return webhook; + } + + return "default-ns"; + } + + public void registerEvents() { + PlayerChat playerChat = new PlayerChat(); + PlayerCommandPreprocess playerCommandPreprocess = new PlayerCommandPreprocess(); + PlayerBedEnter playerBedEnter = new PlayerBedEnter(); + PlayerBedLeave playerBedLeave = new PlayerBedLeave(); + WorldLoad worldLoad = new WorldLoad(); + WorldUnload worldUnload = new WorldUnload(); + getServer().getPluginManager().registerEvents(playerChat, this); + getServer().getPluginManager().registerEvents(playerCommandPreprocess, this); + getServer().getPluginManager().registerEvents(playerBedEnter, this); + getServer().getPluginManager().registerEvents(playerBedLeave, this); + getServer().getPluginManager().registerEvents(worldLoad, this); + getServer().getPluginManager().registerEvents(worldUnload, this); + } +} \ No newline at end of file diff --git a/src/main/java/cf/sobrooms/ServerUtils.java b/src/main/java/moe/sob/ServerUtils.java similarity index 94% rename from src/main/java/cf/sobrooms/ServerUtils.java rename to src/main/java/moe/sob/ServerUtils.java index a0f0fbf..02465b3 100644 --- a/src/main/java/cf/sobrooms/ServerUtils.java +++ b/src/main/java/moe/sob/ServerUtils.java @@ -1,4 +1,4 @@ -package cf.sobrooms; +package moe.sob; import org.bukkit.Bukkit; import org.bukkit.Server; @@ -8,7 +8,7 @@ import java.net.Socket; public class ServerUtils { public static int port = 25565; - public static String address_fallback = Utils.getServerHostPublicIP(); + public static String address_fallback = "localhost"; public static String webhook_notify = Main.getNotifyWebhook(); public static String webhook_messages = Main.getPublicMessageWebhook(); public static String address = Utils.getServerHostPublicIP(); diff --git a/src/main/java/cf/sobrooms/Utils.java b/src/main/java/moe/sob/Utils.java similarity index 98% rename from src/main/java/cf/sobrooms/Utils.java rename to src/main/java/moe/sob/Utils.java index 3abe018..7d03118 100644 --- a/src/main/java/cf/sobrooms/Utils.java +++ b/src/main/java/moe/sob/Utils.java @@ -1,4 +1,4 @@ -package cf.sobrooms; +package moe.sob; import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/src/main/java/cf/sobrooms/commands/InfoCommand.java b/src/main/java/moe/sob/commands/InfoCommand.java similarity index 90% rename from src/main/java/cf/sobrooms/commands/InfoCommand.java rename to src/main/java/moe/sob/commands/InfoCommand.java index fda2d42..86014c5 100644 --- a/src/main/java/cf/sobrooms/commands/InfoCommand.java +++ b/src/main/java/moe/sob/commands/InfoCommand.java @@ -1,8 +1,8 @@ -package cf.sobrooms.commands; +package moe.sob.commands; -import cf.sobrooms.Main; -import cf.sobrooms.Utils; +import moe.sob.Main; +import moe.sob.Utils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -17,7 +17,7 @@ public class InfoCommand implements CommandExecutor { Server Info """ + ChatColor.WHITE + - """ + """ Server name: %s Server IP: %s Server Port: %s diff --git a/src/main/java/cf/sobrooms/commands/PingCommand.java b/src/main/java/moe/sob/commands/PingCommand.java similarity index 96% rename from src/main/java/cf/sobrooms/commands/PingCommand.java rename to src/main/java/moe/sob/commands/PingCommand.java index 2ea6fd2..57416f7 100644 --- a/src/main/java/cf/sobrooms/commands/PingCommand.java +++ b/src/main/java/moe/sob/commands/PingCommand.java @@ -1,6 +1,6 @@ -package cf.sobrooms.commands; +package moe.sob.commands; -import cf.sobrooms.Utils; +import moe.sob.Utils; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; diff --git a/src/main/java/cf/sobrooms/commands/SendMessageCommand.java b/src/main/java/moe/sob/commands/SendMessageCommand.java similarity index 73% rename from src/main/java/cf/sobrooms/commands/SendMessageCommand.java rename to src/main/java/moe/sob/commands/SendMessageCommand.java index cc57e52..d1078e6 100644 --- a/src/main/java/cf/sobrooms/commands/SendMessageCommand.java +++ b/src/main/java/moe/sob/commands/SendMessageCommand.java @@ -1,8 +1,8 @@ -package cf.sobrooms.commands; +package moe.sob.commands; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.Main; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.Main; +import moe.sob.ServerUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -23,13 +23,7 @@ public class SendMessageCommand implements CommandExecutor { DiscordWebhook discordWebhook = new DiscordWebhook(ServerUtils.webhook_messages); discordWebhook.setUsername("Public Messages"); String message = String.join(" ", args); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject() - .setTitle("New public message") - .setDescription(message) - .setAuthor(sender.getName(), "", "") - .setFooter(new Date().toString(), "") - .setColor(Color.darkGray); - discordWebhook.addEmbed(embedObject); + discordWebhook.setContent(String.format("**%s**: %s", sender.getName(), message)); try { discordWebhook.execute(); sender.sendMessage("Sent public message."); diff --git a/src/main/java/moe/sob/commands/SetGreetMessageCommand.java b/src/main/java/moe/sob/commands/SetGreetMessageCommand.java new file mode 100644 index 0000000..5786b30 --- /dev/null +++ b/src/main/java/moe/sob/commands/SetGreetMessageCommand.java @@ -0,0 +1,27 @@ +package moe.sob.commands; + +import moe.sob.Main; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +public class SetGreetMessageCommand implements CommandExecutor { + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args[0].isBlank()) { + sender.sendMessage("Insufficient arguments."); + return false; + } else { + try { + String greetMessage = String.join(" ", args); + Main.configR.set("server.greet_message", greetMessage); + Main.configR.save(Main.config); + + sender.sendMessage("Changed greet message successfully."); + return true; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } +} diff --git a/src/main/java/cf/sobrooms/commands/SetLoggingModeCommand.java b/src/main/java/moe/sob/commands/SetLoggingModeCommand.java similarity index 56% rename from src/main/java/cf/sobrooms/commands/SetLoggingModeCommand.java rename to src/main/java/moe/sob/commands/SetLoggingModeCommand.java index bfe282f..4a8043a 100644 --- a/src/main/java/cf/sobrooms/commands/SetLoggingModeCommand.java +++ b/src/main/java/moe/sob/commands/SetLoggingModeCommand.java @@ -1,15 +1,12 @@ -package cf.sobrooms.commands; +package moe.sob.commands; -import cf.sobrooms.Main; +import moe.sob.Main; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.ChatColor; -import java.io.FileWriter; -import java.io.IOException; - public class SetLoggingModeCommand implements CommandExecutor { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args[0].isBlank()) { @@ -18,20 +15,16 @@ public class SetLoggingModeCommand implements CommandExecutor { } else { if (args[0].equals("true") || args[0].equals("false")) { try { - - FileWriter writer = new FileWriter(Main.isLoggingConfig); - writer.write(args[0]); - writer.close(); - System.out.println("Wrote to config, closing writer..."); - sender.sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "Changes will only apply once the server has restarted."); + Main.configR.set("log", args[0].equals("true")); + Main.configR.save(Main.config); String status = ""; if (args[0].equals("true")) status = "enabled"; else if (args[0].equals("false")) status = "disabled"; - Bukkit.broadcastMessage(ChatColor.ITALIC + "%s %s server logging.".formatted(sender.getName(), status)); - Bukkit.broadcastMessage(ChatColor.ITALIC + "Changes will only apply once the server has restarted."); - } catch (IOException e) { + sender.sendMessage(ChatColor.ITALIC + "%s %s server logging.".formatted(sender.getName(), status)); + sender.sendMessage(ChatColor.ITALIC + "Changes will only apply once the server has restarted."); + } catch (Exception e) { throw new RuntimeException(e); } return true; diff --git a/src/main/java/cf/sobrooms/events/player/PlayerBedEnter.java b/src/main/java/moe/sob/events/player/PlayerBedEnter.java similarity index 91% rename from src/main/java/cf/sobrooms/events/player/PlayerBedEnter.java rename to src/main/java/moe/sob/events/player/PlayerBedEnter.java index 594185d..bc6f000 100644 --- a/src/main/java/cf/sobrooms/events/player/PlayerBedEnter.java +++ b/src/main/java/moe/sob/events/player/PlayerBedEnter.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.player; +package moe.sob.events.player; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/src/main/java/cf/sobrooms/events/player/PlayerBedLeave.java b/src/main/java/moe/sob/events/player/PlayerBedLeave.java similarity index 91% rename from src/main/java/cf/sobrooms/events/player/PlayerBedLeave.java rename to src/main/java/moe/sob/events/player/PlayerBedLeave.java index d7b8b23..bfaf574 100644 --- a/src/main/java/cf/sobrooms/events/player/PlayerBedLeave.java +++ b/src/main/java/moe/sob/events/player/PlayerBedLeave.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.player; +package moe.sob.events.player; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/src/main/java/cf/sobrooms/events/player/PlayerChat.java b/src/main/java/moe/sob/events/player/PlayerChat.java similarity index 85% rename from src/main/java/cf/sobrooms/events/player/PlayerChat.java rename to src/main/java/moe/sob/events/player/PlayerChat.java index ad27258..9acc32a 100644 --- a/src/main/java/cf/sobrooms/events/player/PlayerChat.java +++ b/src/main/java/moe/sob/events/player/PlayerChat.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.player; +package moe.sob.events.player; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -22,7 +22,7 @@ public class PlayerChat implements Listener { Player player = event.getPlayer(); DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("A message was sent by " + event.getPlayer().getName()) - .addField("Date of message", new Date().toString(), false) + .addField("Send date", new Date().toString(), false) .addField("Message content", event.getMessage(), true) .setColor(Color.BLUE); notify.addEmbed(embedObject); diff --git a/src/main/java/cf/sobrooms/events/player/PlayerCommandPreprocess.java b/src/main/java/moe/sob/events/player/PlayerCommandPreprocess.java similarity index 91% rename from src/main/java/cf/sobrooms/events/player/PlayerCommandPreprocess.java rename to src/main/java/moe/sob/events/player/PlayerCommandPreprocess.java index d8e9226..9e29e47 100644 --- a/src/main/java/cf/sobrooms/events/player/PlayerCommandPreprocess.java +++ b/src/main/java/moe/sob/events/player/PlayerCommandPreprocess.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.player; +package moe.sob.events.player; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,7 +20,7 @@ public class PlayerCommandPreprocess implements Listener { Player player = event.getPlayer(); String[] command = event.getMessage().split(" "); // get the command name DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("Command used").setDescription("A player has used a command.") + DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("Command used") .addField("Date of usage", new Date().toString(), false) .addField("Player name", player.getName(), false) .addField("Command", command[0], true) diff --git a/src/main/java/cf/sobrooms/events/player/PlayerJoin.java b/src/main/java/moe/sob/events/player/PlayerJoin.java similarity index 84% rename from src/main/java/cf/sobrooms/events/player/PlayerJoin.java rename to src/main/java/moe/sob/events/player/PlayerJoin.java index 404a7c0..beb12e2 100644 --- a/src/main/java/cf/sobrooms/events/player/PlayerJoin.java +++ b/src/main/java/moe/sob/events/player/PlayerJoin.java @@ -1,8 +1,8 @@ -package cf.sobrooms.events.player; +package moe.sob.events.player; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.Main; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.Main; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.entity.Player; @@ -21,7 +21,7 @@ public class PlayerJoin implements Listener { Player player = event.getPlayer(); DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("A player has joined the server.") - .addField("Date of join", new Date().toString(), false) + .addField("Triggered at", new Date().toString(), false) .addField("Player name", player.getName(), true) .setColor(Color.BLUE); notify.addEmbed(embedObject); diff --git a/src/main/java/cf/sobrooms/events/player/PlayerQuit.java b/src/main/java/moe/sob/events/player/PlayerQuit.java similarity index 91% rename from src/main/java/cf/sobrooms/events/player/PlayerQuit.java rename to src/main/java/moe/sob/events/player/PlayerQuit.java index 0b4d06d..fc1910b 100644 --- a/src/main/java/cf/sobrooms/events/player/PlayerQuit.java +++ b/src/main/java/moe/sob/events/player/PlayerQuit.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.player; +package moe.sob.events.player; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/src/main/java/cf/sobrooms/events/server/ServerLoad.java b/src/main/java/moe/sob/events/server/ServerLoad.java similarity index 81% rename from src/main/java/cf/sobrooms/events/server/ServerLoad.java rename to src/main/java/moe/sob/events/server/ServerLoad.java index 9a09131..8b24147 100644 --- a/src/main/java/cf/sobrooms/events/server/ServerLoad.java +++ b/src/main/java/moe/sob/events/server/ServerLoad.java @@ -1,9 +1,9 @@ -package cf.sobrooms.events.server; +package moe.sob.events.server; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.Main; -import cf.sobrooms.ServerUtils; -import cf.sobrooms.Utils; +import moe.sob.DiscordWebhook; +import moe.sob.Main; +import moe.sob.ServerUtils; +import moe.sob.Utils; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -13,9 +13,9 @@ import java.awt.*; import java.io.IOException; import java.util.Date; -import cf.sobrooms.DiscordWebhook.EmbedObject; +import moe.sob.DiscordWebhook.EmbedObject; -import static cf.sobrooms.ServerUtils.address; +import static moe.sob.ServerUtils.address; public class ServerLoad implements Listener { public static int timesCalled = 0; @@ -25,13 +25,13 @@ public class ServerLoad implements Listener { if (timesCalled < 1) { Bukkit.getConsoleSender().sendMessage("Checking if server is up on " + ServerUtils.address + " with port " + Bukkit.getServer().getPort() + "..."); if (ServerUtils.serverIsUp(address, Bukkit.getServer().getPort())) { - System.out.println(ServerUtils.webhook_messages); - System.out.println(ServerUtils.webhook_notify); + // System.out.println(ServerUtils.webhook_messages); // What the fuck!! + // System.out.println(ServerUtils.webhook_notify); DiscordWebhook notify = new DiscordWebhook(Main.getNotifyWebhook()); EmbedObject embedObject = new EmbedObject().setTitle("Server started up successfully").setDescription(String.format("The server at %s:%d has started successfully.", Utils.getServerHostPublicIP(), Bukkit.getServer().getPort())) .addField("Date of start", new Date().toString(), false) .setColor(Color.GREEN); - if (Main.getLoggingConfig().equals("false")) + if (!Main.configR.getBoolean("log")) embedObject.addField("Extra notes", "The server will not try to log any events.", false); notify.addEmbed(embedObject); try { diff --git a/src/main/java/cf/sobrooms/events/world/WorldLoad.java b/src/main/java/moe/sob/events/world/WorldLoad.java similarity index 82% rename from src/main/java/cf/sobrooms/events/world/WorldLoad.java rename to src/main/java/moe/sob/events/world/WorldLoad.java index 0742b90..3b1909d 100644 --- a/src/main/java/cf/sobrooms/events/world/WorldLoad.java +++ b/src/main/java/moe/sob/events/world/WorldLoad.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.world; +package moe.sob.events.world; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -16,7 +16,7 @@ public class WorldLoad implements Listener { public void onWorldLoad(WorldLoadEvent event) { Bukkit.getConsoleSender().sendMessage("Triggered WorldLoad event."); DiscordWebhook notify = new DiscordWebhook(ServerUtils.webhook_notify); - DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("WorldLoad").setDescription("World in server was loaded") + DiscordWebhook.EmbedObject embedObject = new DiscordWebhook.EmbedObject().setTitle("World loaded") .addField("Time", new Date().toString(), false) .addField("World name", event.getWorld().getName(), true) .setColor(Color.BLUE); diff --git a/src/main/java/cf/sobrooms/events/world/WorldUnload.java b/src/main/java/moe/sob/events/world/WorldUnload.java similarity index 90% rename from src/main/java/cf/sobrooms/events/world/WorldUnload.java rename to src/main/java/moe/sob/events/world/WorldUnload.java index 8cc8251..0e05d7c 100644 --- a/src/main/java/cf/sobrooms/events/world/WorldUnload.java +++ b/src/main/java/moe/sob/events/world/WorldUnload.java @@ -1,7 +1,7 @@ -package cf.sobrooms.events.world; +package moe.sob.events.world; -import cf.sobrooms.DiscordWebhook; -import cf.sobrooms.ServerUtils; +import moe.sob.DiscordWebhook; +import moe.sob.ServerUtils; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3f35a94..c0057be 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ -main: cf.sobrooms.Main -version: 1.1.4 +main: moe.sob.Main +version: 1.2.0 name: notifyOnStart -description: Sends webhook_notify to sobrooms when the server starts successfully +description: A logging plugin. api-version: 1.19 authors: [rrryfoo, sobrooms] commands: @@ -10,15 +10,20 @@ commands: usage: /info aliases: [i] send-message: - description: Sends a message to the Discord server. (If any was set) - usage: /send-message + description: Broadcast text onto this server's Discord server. + usage: /send-message aliases: [sms] set-logging: - description: Enables or disables event logging in the server, performance and events can occur faster with this off. (Depending on server speed) + description: Enables or disables event logging in the server. Server performance is enhanced while logs are disabled. (Depending on server speed) usage: /set-logging permission: op + permission-message: Only operators can use this command. aliases: [sl] ping-server: description: Gets the server ping. usage: /ping-server aliases: [ping] + set-greet-message: + description: Change the message sent to players whenever they join the server. + usage: /set-greet-message + aliases: [sgm] \ No newline at end of file