From b28027be7678c5d96ee71e29b6c13b5cf9bf4884 Mon Sep 17 00:00:00 2001
From: CorwinDev <88144943+CorwinDev@users.noreply.github.com>
Date: Mon, 12 Sep 2022 16:14:55 +0200
Subject: [PATCH] Version 2.0
---
pom.xml | 33 ++++++++++--
.../streamervschat/command/TestCommand.java | 1 +
.../nl/corwindev/streamervschat/commands.java | 51 ++++++++++++++++---
.../discord/DiscordConnectionHelper.java | 1 +
.../nl/corwindev/streamervschat/main.java | 40 +++++++++++++--
.../streamervschat/objects/UpdateChecker.java | 33 ++++++++++++
.../twitch/TwitchConnectionHelper.java | 2 -
.../streamervschat/twitch/TwitchEvents.java | 1 +
.../youtube/YouTubeConnectionHelper.java | 11 +++-
src/main/resources/plugin.yml | 2 +-
10 files changed, 159 insertions(+), 16 deletions(-)
create mode 100644 src/main/java/nl/corwindev/streamervschat/objects/UpdateChecker.java
diff --git a/pom.xml b/pom.xml
index b93060c..70c16c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
StreamerVSChat
StreamerVSChat
- 1.4
+ 2.0
jar
Streamer vs Chat
@@ -31,9 +31,14 @@
maven-shade-plugin
3.2.4
+
+
+ org.bstats
+ nl.corwindev.streamervschat.main
+
+
-
+
nl.corwindev.streamervschat.main
@@ -93,6 +98,10 @@
club.minnced
opus-java
+
+ org.slf4j
+ *
+
@@ -104,6 +113,18 @@
club.minnced
opus-java
+
+ org.slf4j
+ *
+
+
+ commons-lang
+ *
+
+
+ io.github.openfeign
+ *
+
@@ -111,5 +132,11 @@
google-api-services-youtube
v3-rev182-1.22.0
+
+ org.bstats
+ bstats-bukkit
+ 3.0.0
+ compile
+
diff --git a/src/main/java/nl/corwindev/streamervschat/command/TestCommand.java b/src/main/java/nl/corwindev/streamervschat/command/TestCommand.java
index f62f3bb..0f92737 100644
--- a/src/main/java/nl/corwindev/streamervschat/command/TestCommand.java
+++ b/src/main/java/nl/corwindev/streamervschat/command/TestCommand.java
@@ -16,6 +16,7 @@ public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command
commandSender.sendMessage(ChatColor.RED + "Correct usage: /testcommand ");
return false;
}
+ commands.UserList.add(commandSender.getName());
commands.commandList.add(strings[0]);
commandSender.sendMessage(ChatColor.GREEN + "Added command: " + strings[0] + " to queue;");
return true;
diff --git a/src/main/java/nl/corwindev/streamervschat/commands.java b/src/main/java/nl/corwindev/streamervschat/commands.java
index 11835c5..3fed53e 100644
--- a/src/main/java/nl/corwindev/streamervschat/commands.java
+++ b/src/main/java/nl/corwindev/streamervschat/commands.java
@@ -1,25 +1,28 @@
package nl.corwindev.streamervschat;
+import net.md_5.bungee.api.ChatMessageType;
+import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.FallingBlock;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.TNTPrimed;
+import org.bukkit.entity.*;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitTask;
+import org.bukkit.util.Vector;
import java.util.*;
+import java.util.concurrent.ThreadLocalRandom;
import static nl.corwindev.streamervschat.main.plugin;
public class commands {
public static List commandList = new ArrayList();
-
+ public static List UserList = new ArrayList();
public static void start() {
BukkitTask task = Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() {
@Override
@@ -36,6 +39,10 @@ public void run() {
}
// Remove the command from the list
runCmd(command);
+ // Alert the user
+ for(Player player: getPlayers()) {
+ player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent("§a§l" + UserList.get(randomCommand) + "§r§a has executed the command: §l" + command));
+ }
}
}, plugin.getConfig().getInt("commands.delay") * 20, plugin.getConfig().getInt("commands.delay") * 20);
}
@@ -87,7 +94,13 @@ public static void runCmd(String command) {
commands.jumpboost();
}else if(Objects.equals(command, "levitate") || Objects.equals(command, "fly")) {
commands.fly();
- }else {
+ }else if(Objects.equals(command, "randomeffect") || Objects.equals(command, "randompoison")){
+ commands.randomeffect();
+ }else if(Objects.equals(command, "fireball")) {
+ commands.fireball();
+ }else if(Objects.equals(command, "drop")){
+ commands.drop();
+ } else {
commands.custom(command);
}
}
@@ -270,4 +283,30 @@ public static void custom(String command){
}
}
}
+
+ public static void randomeffect(){
+ int rnd = ThreadLocalRandom.current().nextInt(PotionEffectType.values().length);
+
+ for (Player player : getPlayers()) {
+ player.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.values()[rnd], 200, 1));
+ }
+ }
+
+ public static void fireball(){
+ for (Player player : getPlayers()) {
+ // Send fireball to the player
+ Location location = new Location(player.getWorld(), player.getLocation().getX(), player.getLocation().getY() + 20, player.getLocation().getZ() );
+ Vector vector = player.getLocation().toVector().subtract(location.toVector()).normalize();
+ Fireball fire = (Fireball) location.getWorld().spawn(location, Fireball.class);
+ fire.setDirection(vector);
+ }
+ }
+
+ public static void drop(){
+ for (Player player : getPlayers()) {
+ ItemStack hand = player.getInventory().getItemInMainHand();
+ player.getInventory().removeItem(hand);
+ player.getWorld().dropItemNaturally(player.getLocation(), hand);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/nl/corwindev/streamervschat/discord/DiscordConnectionHelper.java b/src/main/java/nl/corwindev/streamervschat/discord/DiscordConnectionHelper.java
index 0636d42..9a8b786 100644
--- a/src/main/java/nl/corwindev/streamervschat/discord/DiscordConnectionHelper.java
+++ b/src/main/java/nl/corwindev/streamervschat/discord/DiscordConnectionHelper.java
@@ -41,6 +41,7 @@ public void onMessageReceived(MessageReceivedEvent event) {
Message message = event.getMessage();
String content = message.getContentRaw();
if (content.contains(main.plugin.getConfig().getString("commands.prefix"))) {
+ commands.UserList.add(event.getAuthor().getName());
commands.commandList.add(content.replace(main.plugin.getConfig().getString("commands.prefix"), ""));
}
}
diff --git a/src/main/java/nl/corwindev/streamervschat/main.java b/src/main/java/nl/corwindev/streamervschat/main.java
index aa2a60c..953b606 100644
--- a/src/main/java/nl/corwindev/streamervschat/main.java
+++ b/src/main/java/nl/corwindev/streamervschat/main.java
@@ -1,19 +1,22 @@
package nl.corwindev.streamervschat;
-import net.dv8tion.jda.api.JDA;
import nl.corwindev.streamervschat.command.DiscordReload;
import nl.corwindev.streamervschat.command.TwitchReload;
import nl.corwindev.streamervschat.command.YouTubeReload;
+import nl.corwindev.streamervschat.objects.UpdateChecker;
import nl.corwindev.streamervschat.youtube.YouTubeConnectionHelper;
+import org.bstats.charts.DrilldownPie;
import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import nl.corwindev.streamervschat.discord.DiscordConnectionHelper;
import nl.corwindev.streamervschat.twitch.TwitchConnectionHelper;
import javax.security.auth.login.LoginException;
import nl.corwindev.streamervschat.objects.JdaFilter;
import nl.corwindev.streamervschat.command.TestCommand;
-import org.bukkit.util.Vector;
+import org.bstats.bukkit.Metrics;
+
+import java.util.HashMap;
+import java.util.Map;
public final class main extends JavaPlugin {
// Exports this class to the plugin.
@@ -25,6 +28,14 @@ public void onEnable() {
this.reloadConfig();
this.saveDefaultConfig();
plugin = this;
+ int pluginId = 16419;
+ new UpdateChecker(this, pluginId).getVersion(version -> {
+ if (this.getDescription().getVersion().equals(version)) {
+ getLogger().info("There is not a new update available.");
+ } else {
+ getLogger().warning("There is a new update available. Download it here: https://www.spigotmc.org/resources/streamer-vs-chat-1-13-1-19.105119/");
+ }
+ });
if (!plugin.getConfig().getBoolean("twitch.enabled") && !plugin.getConfig().getBoolean("discord.enabled") && !plugin.getConfig().getBoolean("youtube.enabled")) {
getLogger().info("No services enabled, disabling plugin.");
Bukkit.getPluginManager().disablePlugin(this);
@@ -76,6 +87,27 @@ public void onEnable() {
this.getCommand("youtube-reload").setExecutor(new YouTubeReload());
this.getCommand("twitch-reload").setExecutor(new TwitchReload());
this.getCommand("discord-reload").setExecutor(new DiscordReload());
+ Metrics metrics = new Metrics(this, pluginId);
+ metrics.addCustomChart(new DrilldownPie("live_platform", () -> {
+ Map> map = new HashMap<>();
+ Boolean YouTubeEnabled = this.getConfig().getBoolean("youtube.enabled");
+ Boolean TwitchEnabled = this.getConfig().getBoolean("twitch.enabled");
+ Boolean DiscordEnabled = this.getConfig().getBoolean("discord.enabled");
+ Map entry = new HashMap<>();
+ entry.put("YouTube", YouTubeEnabled ? 1 : 0);
+ entry.put("Twitch", TwitchEnabled ? 1 : 0);
+ entry.put("Discord", DiscordEnabled ? 1 : 0);
+ if(YouTubeEnabled) {
+ map.put("YouTube", entry);
+ }
+ if(TwitchEnabled) {
+ map.put("Twitch", entry);
+ }
+ if(DiscordEnabled) {
+ map.put("Discord", entry);
+ }
+ return map;
+ }));
}
@Override
@@ -88,6 +120,8 @@ public void onDisable() {
if (TwitchConnectionHelper.isConnected()) {
TwitchConnectionHelper.getBot().disconnect();
}
+ YouTubeConnectionHelper.stop();
+
getLogger().info("Corwin shutting down!");
}
diff --git a/src/main/java/nl/corwindev/streamervschat/objects/UpdateChecker.java b/src/main/java/nl/corwindev/streamervschat/objects/UpdateChecker.java
new file mode 100644
index 0000000..297b7aa
--- /dev/null
+++ b/src/main/java/nl/corwindev/streamervschat/objects/UpdateChecker.java
@@ -0,0 +1,33 @@
+package nl.corwindev.streamervschat.objects;
+
+import org.bukkit.Bukkit;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Scanner;
+import java.util.function.Consumer;
+
+public class UpdateChecker {
+
+ private final JavaPlugin plugin;
+ private final int resourceId;
+
+ public UpdateChecker(JavaPlugin plugin, int resourceId) {
+ this.plugin = plugin;
+ this.resourceId = resourceId;
+ }
+
+ public void getVersion(final Consumer consumer) {
+ Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
+ try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" + this.resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) {
+ if (scanner.hasNext()) {
+ consumer.accept(scanner.next());
+ }
+ } catch (IOException exception) {
+ plugin.getLogger().info("Unable to check for updates: " + exception.getMessage());
+ }
+ });
+ }
+}
diff --git a/src/main/java/nl/corwindev/streamervschat/twitch/TwitchConnectionHelper.java b/src/main/java/nl/corwindev/streamervschat/twitch/TwitchConnectionHelper.java
index 00eabe9..91c58c4 100644
--- a/src/main/java/nl/corwindev/streamervschat/twitch/TwitchConnectionHelper.java
+++ b/src/main/java/nl/corwindev/streamervschat/twitch/TwitchConnectionHelper.java
@@ -29,11 +29,9 @@ public static boolean login() {
botThread = new Thread(() -> {
-
TwitchEvents bot = new TwitchEvents(twitchClient.getEventManager().getEventHandler(SimpleEventHandler.class));
twitchClient.joinChannel(plugin.getConfig().getString("twitch.channel"));
twitchClient.connect();
-
});
botThread.start();
diff --git a/src/main/java/nl/corwindev/streamervschat/twitch/TwitchEvents.java b/src/main/java/nl/corwindev/streamervschat/twitch/TwitchEvents.java
index c1899b1..c86326f 100644
--- a/src/main/java/nl/corwindev/streamervschat/twitch/TwitchEvents.java
+++ b/src/main/java/nl/corwindev/streamervschat/twitch/TwitchEvents.java
@@ -15,6 +15,7 @@ public TwitchEvents(SimpleEventHandler eventHandler) {
private void onChannelMessage(ChannelMessageEvent event) {
System.out.println(event.getUser().getName() + ": " + event.getMessage());
if (event.getMessage().contains(main.plugin.getConfig().getString("commands.prefix"))) {
+ commands.UserList.add(event.getUser().getName());
commands.commandList.add(event.getMessage().replace(main.plugin.getConfig().getString("commands.prefix"), ""));
}
}
diff --git a/src/main/java/nl/corwindev/streamervschat/youtube/YouTubeConnectionHelper.java b/src/main/java/nl/corwindev/streamervschat/youtube/YouTubeConnectionHelper.java
index 3964275..ba4ab60 100644
--- a/src/main/java/nl/corwindev/streamervschat/youtube/YouTubeConnectionHelper.java
+++ b/src/main/java/nl/corwindev/streamervschat/youtube/YouTubeConnectionHelper.java
@@ -44,7 +44,7 @@ public static void main(String args) {
main.plugin.getLogger().warning("[YouTube] Error: " + t.getMessage());
}
}
-
+ public static TimerTask tt = null;
/**
* Lists live chat messages, polling at the server supplied interval. Owners and moderators of a
* live chat will poll at a faster rate.
@@ -62,6 +62,7 @@ private static void listChatMessages(
new TimerTask() {
@Override
public void run() {
+ tt = this;
try {
// Get chat messages from YouTube
LiveChatMessageListResponse response = youtube
@@ -123,6 +124,7 @@ private static String buildOutput(
if (author.getIsChatSponsor()) {
roles.add("SPONSOR");
}
+ commands.UserList.add(author.getDisplayName());
if (roles.size() > 0) {
output.append(" (");
String delim = "";
@@ -147,7 +149,14 @@ private static String buildOutput(
public static void reload(){
main.plugin.getLogger().info("[YouTube] Reloading...");
main.plugin.reloadConfig();
+ tt.cancel();
main("run");
main.plugin.getLogger().info("[YouTube] Reloaded!");
}
+
+ public static void stop(){
+ main.plugin.getLogger().info("[YouTube] Stopping...");
+ tt.cancel();
+ main.plugin.getLogger().info("[YouTube] Stopped!");
+ }
}
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index a14bf81..f0c30f4 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: StreamerVsChat
-version: '1.4'
+version: '2.0'
main: nl.corwindev.streamervschat.main
api-version: 1.13
commands: