Skip to content

Commit 7de763e

Browse files
committed
1.0.1
1 parent 3a7b88f commit 7de763e

File tree

11 files changed

+133
-14
lines changed

11 files changed

+133
-14
lines changed

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,25 @@ basically just a reimplementation of originblacklist but for eaglerxserver
55
> [!WARNING]
66
> **Velocity is the main platform I'm developing this for, bungee & bukkit will still work but will probably have some bugs and will receive less support!**
77
8+
### Features
9+
- [x] Origin Blacklisting
10+
- [x] Brand Blacklisting
11+
- [x] Custom kick message
12+
- [x] Custom blacklist MOTD
13+
- [x] MiniMessage formatting for messages
14+
- [x] Velocity, *Bungee, and *Bukkit support
15+
<br>_<sub><span style="color:gray">Bungee and Bukkit are should work, but have bugs.</span></sub>_
16+
- [x] Send blacklists to a discord webhook
17+
- [ ] Blacklist subscription URLs
18+
- [ ] Blacklist -> Whitelist
19+
- [ ] IP blacklisting
20+
821
### Download
922
**[https://github.com/colbster937/originblacklist/releases](https://github.com/colbster937/originblacklist/releases)**
1023

1124
### Building
1225
```
13-
$ git clone https://github.com/colbster937/originblacklist
26+
$ git clone https://github.com/colbster937/originblacklist.git
1427
$ cd originblacklist
1528
$ gradle wrapper
1629
$ ./gradle.<bat|sh> shadowJar

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88

99

1010
group = 'dev.colbster937'
11-
version = '1.0.0'
11+
version = '1.0.1'
1212

1313
repositories {
1414
mavenCentral()

src/main/java/dev/colbster937/originblacklist/base/Base.java

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,21 @@
66
import net.lax1dude.eaglercraft.backend.server.api.IEaglerPlayer;
77
import net.lax1dude.eaglercraft.backend.server.api.EnumWebSocketHeader;
88
import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftInitializePlayerEvent;
9+
import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent;
10+
import net.lax1dude.eaglercraft.backend.server.api.query.IMOTDConnection;
11+
12+
import java.io.InputStream;
913
import java.io.OutputStream;
1014
import java.net.HttpURLConnection;
15+
import javax.imageio.ImageIO;
16+
import java.awt.image.BufferedImage;
17+
import java.io.File;
18+
import java.io.IOException;
1119
import java.net.URL;
20+
import java.nio.file.Files;
21+
import java.nio.file.StandardCopyOption;
22+
import java.util.List;
23+
import java.util.stream.Collectors;
1224

1325
public class Base {
1426
private static LoggerAdapter adapter;
@@ -61,6 +73,60 @@ public static void handleConnection(IEaglercraftInitializePlayerEvent e) {
6173
}
6274
}
6375

76+
public static void handleMOTD(IEaglercraftMOTDEvent e) {
77+
if (config.messages.motd.enabled) {
78+
IMOTDConnection conn = e.getMOTDConnection();
79+
String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN);
80+
List<String> m = List.of(config.messages.motd.text.split("\n")).stream()
81+
.map(line -> line
82+
.replace("%blocktype%", "origin")
83+
.replace("%easyblocktype%", "website")
84+
.replace("%blocked%", origin))
85+
.map(line -> LegacyComponentSerializer.legacySection()
86+
.serialize(MiniMessage.miniMessage().deserialize(line)))
87+
.collect(Collectors.toList());
88+
if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) {
89+
for (String origin1 : config.blacklist.origins) {
90+
if (matches(origin, origin1)) {
91+
setMOTD(conn, m);
92+
return;
93+
}
94+
}
95+
} else {
96+
setMOTD(conn, m);
97+
}
98+
}
99+
}
100+
101+
public static void setMOTD(IMOTDConnection conn, List<String> m) {
102+
conn.setServerMOTD(m);
103+
conn.setPlayerTotal(0);
104+
conn.setPlayerMax(0);
105+
conn.setPlayerList(List.of());
106+
if (config.messages.motd.icon != null && !config.messages.motd.icon.isEmpty())
107+
try {
108+
BufferedImage img = ImageIO.read(new File(config.messages.motd.icon));
109+
if (img.getWidth() != 64 || img.getHeight() != 64) {
110+
getLogger().warn("Icon must be 64x64");
111+
return;
112+
}
113+
byte[] bytes = new byte[64 * 64 * 4];
114+
for (int y = 0; y < 64; y++) {
115+
for (int x = 0; x < 64; x++) {
116+
int pixel = img.getRGB(x, y);
117+
int i = (y * 64 + x) * 4;
118+
bytes[i] = (byte) ((pixel >> 16) & 0xFF);
119+
bytes[i + 1] = (byte) ((pixel >> 8) & 0xFF);
120+
bytes[i + 2] = (byte) (pixel & 0xFF);
121+
bytes[i + 3] = (byte) ((pixel >> 24) & 0xFF);
122+
}
123+
}
124+
conn.setServerIcon(bytes);
125+
} catch (IOException ex) {
126+
getLogger().error(ex.toString());
127+
}
128+
}
129+
64130
public static boolean matches(String text1, String text2) {
65131
return text1.toLowerCase().matches(text2.replace(".", "\\.").replaceAll("\\*", ".*").toLowerCase());
66132
}
@@ -119,6 +185,19 @@ public static void webhook(IEaglerPlayer plr, String origin, String brand, Strin
119185
}
120186
}
121187

188+
public static void init() {
189+
File motdIcon = new File(config.messages.motd.icon);
190+
if (!motdIcon.exists()) {
191+
try (InputStream in = ConfigManager.class.getResourceAsStream("/server-blocked.png")) {
192+
if (in != null) {
193+
Files.copy(in, motdIcon.toPath(), StandardCopyOption.REPLACE_EXISTING);
194+
}
195+
} catch (IOException e) {
196+
getLogger().warn(e.toString());
197+
}
198+
}
199+
}
200+
122201
public static void reloadConfig() {
123202
config = ConfigManager.loadConfig(adapter);
124203
}

src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ public static class Blacklist {
4444
public List<String> brands;
4545
public List<String> players;
4646
public boolean missing_origin;
47-
48-
public Blacklist() {}
4947
}
5048

5149
public static class Discord {
@@ -54,5 +52,12 @@ public static class Discord {
5452

5553
public static class Messages {
5654
public String kick;
55+
public MOTD motd;
56+
}
57+
58+
public static class MOTD {
59+
public boolean enabled;
60+
public String text;
61+
public String icon;
5762
}
5863
}

src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dev.colbster937.originblacklist.base.Base;
44
import net.lax1dude.eaglercraft.backend.server.api.bukkit.EaglerXServerAPI;
55
import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftInitializePlayerEvent;
6+
import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftMOTDEvent;
67
import org.bukkit.event.EventHandler;
78
import org.bukkit.event.Listener;
89
import org.bukkit.plugin.java.JavaPlugin;
@@ -19,6 +20,7 @@ public void onEnable() {
1920

2021
Base.setApi(EaglerXServerAPI.instance());
2122
Base.reloadConfig();
23+
Base.init();
2224

2325
getCommand("originblacklist").setExecutor(new CommandBukkit());
2426
getServer().getPluginManager().registerEvents(this, this);
@@ -30,4 +32,9 @@ public void onEnable() {
3032
public void onLogin(EaglercraftInitializePlayerEvent event) {
3133
Base.handleConnection(event);
3234
}
35+
36+
@EventHandler
37+
public void onMOTD(EaglercraftMOTDEvent event) {
38+
Base.handleMOTD(event);
39+
}
3340
}

src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dev.colbster937.originblacklist.base.Base;
44
import net.lax1dude.eaglercraft.backend.server.api.bungee.EaglerXServerAPI;
55
import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftInitializePlayerEvent;
6+
import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftMOTDEvent;
67
import net.md_5.bungee.api.plugin.Plugin;
78
import net.md_5.bungee.api.plugin.Listener;
89
import net.md_5.bungee.event.EventHandler;
@@ -19,6 +20,7 @@ public void onEnable() {
1920

2021
Base.setApi(EaglerXServerAPI.instance());
2122
Base.reloadConfig();
23+
Base.init();
2224

2325
getProxy().getPluginManager().registerCommand(this, new CommandBungee());
2426
getProxy().getPluginManager().registerListener(this, this);
@@ -30,4 +32,9 @@ public void onEnable() {
3032
public void onLogin(EaglercraftInitializePlayerEvent event) {
3133
Base.handleConnection(event);
3234
}
35+
36+
@EventHandler
37+
public void onMOTD(EaglercraftMOTDEvent event) {
38+
Base.handleMOTD(event);
39+
}
3340
}

src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
import dev.colbster937.originblacklist.base.Base;
1010
import net.lax1dude.eaglercraft.backend.server.api.velocity.EaglerXServerAPI;
1111
import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftInitializePlayerEvent;
12+
import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent;
13+
import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftMOTDEvent;
1214
import org.slf4j.Logger;
1315

1416
@Plugin(
1517
id = "originblacklist",
1618
name = "OriginBlacklist",
17-
version = "1.0.0",
19+
version = "1.0.1",
1820
authors = {"Colbster937"},
1921
description = "A reimplementation of OriginBlacklist for EaglerXServer",
2022
dependencies = {@Dependency(id = "eaglerxserver")}
@@ -39,6 +41,7 @@ public OriginBlacklistVelocity(ProxyServer proxy1, Logger logger1) {
3941
public void onProxyInitialization(ProxyInitializeEvent event) {
4042
Base.setApi(EaglerXServerAPI.instance());
4143
Base.reloadConfig();
44+
Base.init();
4245
proxy.getCommandManager().register("originblacklist", new CommandVelocity());
4346
logger.info("Loaded Velocity plugin");
4447
}
@@ -47,4 +50,9 @@ public void onProxyInitialization(ProxyInitializeEvent event) {
4750
public void onLogin(EaglercraftInitializePlayerEvent event) {
4851
Base.handleConnection(event);
4952
}
53+
54+
@Subscribe
55+
public void onMOTD(IEaglercraftMOTDEvent event) {
56+
Base.handleMOTD(event);
57+
}
5058
}

src/main/resources/bungee.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: OriginBlacklist
2-
version: 1.0.0
2+
version: 1.0.1
33
main: dev.colbster937.originblacklist.bungee.OriginBlacklistBungee
44
description: A reimplementation of OriginBlacklist for EaglerXServer
55
author: Colbster937

src/main/resources/config.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ messages:
1111
<gray>Think this is a mistake? Join our discord:</gray>
1212
<blue>discord.gg/changethisintheconfig</blue>
1313
14+
motd:
15+
enabled: true
16+
text: |
17+
<red>This %easyblocktype% is not allowed!</red>
18+
<dark_gray>»</dark_gray> <gray>%blocked%</gray> <dark_gray>«</dark_gray>
19+
icon: "blacklisted.png"
20+
1421
# Origin + Brand blacklist supports wildcards
1522
# Everything should be lowercase
1623
blacklist:
@@ -51,13 +58,6 @@ discord:
5158

5259

5360

54-
55-
56-
57-
58-
59-
60-
6161

6262

6363

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: OriginBlacklist
2-
version: 1.0.0
2+
version: 1.0.1
33
main: dev.colbster937.originblacklist.bukkit.OriginBlacklistBukkit
44
description: A reimplementation of OriginBlacklist for EaglerXServer
55
author: Colbster937

0 commit comments

Comments
 (0)