diff --git a/build.yml b/.github/workflows/build.yml
similarity index 82%
rename from build.yml
rename to .github/workflows/build.yml
index 1ff1c89..5c4480e 100644
--- a/build.yml
+++ b/.github/workflows/build.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
# Setup JDK
- name: Setup Java JDK
@@ -19,10 +19,13 @@ jobs:
with:
java-version: 17
distribution: 'zulu'
-
+
# Build
+ - name: Make gradlew executable
+ run: chmod +x gradlew
+
- name: Build with Gradle
- run: gradle build
+ run: ./gradlew build
- name: Auto release
uses: "marvinpinto/action-automatic-releases@latest"
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 51a680c..747b15e 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,10 @@
-
+
+
+
+
@@ -57,6 +60,7 @@
+
@@ -76,6 +80,7 @@
{
"keyToString": {
+ "Gradle.Download Sources.executor": "Run",
"Gradle.GeyserModelEngine [build].executor": "Run",
"Gradle.GeyserModelEngine [jar].executor": "Run",
"Maven.GeyserModelEngine [install...].executor": "Run",
@@ -84,6 +89,7 @@
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "main",
+ "kotlin-language-version-configured": "true",
"last_opened_file_path": "D:/Coding/Forks/Minecraft/GeyserModelEngine",
"project.structure.last.edited": "Project",
"project.structure.proportion": "0.0",
@@ -96,6 +102,7 @@
+
diff --git a/README.md b/README.md
index e162c7c..0fee2c0 100644
--- a/README.md
+++ b/README.md
@@ -20,27 +20,22 @@ Download the following plugins according to what server software you use.
- Put `GeyserModelEngine` in the plugins folder (only Spigot or forks of Spigot supported)
- Put either `geyserutils-spigot` in your plugins folder aswell (`geyserutils-velocity`/`geyserutils-bungeecord` in your Velocity/Bungeecord plugins folder if you use it)
- Put `GeyserModelEnginePackGenerator` and `geyserutils-geyser` into `plugins/[Geyser-Folder]/extensions`
+- Inside `floodgate` set `send-floodgate-data` to `true` in your Velocity/Bungeecord folder and copy over the key.pem into your backend `floodgate` folders
Start the server to generate the relevant configuration files, and then shut down the server to convert any models.
# Convert Models
-This is old method to convert model:
-
`GeyserModelEnginePackGenerator` is capable of generating models all by itself. After generating it will also apply this pack automatically.
-- First go to `plugins/[Geyser-Folder]/extensions/geysermodelenginepackgenerator/input/`
-- Create a folder in this directory with the ID of the model. (this is the same name as your model within ModelEngine 4.)
+- Firstly, install [packer plugin](https://github.com/GeyserExtensionists/GeyserModelEngineBlockbenchPacker) for your blockbench.
+
+- Then, open your bbmodel, go `File -> Export -> Export GeyserModelEngine Model`, you will get a zip, just unzip it to `input` folder.
> Each model should have a separate model folder
> Subfolders are supported if you want to categorize them
-- Now use BlockBench and convert your model to a Bedrock Entity, this will allow you to export the Bedrock Geometry and Animations.
-- Put the geometry, animations and texture file in this folder you've made.
-
-
-
- Restart the server or reload geyser to start generating the resource pack.
- Go to `plugins/[Geyser-Folder]/extensions/geysermodelenginepackgenerator`, and you should see your pack generated!
@@ -49,12 +44,6 @@ This is old method to convert model:
- Final step, reload Geyser or restart the server to load the resource pack.
- Congratulations, you've completed this tutorial!
-# Model Packer
-
-This is new way to convert model
-- Firstly, install [packer plugin](https://github.com/GeyserExtensionists/GeyserModelEngineBlockbenchPacker) for your blockbench.
-- Then, open your bbmodel, go `File -> Export -> Export GeyserModelEngine Model`, you will get a zip, just unzip it to `input` folder.
-
# Tips
* Pay attention! The pack only regenerates when the number of models changes, you can technically speaking remove the generated_pack folder to force a reload aswell.
diff --git a/build.gradle.kts b/build.gradle.kts
index 43f8cdc..7a5020c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("java")
- id("io.github.goooler.shadow") version "8.1.7"
+ id("io.github.goooler.shadow") version "8.1.8"
}
group = "re.imc"
@@ -28,8 +28,8 @@ dependencies {
compileOnly(files("libs/geyserutils-spigot-1.0-SNAPSHOT.jar"))
compileOnly("org.geysermc.floodgate:api:2.2.4-SNAPSHOT")
-
- implementation("com.github.retrooper:packetevents-spigot:2.9.4")
+ implementation("com.github.retrooper:packetevents-spigot:2.9.5")
+ implementation("org.bstats:bstats-bukkit:3.0.2")
implementation("org.reflections:reflections:0.10.2")
}
@@ -50,6 +50,8 @@ tasks.shadowJar {
relocate("com.github.retrooper", "re.imc.geysermodelengine.libs.com.github.retrooper.packetevents")
relocate("io.github.retrooper", "re.imc.geysermodelengine.libs.io.github.retrooper.packetevents")
+ relocate("org.bstats", "re.imc.geysermodelengine.libs.bstats")
+
relocate("org.reflections", "re.imc.geysermodelengine.libs.reflections")
}
diff --git a/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java b/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java
index b816bc1..549c415 100644
--- a/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java
+++ b/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java
@@ -5,6 +5,7 @@ import com.github.retrooper.packetevents.event.PacketListenerPriority;
import dev.jorel.commandapi.CommandAPI;
import dev.jorel.commandapi.CommandAPIBukkitConfig;
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
+import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import re.imc.geysermodelengine.listener.ModelListener;
@@ -43,6 +44,8 @@ public class GeyserModelEngine extends JavaPlugin {
loadManagers();
loadRunnables();
+ loadBStats();
+
PacketEvents.getAPI().getEventManager().registerListener(new MountPacketListener(this), PacketListenerPriority.NORMAL);
Bukkit.getPluginManager().registerEvents(new ModelListener(this), this);
@@ -62,6 +65,10 @@ public class GeyserModelEngine extends JavaPlugin {
CommandAPI.onEnable();
}
+ private void loadBStats() {
+ if (configManager.getConfig().getBoolean("bstats", true)) new Metrics(this, 26981);
+ }
+
private void loadManagers() {
this.configManager = new ConfigManager(this);
diff --git a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
index 842a81c..dc94a0f 100644
--- a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
+++ b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
@@ -1,8 +1,6 @@
package re.imc.geysermodelengine.listener;
-import com.ticxo.modelengine.api.events.AddModelEvent;
-import com.ticxo.modelengine.api.events.ModelDismountEvent;
-import com.ticxo.modelengine.api.events.ModelMountEvent;
+import com.ticxo.modelengine.api.events.*;
import com.ticxo.modelengine.api.model.ActiveModel;
import org.apache.commons.lang3.tuple.Pair;
import org.bukkit.Bukkit;
@@ -31,7 +29,6 @@ public class ModelListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void onAddModel(AddModelEvent event) {
if (event.isCancelled()) return;
-
plugin.getModelManager().create(event.getTarget(), event.getModel());
}
@@ -54,6 +51,10 @@ public class ModelListener implements Listener {
}
}
+ /*
+ / xSquishyLiam:
+ / I'm wondering if we could move this to more of a player loading chunks instead of checking all worlds via PlayerChunkLoadEvent?
+ */
@EventHandler
public void onWorldInit(WorldInitEvent event) {
World world = event.getWorld();
@@ -61,13 +62,7 @@ public class ModelListener implements Listener {
}
/*
- / Temp fix till a better solution is found -
- / the issue is when a player logs out and the mob is there,
- / the player logs back in sometimes it can display as a pig only
- / this issues mainly comes from the functions from EntityTaskManager
- / sendSpawnPacket() and canSee()
- /
- / TheLividaProject - conclusion:
+ / xSquishyLiam - conclusion:
/ I'm assuming when a player joins the server the packet for mob spawning is instant so the client resyncs itself
/ hence why the pig is shown instead of going invisible and not displaying the texture of the modeled mob
*/
diff --git a/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java b/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java
index cb8ab83..cdda581 100644
--- a/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java
+++ b/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java
@@ -33,6 +33,6 @@ public class MountPacketListener implements PacketListener {
if (seat == null) return;
if (action.getAction() != WrapperPlayClientEntityAction.Action.START_SNEAKING) return;
- ModelEngineAPI.getMountPairManager().tryDismount(event.getPlayer());
+ ModelEngineAPI.getMountPairManager().tryDismount(player);
}
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index a632a74..53c5312 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,3 +1,5 @@
+bstats: true
+
data-send-delay: 5
entity-view-distance: 50
join-send-delay: 20
diff --git a/src/main/resources/paper-plugin.yml b/src/main/resources/paper-plugin.yml
index f45e067..015a6c6 100644
--- a/src/main/resources/paper-plugin.yml
+++ b/src/main/resources/paper-plugin.yml
@@ -6,7 +6,6 @@ api-version: '1.21'
authors:
- zimzaza4
- willem.dev
- - TheLividaProject
load: STARTUP