diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..c69857b
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,35 @@
+name: Auto-update clients
+
+on:
+ schedule:
+ - cron: '0 0 * * *'
+ workflow_dispatch:
+
+jobs:
+ build:
+ if: ${{ github.ref == 'refs/heads/main' }}
+ concurrency:
+ group: ${{ github.workflow }}
+ cancel-in-progress: true
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+
+ - name: Build Jar
+ run: |
+ gradle wrapper
+ ./gradlew shadowJar
+
+ - name: Publish Jar
+ uses: actions/upload-artifact@v4
+ with:
+ name: OriginBlacklist
+ path: build/libs/OriginBlacklist.jar
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index aa5793c..0e084a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
**/.DS_Store
.idea
.gradle
+gradle
build
run
gradlew
diff --git a/README.md b/README.md
index bcd3151..a22505e 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ basically just a reimplementation of originblacklist but for eaglerxserver
_Bungee and Bukkit are should work, but have bugs._
- [x] Send blacklists to a discord webhook
- [ ] Blacklist subscription URLs
+- [ ] Simple blacklist command
- [ ] Blacklist -> Whitelist
- [ ] IP blacklisting
@@ -26,5 +27,5 @@ basically just a reimplementation of originblacklist but for eaglerxserver
$ git clone https://github.com/colbster937/originblacklist.git
$ cd originblacklist
$ gradle wrapper
-$ ./gradle. shadowJar
+$ ./gradlew shadowJar
```
diff --git a/build.gradle b/build.gradle
index 8cf2bbb..82a694e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,7 +8,9 @@ plugins {
group = 'dev.colbster937'
-version = '1.0.1'
+version = '1.0.2'
+description = 'A reimplementation of OriginBlacklist for EaglerXServer'
+def targetJavaVersion = 17
repositories {
mavenCentral()
@@ -47,47 +49,36 @@ dependencies {
compileOnly("net.lax1dude.eaglercraft.backend:api-bungee:1.0.0")
compileOnly("net.lax1dude.eaglercraft.backend:api-bukkit:1.0.0")
implementation("org.yaml:snakeyaml:2.2")
- implementation("net.kyori:adventure-api:4.20.0")
implementation("net.kyori:adventure-text-serializer-legacy:4.20.0")
implementation("net.kyori:adventure-text-minimessage:4.20.0")
}
tasks {
runVelocity {
- // Configure the Velocity version for our task.
- // This is the only required configuration besides applying the plugin.
- // Your plugin's jar (or shadowJar if present) will be used automatically.
velocityVersion("3.3.0-SNAPSHOT")
}
}
-def targetJavaVersion = 17
java {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
+processResources {
+ filesMatching(['plugin.yml', 'bungee.yml', 'velocity-plugin.json']) {
+ expand(
+ version: project.version,
+ description: project.description
+ )
+ }
+}
+
shadowJar {
relocate 'org.yaml.snakeyaml', 'dev.colbster937.shaded.snakeyaml'
- archiveClassifier.set('all')
+ archiveVersion.set('')
+ archiveClassifier.set('')
}
tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'
options.release.set(targetJavaVersion)
-}
-
-/*def templateSource = file('src/main/templates')
-def templateDest = layout.buildDirectory.dir('generated/sources/templates')
-def generateTemplates = tasks.register('generateTemplates', Copy) { task ->
- def props = ['version': project.version]
- task.inputs.properties props
-
- task.from templateSource
- task.into templateDest
- task.expand props
-}
-
-sourceSets.main.java.srcDir(generateTemplates.map { it.outputs })
-
-project.idea.project.settings.taskTriggers.afterSync generateTemplates
-project.eclipse.synchronizationTasks(generateTemplates)*/
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e644113..0000000
Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index a441313..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
-networkTimeout=10000
-validateDistributionUrl=true
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/src/main/java/dev/colbster937/originblacklist/base/Base.java b/src/main/java/dev/colbster937/originblacklist/base/Base.java
index 07cdcd4..17a4ce7 100644
--- a/src/main/java/dev/colbster937/originblacklist/base/Base.java
+++ b/src/main/java/dev/colbster937/originblacklist/base/Base.java
@@ -1,11 +1,10 @@
package dev.colbster937.originblacklist.base;
+import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
-import net.lax1dude.eaglercraft.backend.server.api.IEaglerXServerAPI;
-import net.lax1dude.eaglercraft.backend.server.api.IEaglerPlayer;
-import net.lax1dude.eaglercraft.backend.server.api.EnumWebSocketHeader;
-import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftInitializePlayerEvent;
+import net.lax1dude.eaglercraft.backend.server.api.*;
+import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftLoginEvent;
import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent;
import net.lax1dude.eaglercraft.backend.server.api.query.IMOTDConnection;
@@ -46,27 +45,30 @@ public class Base {
void error(String msg);
}
- public static void handleConnection(IEaglercraftInitializePlayerEvent e) {
- IEaglerPlayer plr = e.getPlayer();
- String origin = plr.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN);
- String brand = plr.getEaglerBrandString();
+ public static void handleConnection(IEaglercraftLoginEvent e) {
+ IEaglerLoginConnection conn = e.getLoginConnection();
+ String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN);
+ String brand = conn.getEaglerBrandString();
if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) {
for (String origin1 : config.blacklist.origins) {
if (matches(origin, origin1)) {
- plr.disconnect(kick("origin", "website", origin));
- webhook(plr, origin, brand, "origin");
+ e.setKickMessage(kick("origin", "website", origin));
+ webhook(conn, origin, brand, "origin");
return;
}
}
} else {
- plr.disconnect(kick("origin", "website", origin));
- webhook(plr, "null", brand, "origin");
+ if (origin != "null" || origin != null) {
+ e.setKickMessage(kick("origin", "website", origin));
+ webhook(conn, "null", brand, "origin");
+ return;
+ }
}
if (brand != "null" && brand != null) {
for (String brand1 : config.blacklist.brands) {
if (matches(brand, brand1)) {
- plr.disconnect(kick("brand", "client", brand));
- webhook(plr, origin, brand, "brand");
+ e.setKickMessage(kick("brand", "client", brand));
+ webhook(conn, origin, brand, "brand");
return;
}
}
@@ -82,9 +84,11 @@ public class Base {
.replace("%blocktype%", "origin")
.replace("%easyblocktype%", "website")
.replace("%blocked%", origin))
- .map(line -> LegacyComponentSerializer.legacySection()
- .serialize(MiniMessage.miniMessage().deserialize(line)))
- .collect(Collectors.toList());
+ .map(line -> LegacyComponentSerializer.legacySection().serialize(
+ MiniMessage.miniMessage().deserialize(
+ line
+ )
+ )).collect(Collectors.toList());
if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) {
for (String origin1 : config.blacklist.origins) {
if (matches(origin, origin1)) {
@@ -93,7 +97,9 @@ public class Base {
}
}
} else {
- setMOTD(conn, m);
+ if (origin != "null" || origin != null) {
+ setMOTD(conn, m);
+ }
}
}
}
@@ -131,19 +137,16 @@ public class Base {
return text1.toLowerCase().matches(text2.replace(".", "\\.").replaceAll("\\*", ".*").toLowerCase());
}
- public static String kick(String type, String easytype, String value) {
- return LegacyComponentSerializer.legacySection().serialize(
- MiniMessage.miniMessage().deserialize(
- config.messages.kick
- .replace("%blocktype%", type)
- .replace("%easyblocktype%", easytype)
- .replace("%blocked%", value)
- )
+ public static Component kick(String type, String easytype, String value) {
+ return MiniMessage.miniMessage().deserialize(
+ config.messages.kick
+ .replace("%blocktype%", type)
+ .replace("%easyblocktype%", easytype)
+ .replace("%blocked%", value)
);
}
-
- public static void webhook(IEaglerPlayer plr, String origin, String brand, String type) {
+ public static void webhook(IEaglerPendingConnection plr, String origin, String brand, String type) {
String webhook = config.discord.webhook;
if (webhook == null || webhook.isBlank()) return;
@@ -165,7 +168,7 @@ public class Base {
}
]
}
- """, type, plr.getUsername(), addr, protocol, origin, brand, userAgent, rewind);
+ """, type, plr.getAuthUsername(), addr, protocol, origin, brand, userAgent, rewind);
try {
HttpURLConnection conn = (HttpURLConnection) new URL(webhook).openConnection();
diff --git a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java
index 1306f5f..ec2f94e 100644
--- a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java
+++ b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java
@@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bukkit;
import dev.colbster937.originblacklist.base.Base;
import net.lax1dude.eaglercraft.backend.server.api.bukkit.EaglerXServerAPI;
-import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftInitializePlayerEvent;
+import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftLoginEvent;
import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftMOTDEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -29,7 +29,7 @@ public class OriginBlacklistBukkit extends JavaPlugin implements Listener {
}
@EventHandler
- public void onLogin(EaglercraftInitializePlayerEvent event) {
+ public void onLogin(EaglercraftLoginEvent event) {
Base.handleConnection(event);
}
diff --git a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java
index 2b74a3e..c7d0fa3 100644
--- a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java
+++ b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java
@@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bungee;
import dev.colbster937.originblacklist.base.Base;
import net.lax1dude.eaglercraft.backend.server.api.bungee.EaglerXServerAPI;
-import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftInitializePlayerEvent;
+import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftLoginEvent;
import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftMOTDEvent;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.Listener;
@@ -29,7 +29,7 @@ public class OriginBlacklistBungee extends Plugin implements Listener {
}
@EventHandler
- public void onLogin(EaglercraftInitializePlayerEvent event) {
+ public void onLogin(EaglercraftLoginEvent event) {
Base.handleConnection(event);
}
diff --git a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java
index c081bc6..c70466d 100644
--- a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java
+++ b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java
@@ -3,24 +3,13 @@ package dev.colbster937.originblacklist.velocity;
import com.google.inject.Inject;
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
import com.velocitypowered.api.event.Subscribe;
-import com.velocitypowered.api.plugin.Plugin;
-import com.velocitypowered.api.plugin.Dependency;
import com.velocitypowered.api.proxy.ProxyServer;
import dev.colbster937.originblacklist.base.Base;
import net.lax1dude.eaglercraft.backend.server.api.velocity.EaglerXServerAPI;
-import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftInitializePlayerEvent;
-import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent;
+import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftLoginEvent;
import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftMOTDEvent;
import org.slf4j.Logger;
-@Plugin(
- id = "originblacklist",
- name = "OriginBlacklist",
- version = "1.0.1",
- authors = {"Colbster937"},
- description = "A reimplementation of OriginBlacklist for EaglerXServer",
- dependencies = {@Dependency(id = "eaglerxserver")}
-)
public class OriginBlacklistVelocity {
private final ProxyServer proxy;
@@ -47,12 +36,12 @@ public class OriginBlacklistVelocity {
}
@Subscribe
- public void onLogin(EaglercraftInitializePlayerEvent event) {
+ public void onLogin(EaglercraftLoginEvent event) {
Base.handleConnection(event);
}
@Subscribe
- public void onMOTD(IEaglercraftMOTDEvent event) {
+ public void onMOTD(EaglercraftMOTDEvent event) {
Base.handleMOTD(event);
}
}
diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml
index a343035..7916bf5 100644
--- a/src/main/resources/bungee.yml
+++ b/src/main/resources/bungee.yml
@@ -1,7 +1,7 @@
name: OriginBlacklist
-version: 1.0.1
+version: ${version}
main: dev.colbster937.originblacklist.bungee.OriginBlacklistBungee
-description: A reimplementation of OriginBlacklist for EaglerXServer
+description: ${description}
author: Colbster937
depends:
- EaglercraftXServer
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index c5f722e..e583b2c 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: OriginBlacklist
-version: 1.0.1
+version: ${version}
main: dev.colbster937.originblacklist.bukkit.OriginBlacklistBukkit
-description: A reimplementation of OriginBlacklist for EaglerXServer
+description: ${description}
author: Colbster937
depend:
- EaglercraftXServer
diff --git a/src/main/resources/velocity-plugin.json b/src/main/resources/velocity-plugin.json
new file mode 100644
index 0000000..bf1052d
--- /dev/null
+++ b/src/main/resources/velocity-plugin.json
@@ -0,0 +1,14 @@
+{
+ "id": "originblacklist",
+ "name": "OriginBlacklist",
+ "version": "${version}",
+ "description": "${description}",
+ "main": "dev.colbster937.originblacklist.velocity.OriginBlacklistVelocity",
+ "authors": ["Colbster937"],
+ "dependencies": [
+ {
+ "id": "eaglerxserver",
+ "optional": false
+ }
+ ]
+}