From a109d21b768f800669374b1c3c51aa2fd9e4d38d Mon Sep 17 00:00:00 2001
From: xSquishyLiam <56977759+xSquishyLiam@users.noreply.github.com>
Date: Wed, 10 Dec 2025 05:10:33 +0000
Subject: [PATCH] updated PacketEvents andd addeddd zims stuff
---
.idea/workspace.xml | 2 +-
paper/build.gradle.kts | 2 +-
.../listener/ModelListener.java | 5 +++--
.../listener/MountPacketListener.java | 3 ++-
.../managers/model/EntityTaskManager.java | 4 ++--
.../packet/entity/PacketEntity.java | 2 +-
.../geysermodelengine/util/BedrockUtils.java | 18 ++++++++++++++++++
paper/src/main/resources/paper-plugin.yml | 2 +-
8 files changed, 29 insertions(+), 9 deletions(-)
create mode 100644 paper/src/main/java/re/imc/geysermodelengine/util/BedrockUtils.java
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b4e1e3e..0f855d4 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/paper/build.gradle.kts b/paper/build.gradle.kts
index a33e4fe..73239ab 100644
--- a/paper/build.gradle.kts
+++ b/paper/build.gradle.kts
@@ -29,7 +29,7 @@ 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.10.1")
+ implementation("com.github.retrooper:packetevents-spigot:2.11.0")
implementation("org.bstats:bstats-bukkit:3.0.2")
implementation("org.reflections:reflections:0.10.2")
diff --git a/paper/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/paper/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
index dfc268b..28eeac0 100644
--- a/paper/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
+++ b/paper/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
@@ -10,6 +10,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.world.WorldInitEvent;
import org.geysermc.floodgate.api.FloodgateApi;
import re.imc.geysermodelengine.GeyserModelEngine;
+import re.imc.geysermodelengine.util.BedrockUtils;
public class ModelListener implements Listener {
@@ -36,14 +37,14 @@ public class ModelListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
- if (!FloodgateApi.getInstance().isFloodgatePlayer(player.getUniqueId())) return;
+ if (!BedrockUtils.isBedrockPlayer(player)) return;
Bukkit.getGlobalRegionScheduler().runDelayed(plugin, scheduledTask -> plugin.getModelManager().getPlayerJoinedCache().add(player.getUniqueId()), 10);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer();
- if (!FloodgateApi.getInstance().isFloodgatePlayer(player.getUniqueId())) return;
+ if (!BedrockUtils.isBedrockPlayer(player)) return;
plugin.getModelManager().getPlayerJoinedCache().remove(player.getUniqueId());
}
}
diff --git a/paper/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java b/paper/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java
index cdda581..ed89048 100644
--- a/paper/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java
+++ b/paper/src/main/java/re/imc/geysermodelengine/listener/MountPacketListener.java
@@ -11,6 +11,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.bukkit.entity.Player;
import org.geysermc.floodgate.api.FloodgateApi;
import re.imc.geysermodelengine.GeyserModelEngine;
+import re.imc.geysermodelengine.util.BedrockUtils;
public class MountPacketListener implements PacketListener {
@@ -23,9 +24,9 @@ public class MountPacketListener implements PacketListener {
@Override
public void onPacketReceive(PacketReceiveEvent event) {
if (event.getPacketType() != PacketType.Play.Client.ENTITY_ACTION) return;
- if (!FloodgateApi.getInstance().isFloodgatePlayer(event.getUser().getUUID())) return;
Player player = event.getPlayer();
+ if (!BedrockUtils.isBedrockPlayer(player)) return;
WrapperPlayClientEntityAction action = new WrapperPlayClientEntityAction(event);
Pair seat = plugin.getModelManager().getDriversCache().get(player.getUniqueId());
diff --git a/paper/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java b/paper/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java
index f424698..68580fb 100644
--- a/paper/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java
+++ b/paper/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java
@@ -6,7 +6,6 @@ import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
-import org.geysermc.floodgate.api.FloodgateApi;
import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.model.entity.EntityData;
import re.imc.geysermodelengine.managers.model.propertyhandler.BetterModelPropertyHandler;
@@ -15,6 +14,7 @@ import re.imc.geysermodelengine.managers.model.propertyhandler.PropertyHandler;
import re.imc.geysermodelengine.managers.model.entity.ModelEngineEntityData;
import re.imc.geysermodelengine.managers.model.taskshandler.TaskHandler;
import re.imc.geysermodelengine.packet.entity.PacketEntity;
+import re.imc.geysermodelengine.util.BedrockUtils;
import java.util.*;
@@ -41,7 +41,7 @@ public class EntityTaskManager {
public void checkViewers(EntityData model, Set viewers) {
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
- if (!FloodgateApi.getInstance().isFloodgatePlayer(onlinePlayer.getUniqueId())) continue;
+ if (!BedrockUtils.isBedrockPlayer(onlinePlayer)) return;
if (canSee(onlinePlayer, model.getEntity())) {
if (!viewers.contains(onlinePlayer)) {
diff --git a/paper/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java b/paper/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java
index d9a43ab..a151c09 100644
--- a/paper/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java
+++ b/paper/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java
@@ -47,7 +47,7 @@ public class PacketEntity {
}
public boolean teleport(@NotNull Location location) {
- boolean sent = this.location.getWorld() != location.getWorld() || this.location.distanceSquared(location) > 0.000001;
+ boolean sent = this.location.getWorld() != location.getWorld() || this.location.distanceSquared(location) > 0.000001 || this.location.getYaw() != location.getYaw() || this.location.getPitch() != location.getPitch();
this.location = location.clone();
if (sent) sendLocationPacket(viewers);
diff --git a/paper/src/main/java/re/imc/geysermodelengine/util/BedrockUtils.java b/paper/src/main/java/re/imc/geysermodelengine/util/BedrockUtils.java
new file mode 100644
index 0000000..5ba3e2d
--- /dev/null
+++ b/paper/src/main/java/re/imc/geysermodelengine/util/BedrockUtils.java
@@ -0,0 +1,18 @@
+package re.imc.geysermodelengine.util;
+
+import org.bukkit.entity.Player;
+import org.geysermc.floodgate.api.FloodgateApi;
+
+public class BedrockUtils {
+
+ private static FloodgateApi FLOODGATE_API;
+
+ public static boolean isBedrockPlayer(Player player) {
+ if (FLOODGATE_API != null) return FLOODGATE_API.isFloodgatePlayer(player.getUniqueId());
+ return player.getClientBrandName().contains("Geyser");
+ }
+
+ public static FloodgateApi getFloodgateApi() {
+ return FLOODGATE_API;
+ }
+}
diff --git a/paper/src/main/resources/paper-plugin.yml b/paper/src/main/resources/paper-plugin.yml
index d98343d..61af711 100644
--- a/paper/src/main/resources/paper-plugin.yml
+++ b/paper/src/main/resources/paper-plugin.yml
@@ -17,7 +17,7 @@ dependencies:
packetevents:
required: true
floodgate:
- required: true
+ required: false
ModelEngine:
required: false
BetterModel: