diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index e14dc55..89c90fa 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -11,8 +11,6 @@
-
-
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 35a6479..8928eef 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,5 +4,5 @@
-
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index c18a2ca..fd98699 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,19 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -53,10 +65,9 @@
-
-
+
+
-
@@ -73,44 +84,44 @@
- {
- "keyToString": {
- "Downloaded.Files.Path.Enabled": "false",
- "Gradle.Build EntityLib.executor": "Run",
- "Gradle.EntityLib [dependencies].executor": "Run",
- "Gradle.EntityLib [publish].executor": "Run",
- "Gradle.EntityLib:code-gen [:code-gen:Main.main()].executor": "Run",
- "Gradle.EntityLib:test-plugin [publish].executor": "Run",
- "Gradle.EntityLib:test-plugin [runServer].executor": "Run",
- "Gradle.EntityLib:test-plugin [shadowJar].executor": "Run",
- "Repository.Attach.Annotations": "false",
- "Repository.Attach.JavaDocs": "false",
- "Repository.Attach.Sources": "false",
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "WebServerToolWindowFactoryState": "false",
- "git-widget-placeholder": "master",
- "ignore.virus.scanning.warn.message": "true",
- "jdk.selected.JAVA_MODULE": "corretto-17",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "/mnt/sda2/Github/EntityLib",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "nodejs_package_manager_path": "npm",
- "project.structure.last.edited": "Project",
- "project.structure.proportion": "0.15",
- "project.structure.side.proportion": "0.2",
- "settings.editor.selected.configurable": "preferences.pluginManager",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
@@ -312,6 +323,14 @@
+
+
+
+
+
+
+
+
diff --git a/api/build.gradle b/api/build.gradle
index 7b8e948..8d02277 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -3,5 +3,5 @@ dependencies {
api 'org.jetbrains:annotations:24.0.0'
compileOnlyApi(adventureDependencies)
- compileOnlyApi 'com.github.retrooper.packetevents:api:2.2.1'
+ compileOnlyApi 'com.github.retrooper.packetevents:api:2.3.0'
}
diff --git a/api/src/main/java/me/tofaa/entitylib/APIConfig.java b/api/src/main/java/me/tofaa/entitylib/APIConfig.java
index 30f9534..0db6d93 100644
--- a/api/src/main/java/me/tofaa/entitylib/APIConfig.java
+++ b/api/src/main/java/me/tofaa/entitylib/APIConfig.java
@@ -3,6 +3,7 @@ package me.tofaa.entitylib;
import com.github.retrooper.packetevents.PacketEventsAPI;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
+import me.tofaa.entitylib.utils.GithubUpdater;
import org.jetbrains.annotations.Blocking;
import org.jetbrains.annotations.NotNull;
@@ -20,6 +21,7 @@ public final class APIConfig {
private boolean platformLogger = false;
private boolean defaultCommands = false;
private boolean platformTracking = false;
+ private boolean bstats = false;
public APIConfig(PacketEventsAPI> packetEvents) {
this.packetEvents = packetEvents;
@@ -28,17 +30,13 @@ public final class APIConfig {
@Blocking
public boolean requiresUpdate() throws IOException {
if (!checkForUpdates) return false;
- String urlString = "https://api.github.com/repos/Tofaa2/EntityLib/releases/latest";
- String version = EntityLib.getVersion();
+ GithubUpdater updater = new GithubUpdater("Tofaa2", "EntityLib", EntityLib.getVersion());
+ return !updater.isLatestVersion();
+ }
- URL url = new URL(urlString);
- JsonParser json = new JsonParser();
- InputStream stream = url.openStream();
- JsonArray array = json.parse(new InputStreamReader(stream)).getAsJsonArray();
- String latest = array.get(0).getAsJsonObject().get("tag_name").getAsString();
-
- stream.close();
- return !version.equalsIgnoreCase(latest);
+ public @NotNull APIConfig useBstats() {
+ this.bstats = true;
+ return this;
}
public @NotNull APIConfig usePlatformLogger() {
@@ -99,4 +97,8 @@ public final class APIConfig {
return platformTracking;
}
+ public boolean shouldUseBstats() {
+ return bstats;
+ }
+
}
diff --git a/api/src/main/java/me/tofaa/entitylib/utils/GithubUpdater.java b/api/src/main/java/me/tofaa/entitylib/utils/GithubUpdater.java
new file mode 100644
index 0000000..a15f64f
--- /dev/null
+++ b/api/src/main/java/me/tofaa/entitylib/utils/GithubUpdater.java
@@ -0,0 +1,65 @@
+package me.tofaa.entitylib.utils;
+
+import com.github.retrooper.packetevents.util.adventure.AdventureSerializer;
+import com.google.gson.JsonObject;
+import org.jetbrains.annotations.Blocking;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+
+public final class GithubUpdater {
+
+ private final String org;
+ private final String repo;
+ private final String currentVersion;
+
+ public GithubUpdater(String org, String repo, String currentVersion) {
+ this.org = org;
+ this.repo = repo;
+ this.currentVersion = currentVersion;
+ }
+
+ @Blocking
+ public boolean isLatestVersion() {
+ String latest = getLatestVersion();
+ return latest != null && latest.equals(currentVersion);
+ }
+
+
+ @Blocking
+ public String getLatestVersion() {
+ try {
+ URL url = new URL("https://api.github.com/repos/" + org + "/" + repo + "/releases/latest");
+ URLConnection connection = url.openConnection();
+ connection.addRequestProperty("User-Agent", "Mozilla/5.0");
+ InputStreamReader isr = new InputStreamReader(connection.getInputStream());
+ BufferedReader reader = new BufferedReader(isr);
+ String response = reader.readLine();
+ JsonObject json = AdventureSerializer.getGsonSerializer().serializer().fromJson(response, JsonObject.class);
+ reader.close();
+ isr.close();
+ if (json.has("name")) {
+ return json.get("name").getAsString();
+ }
+ throw new IOException("Could not find name attribute in github api fetch");
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public String getCurrentVersion() {
+ return currentVersion;
+ }
+
+ public String getOrg() {
+ return org;
+ }
+
+ public String getRepo() {
+ return repo;
+ }
+}
diff --git a/build.gradle b/build.gradle
index 8927667..981e340 100644
--- a/build.gradle
+++ b/build.gradle
@@ -59,6 +59,6 @@ allprojects {
dependencies {
- compileOnlyApi 'com.github.retrooper.packetevents:spigot:2.2.0'
+ compileOnlyApi 'com.github.retrooper.packetevents:spigot:2.3.0'
}
diff --git a/platforms/spigot/build.gradle b/platforms/spigot/build.gradle
index 9484c34..6a9b678 100644
--- a/platforms/spigot/build.gradle
+++ b/platforms/spigot/build.gradle
@@ -1,6 +1,6 @@
dependencies {
api(project(":common"))
- compileOnly('com.github.retrooper.packetevents:spigot:2.0.2')
+ compileOnly('com.github.retrooper.packetevents:spigot:2.3.0')
compileOnly('org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT')
}
diff --git a/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/SpigotEntityLibPlatform.java b/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/SpigotEntityLibPlatform.java
index 8ef16df..61d2402 100644
--- a/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/SpigotEntityLibPlatform.java
+++ b/platforms/spigot/src/main/java/me/tofaa/entitylib/spigot/SpigotEntityLibPlatform.java
@@ -1,12 +1,17 @@
package me.tofaa.entitylib.spigot;
+import com.github.retrooper.packetevents.PacketEventsAPI;
+import io.github.retrooper.packetevents.bstats.Metrics;
+import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
import me.tofaa.entitylib.APIConfig;
+import me.tofaa.entitylib.EntityLib;
import me.tofaa.entitylib.TrackedEntity;
import me.tofaa.entitylib.common.AbstractPlatform;
import me.tofaa.entitylib.utils.ConcurrentWeakIdentityHashMap;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
+import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -37,6 +42,11 @@ public class SpigotEntityLibPlatform extends AbstractPlatform {
handle.getServer().getPluginManager().registerEvents(listener, handle);
api.getPacketEvents().getEventManager().registerListener(listener);
}
+ if (settings.shouldUseBstats()) {
+ PacketEventsAPI pe = (PacketEventsAPI)api.getPacketEvents();
+ Metrics metrics = new Metrics((JavaPlugin) pe.getPlugin(), 21916);
+ metrics.addCustomChart(new Metrics.SimplePie("entitylib-version", EntityLib::getVersion));
+ }
}
diff --git a/platforms/velocity/build.gradle b/platforms/velocity/build.gradle
index 37c8f31..30e72d2 100644
--- a/platforms/velocity/build.gradle
+++ b/platforms/velocity/build.gradle
@@ -15,6 +15,6 @@ java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
dependencies {
api(project(":common"))
- compileOnly('com.github.retrooper.packetevents:velocity:2.0.2')
+ compileOnly('com.github.retrooper.packetevents:velocity:2.3.0')
compileOnly 'com.velocitypowered:velocity-api:3.3.0-SNAPSHOT'
}
diff --git a/platforms/velocity/src/main/java/me/tofaa/entitylib/velocity/VelocityEntityLibPlatform.java b/platforms/velocity/src/main/java/me/tofaa/entitylib/velocity/VelocityEntityLibPlatform.java
index 252a1f8..3693a0b 100644
--- a/platforms/velocity/src/main/java/me/tofaa/entitylib/velocity/VelocityEntityLibPlatform.java
+++ b/platforms/velocity/src/main/java/me/tofaa/entitylib/velocity/VelocityEntityLibPlatform.java
@@ -1,6 +1,13 @@
package me.tofaa.entitylib.velocity;
+import com.github.retrooper.packetevents.PacketEventsAPI;
+import com.github.retrooper.packetevents.protocol.packettype.PacketType;
+import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerBlockAction;
+import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerBlockChange;
+import com.velocitypowered.api.plugin.PluginContainer;
import com.velocitypowered.api.proxy.ProxyServer;
+import io.github.retrooper.packetevents.bstats.Metrics;
+import io.github.retrooper.packetevents.velocity.factory.VelocityPacketEventsBuilder;
import me.tofaa.entitylib.APIConfig;
import me.tofaa.entitylib.EntityLibAPI;
import me.tofaa.entitylib.common.AbstractPlatform;
@@ -24,6 +31,15 @@ public class VelocityEntityLibPlatform extends AbstractPlatform {
this.api = new VelocityEntityLibAPI(this, settings);
this.api.onLoad();
this.api.onEnable();
+// if (settings.shouldUseBstats()) {
+// VelocityPacketEventsBuilder
+// PacketEventsAPI pe = (PacketEventsAPI) api.getPacketEvents();
+// Metrics metrics = Metrics.createInstance(
+// plugin,
+// handle,
+// logger,
+// pe.getSettings().
+// }
}
public Object getPlugin() {