9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-28 11:29:17 +00:00

improve MEG compatibility

This commit is contained in:
XiaoMoMi
2025-04-01 04:12:21 +08:00
parent 8ecc78b28a
commit cf53e4b243
3 changed files with 26 additions and 1 deletions

View File

@@ -69,6 +69,11 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
private boolean active;
private boolean init;
private static boolean hasModelEngine;
public static boolean hasModelEngine() {
return hasModelEngine;
}
public BukkitNetworkManager(BukkitCraftEngine plugin) {
this.plugin = plugin;
@@ -111,6 +116,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
}
};
this.active = true;
this.hasModelEngine = Bukkit.getPluginManager().getPlugin("ModelEngine") != null;
instance = this;
}

View File

@@ -9,6 +9,7 @@ import net.momirealms.craftengine.bukkit.api.CraftEngineFurniture;
import net.momirealms.craftengine.bukkit.api.event.FurnitureBreakEvent;
import net.momirealms.craftengine.bukkit.api.event.FurnitureInteractEvent;
import net.momirealms.craftengine.bukkit.block.BukkitBlockManager;
import net.momirealms.craftengine.bukkit.compatibility.modelengine.ModelEngineUtils;
import net.momirealms.craftengine.bukkit.entity.furniture.BukkitFurnitureManager;
import net.momirealms.craftengine.bukkit.entity.furniture.LoadedFurniture;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
@@ -671,7 +672,13 @@ public class PacketConsumers {
try {
Player player = (Player) user.platformPlayer();
if (player == null) return;
int entityId = (int) Reflections.field$ServerboundInteractPacket$entityId.get(packet);
int entityId;
if (BukkitNetworkManager.hasModelEngine()) {
int fakeId = (int) Reflections.field$ServerboundInteractPacket$entityId.get(packet);
entityId = ModelEngineUtils.interactionToBaseEntity(fakeId);
} else {
entityId = Reflections.field$ServerboundInteractPacket$entityId.getInt(packet);
}
Object action = Reflections.field$ServerboundInteractPacket$action.get(packet);
Object actionType = Reflections.method$ServerboundInteractPacket$Action$getType.invoke(action);
if (actionType == null) return;