Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit c082135

Browse files
committed
Discord webhooks, Code Cleanup, Beta Build
1 parent ec21b93 commit c082135

29 files changed

Lines changed: 1107 additions & 261 deletions

pom.xml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,40 @@
5959
<id>spigotmc-repo</id>
6060
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
6161
</repository>
62+
6263
<repository>
6364
<id>sonatype</id>
6465
<url>https://oss.sonatype.org/content/groups/public/</url>
6566
</repository>
67+
68+
<repository>
69+
<id>placeholderapi</id>
70+
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
71+
</repository>
72+
6673
</repositories>
6774

6875
<dependencies>
6976
<dependency>
7077
<groupId>org.spigotmc</groupId>
7178
<artifactId>spigot-api</artifactId>
72-
<version>1.16.5-R0.1-SNAPSHOT</version>
79+
<version>1.17.1-R0.1-SNAPSHOT</version>
7380
<scope>provided</scope>
7481
</dependency>
82+
7583
<dependency>
7684
<groupId>net.md-5</groupId>
7785
<artifactId>bungeecord-api</artifactId>
78-
<version>1.16-R0.5-SNAPSHOT</version>
86+
<version>1.17-R0.1-SNAPSHOT</version>
7987
<scope>provided</scope>
8088
</dependency>
89+
90+
<dependency>
91+
<groupId>me.clip</groupId>
92+
<artifactId>placeholderapi</artifactId>
93+
<version>2.10.9</version>
94+
<scope>provided</scope>
95+
</dependency>
96+
8197
</dependencies>
8298
</project>

src/main/java/me/refrac/simpleannounce/bungee/BungeeAnnounce.java

Lines changed: 38 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,32 @@
44
*/
55
package me.refrac.simpleannounce.bungee;
66

7-
import com.google.common.io.ByteStreams;
8-
import me.refrac.simpleannounce.bungee.commands.AnnounceCommand;
9-
import me.refrac.simpleannounce.bungee.commands.AnnounceReloadCommand;
10-
import me.refrac.simpleannounce.bungee.tasks.AnnounceTask;
11-
import me.refrac.simpleannounce.bungee.utils.Logger;
12-
import me.refrac.simpleannounce.bungee.utils.Utils;
13-
import net.md_5.bungee.api.ProxyServer;
7+
import me.refrac.simpleannounce.bungee.commands.*;
8+
import me.refrac.simpleannounce.bungee.tasks.*;
9+
import me.refrac.simpleannounce.bungee.utils.*;
1410
import net.md_5.bungee.api.plugin.Plugin;
15-
import net.md_5.bungee.config.Configuration;
16-
import net.md_5.bungee.config.ConfigurationProvider;
17-
import net.md_5.bungee.config.YamlConfiguration;
1811

19-
import java.io.*;
2012
import java.util.concurrent.TimeUnit;
2113

22-
/**
23-
* @author Zachary Baldwin / Refrac
24-
*/
2514
public final class BungeeAnnounce extends Plugin {
26-
27-
private Configuration config;
15+
private FileUtil fileUtil;
16+
private DiscordImpl discordImpl;
2817

2918
@Override
3019
public void onEnable() {
3120
// Plugin startup logic
32-
loadConfig();
21+
fileUtil = new FileUtil(this);
22+
discordImpl = new DiscordImpl(this);
3323

34-
ProxyServer.getInstance().getPluginManager().registerCommand(this, new AnnounceCommand(this));
35-
ProxyServer.getInstance().getPluginManager().registerCommand(this, new AnnounceReloadCommand(this));
24+
fileUtil.loadConfig();
25+
fileUtil.loadDiscord();
3626

37-
ProxyServer.getInstance().getScheduler().schedule(this, new AnnounceTask(this), 0, config.getInt("Interval"), TimeUnit.SECONDS);
27+
registerCommands();
28+
registerListeners();
29+
30+
if (getProxy().getPluginManager().getPlugin("PlaceholderAPI") != null) {
31+
Logger.INFO.out("[" + Utils.getName + "] Hooked into PlaceholderAPI.");
32+
}
3833

3934
Logger.NONE.out(Utils.format("&8&m==&c&m=====&f&m======================&c&m=====&8&m=="));
4035
Logger.NONE.out(Utils.format("&e" + Utils.getName + " has been enabled."));
@@ -47,39 +42,33 @@ public void onEnable() {
4742
@Override
4843
public void onDisable() {
4944
// Plugin shutdown logic
50-
ProxyServer.getInstance().getScheduler().cancel(this);
51-
ProxyServer.getInstance().getPluginManager().unregisterCommands(this);
45+
getProxy().getScheduler().cancel(this);
46+
getProxy().getPluginManager().unregisterCommands(this);
47+
getProxy().getPluginManager().unregisterListeners(this);
5248
}
5349

54-
public Configuration getConfig() {
55-
return config;
56-
}
57-
58-
public void loadConfig() {
59-
try {
60-
config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(
61-
loadResource(this, "bungee-config.yml"));
62-
} catch (IOException e) {
63-
e.printStackTrace();
50+
private void registerCommands() {
51+
if (fileUtil.getConfig().getBoolean("Commands.ANNOUNCE.ENABLED")) {
52+
getProxy().getPluginManager().registerCommand(this, new AnnounceCommand(this));
53+
}
54+
getProxy().getPluginManager().registerCommand(this, new AnnounceDevCommand(this));
55+
if (fileUtil.getConfig().getBoolean("Commands.RELOAD.ENABLED")) {
56+
getProxy().getPluginManager().registerCommand(this, new AnnounceReloadCommand(this));
6457
}
6558
}
6659

67-
private File loadResource(Plugin plugin, String resource) {
68-
File folder = plugin.getDataFolder();
69-
if (!folder.exists())
70-
folder.mkdir();
71-
File resourceFile = new File(folder, resource);
72-
try {
73-
if (!resourceFile.exists()) {
74-
resourceFile.createNewFile();
75-
try (InputStream in = plugin.getResourceAsStream(resource);
76-
OutputStream out = new FileOutputStream(resourceFile)) {
77-
ByteStreams.copy(in, out);
78-
}
79-
}
80-
} catch (Exception e) {
81-
e.printStackTrace();
82-
}
83-
return resourceFile;
60+
private void registerListeners() {
61+
getProxy().getPluginManager().registerListener(this, new AnnounceDevCommand(this));
62+
63+
getProxy().getScheduler().schedule(this, new AnnounceTask(this), 20, fileUtil.getConfig().getInt("Interval"), TimeUnit.SECONDS);
64+
}
65+
66+
public FileUtil getFileUtil() {
67+
return fileUtil;
8468
}
69+
70+
public DiscordImpl getDiscordImpl() {
71+
return discordImpl;
72+
}
73+
8574
}

src/main/java/me/refrac/simpleannounce/bungee/commands/AnnounceCommand.java

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,21 @@
44
*/
55
package me.refrac.simpleannounce.bungee.commands;
66

7-
import com.google.common.base.Joiner;
8-
import me.refrac.simpleannounce.bungee.BungeeAnnounce;
9-
import me.refrac.simpleannounce.bungee.utils.Utils;
7+
import me.refrac.simpleannounce.bungee.*;
8+
import me.refrac.simpleannounce.bungee.utils.*;
109
import net.md_5.bungee.api.CommandSender;
1110
import net.md_5.bungee.api.ProxyServer;
1211
import net.md_5.bungee.api.chat.TextComponent;
1312
import net.md_5.bungee.api.connection.ProxiedPlayer;
1413
import net.md_5.bungee.api.plugin.Command;
1514

16-
/**
17-
* @author Zachary Baldwin / Refrac
18-
*/
15+
import java.awt.*;
16+
1917
public class AnnounceCommand extends Command {
20-
2118
private final BungeeAnnounce instance;
2219

2320
public AnnounceCommand(BungeeAnnounce instance) {
24-
super("announce", "simpleannounce.use", "broadcast", "bcast", "bc");
21+
super(instance.getFileUtil().getConfig().getString("Commands.ANNOUNCE.COMMAND"), instance.getFileUtil().getConfig().getString("Commands.ANNOUNCE.PERMISSION"), instance.getFileUtil().getConfig().getString("Commands.ANNOUNCE.ALIAS"));
2522
this.instance = instance;
2623
}
2724

@@ -32,26 +29,38 @@ public void execute(CommandSender sender, String[] args) {
3229
ProxiedPlayer player = (ProxiedPlayer) sender;
3330

3431
if (args.length == 0) {
35-
player.sendMessage(Utils.formatComponent("&b&lSimpleAnnounce &7by Refrac"));
32+
player.sendMessage(Utils.formatComponent("&b&lSimpleAnnounce &7by &bRefrac"));
3633
player.sendMessage(new TextComponent(""));
3734
player.sendMessage(Utils.formatComponent("&b/announce <message> &7- Announce your messages"));
3835
player.sendMessage(Utils.formatComponent("&b/announcereload &7- Reload your config files"));
3936
}
4037

4138
if (!(args.length >= 1)) return;
4239

43-
if (instance.getConfig().getBoolean("Format.ENABLED")) {
44-
String message = Joiner.on(" ").join(args);
45-
46-
for (String format : instance.getConfig().getStringList("Format.LINES")) {
47-
ProxyServer.getInstance().getPlayers().forEach(p -> p.sendMessage(Utils.formatComponent(format.replace("{arrow}", "»").replace("{message}", message))));
40+
if (instance.getFileUtil().getConfig().getBoolean("Format.ENABLED")) {
41+
for (String format : instance.getFileUtil().getConfig().getStringList("Format.LINES")) {
42+
ProxyServer.getInstance().getPlayers().forEach(p -> p.sendMessage(Utils.formatComponent(format.replace("{arrow}", "»").replace("{message}", stringArrayToString(args)))));
4843
}
4944
} else {
50-
String message = Joiner.on(" ").join(args);
51-
5245
for (ProxiedPlayer p : ProxyServer.getInstance().getPlayers()) {
53-
p.sendMessage(Utils.formatComponent(instance.getConfig().getString("Prefix") + message));
46+
p.sendMessage(Utils.formatComponent(instance.getFileUtil().getConfig().getString("Prefix") + stringArrayToString(args)));
47+
}
48+
}
49+
50+
if (instance.getFileUtil().getDiscord().getBoolean("Discord.EMBED-MESSAGE")) {
51+
instance.getDiscordImpl().sendEmbed(stringArrayToString(args).replace("{arrow}", "»"), Color.CYAN);
52+
} else
53+
instance.getDiscordImpl().sendMessage(stringArrayToString(args).replace("{arrow}", "»"));
54+
}
55+
56+
protected String stringArrayToString(String[] args) {
57+
StringBuilder stringBuilder = new StringBuilder();
58+
for (int i = 0; i < args.length; i++) {
59+
stringBuilder.append(args[i]);
60+
if (i != args.length - 1) {
61+
stringBuilder.append(" ");
5462
}
5563
}
64+
return stringBuilder.toString();
5665
}
5766
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Copyright (c) Refrac
3+
* If you have any questions please email refracplaysmc@gmail.com or reach me on Discord
4+
*/
5+
package me.refrac.simpleannounce.bungee.commands;
6+
7+
import me.refrac.simpleannounce.bungee.*;
8+
import me.refrac.simpleannounce.bungee.utils.*;
9+
import net.md_5.bungee.api.CommandSender;
10+
import net.md_5.bungee.api.ProxyServer;
11+
import net.md_5.bungee.api.connection.ProxiedPlayer;
12+
import net.md_5.bungee.api.event.PostLoginEvent;
13+
import net.md_5.bungee.api.plugin.Command;
14+
import net.md_5.bungee.api.plugin.Listener;
15+
import net.md_5.bungee.event.EventHandler;
16+
17+
public class AnnounceDevCommand extends Command implements Listener {
18+
private final BungeeAnnounce instance;
19+
20+
public AnnounceDevCommand(BungeeAnnounce instance) {
21+
super("announcedev");
22+
this.instance = instance;
23+
}
24+
25+
@Override
26+
public void execute(CommandSender sender, String[] args) {
27+
if (!sender.getName().equalsIgnoreCase("Zachzdb")) {
28+
sender.sendMessage(Utils.formatComponent("&cYou must be a developer to use this command."));
29+
return;
30+
}
31+
32+
sender.sendMessage(Utils.formatComponent(""));
33+
sender.sendMessage(Utils.formatComponent("&fHello!"));
34+
sender.sendMessage(Utils.formatComponent("&7Server Version - &f" + ProxyServer.getInstance().getVersion()));
35+
sender.sendMessage(Utils.formatComponent("&7Plugin Name - &f" + Utils.getName));
36+
sender.sendMessage(Utils.formatComponent("&7Plugin Version - &f" + Utils.getVersion));
37+
sender.sendMessage(Utils.formatComponent("&7End of log."));
38+
sender.sendMessage(Utils.formatComponent(""));
39+
}
40+
41+
@EventHandler
42+
public void onJoin(PostLoginEvent event) {
43+
ProxiedPlayer player = event.getPlayer();
44+
45+
if (!player.getName().equalsIgnoreCase("Zachzdb")) return;
46+
47+
player.sendMessage(Utils.formatComponent(""));
48+
player.sendMessage(Utils.formatComponent("&cRefrac Support Debug Message"));
49+
player.sendMessage(Utils.formatComponent(""));
50+
player.sendMessage(Utils.formatComponent("&aThis server is running " + Utils.getName + " v" + Utils.getVersion));
51+
player.sendMessage(Utils.formatComponent("&aRunning " + ProxyServer.getInstance().getVersion()));
52+
player.sendMessage(Utils.formatComponent(""));
53+
}
54+
}

src/main/java/me/refrac/simpleannounce/bungee/commands/AnnounceReloadCommand.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,29 @@
44
*/
55
package me.refrac.simpleannounce.bungee.commands;
66

7-
import me.refrac.simpleannounce.bungee.BungeeAnnounce;
8-
import me.refrac.simpleannounce.bungee.tasks.AnnounceTask;
9-
import me.refrac.simpleannounce.bungee.utils.Utils;
7+
import me.refrac.simpleannounce.bungee.*;
8+
import me.refrac.simpleannounce.bungee.tasks.*;
9+
import me.refrac.simpleannounce.bungee.utils.*;
1010
import net.md_5.bungee.api.CommandSender;
1111
import net.md_5.bungee.api.ProxyServer;
1212
import net.md_5.bungee.api.plugin.Command;
1313

1414
import java.util.concurrent.TimeUnit;
1515

16-
/**
17-
* @author Zachary Baldwin / Refrac
18-
*/
1916
public class AnnounceReloadCommand extends Command {
20-
2117
private final BungeeAnnounce instance;
2218

2319
public AnnounceReloadCommand(BungeeAnnounce instance) {
24-
super("announcereload", "simpleannounce.admin");
20+
super(instance.getFileUtil().getConfig().getString("Commands.ANNOUNCE.COMMAND"), instance.getFileUtil().getConfig().getString("Commands.ANNOUNCE.PERMISSION"), instance.getFileUtil().getConfig().getString("Commands.ANNOUNCE.ALIAS"));
2521
this.instance = instance;
2622
}
2723

2824
@Override
2925
public void execute(CommandSender sender, String[] args) {
30-
instance.loadConfig();
26+
instance.getFileUtil().loadConfig();
27+
instance.getFileUtil().loadDiscord();
3128
ProxyServer.getInstance().getScheduler().cancel(instance);
32-
ProxyServer.getInstance().getScheduler().schedule(instance, new AnnounceTask(instance), 0, instance.getConfig().getInt("Interval"), TimeUnit.SECONDS);
29+
ProxyServer.getInstance().getScheduler().schedule(instance, new AnnounceTask(instance), 0, instance.getFileUtil().getConfig().getInt("Interval"), TimeUnit.SECONDS);
3330
sender.sendMessage(Utils.formatComponent("&7Config files reloaded. Changes should be live in-game!"));
3431
}
3532
}

src/main/java/me/refrac/simpleannounce/bungee/tasks/AnnounceTask.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,16 @@
44
*/
55
package me.refrac.simpleannounce.bungee.tasks;
66

7-
import me.refrac.simpleannounce.bungee.BungeeAnnounce;
8-
import me.refrac.simpleannounce.bungee.utils.Logger;
9-
import me.refrac.simpleannounce.bungee.utils.Utils;
7+
import me.refrac.simpleannounce.bungee.*;
8+
import me.refrac.simpleannounce.bungee.utils.*;
109
import net.md_5.bungee.api.ProxyServer;
1110
import net.md_5.bungee.config.Configuration;
1211

1312
import java.util.Iterator;
1413
import java.util.Random;
1514
import java.util.Set;
1615

17-
/**
18-
* @author Zachary Baldwin / Refrac
19-
*/
2016
public class AnnounceTask implements Runnable {
21-
2217
private final BungeeAnnounce instance;
2318

2419
public AnnounceTask(BungeeAnnounce instance) {
@@ -27,7 +22,7 @@ public AnnounceTask(BungeeAnnounce instance) {
2722

2823
@Override
2924
public void run() {
30-
Set<String> broadcastList = (Set<String>) instance.getConfig().getSection("Announcements").getKeys();
25+
Set<String> broadcastList = (Set<String>) instance.getFileUtil().getConfig().getSection("Announcements").getKeys();
3126

3227
if (broadcastList.isEmpty()) {
3328
Logger.WARNING.out("[SimpleAnnounce] There are no announcements :(");
@@ -36,10 +31,10 @@ public void run() {
3631
}
3732

3833
String broadcastId = getRandom(broadcastList);
39-
Configuration broadcast = instance.getConfig().getSection("Announcements." + broadcastId);
34+
Configuration broadcast = instance.getFileUtil().getConfig().getSection("Announcements." + broadcastId);
4035

4136
for (String message : broadcast.getStringList("LINES")) {
42-
ProxyServer.getInstance().getPlayers().forEach((player -> player.sendMessage(Utils.formatComponent(message.replace("{arrow}", "»")))));
37+
ProxyServer.getInstance().getPlayers().forEach(player -> player.sendMessage(Utils.formatComponent(message.replace("{arrow}", "»"))));
4338
}
4439
}
4540

0 commit comments

Comments
 (0)