mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 17:09:19 +00:00
improve MEG compatibility
This commit is contained in:
@@ -12,4 +12,16 @@ public class ModelEngineUtils {
|
||||
ActiveModel activeModel = ModelEngineAPI.createActiveModel(id);
|
||||
modeledEntity.addModel(activeModel, true);
|
||||
}
|
||||
|
||||
public static int interactionToBaseEntity(int entityId) {
|
||||
ActiveModel activeModel = ModelEngineAPI.getInteractionTracker().getModelRelay(entityId);
|
||||
if (activeModel != null) {
|
||||
ModeledEntity modeledEntity = activeModel.getModeledEntity();
|
||||
if (modeledEntity == null) {
|
||||
return entityId;
|
||||
}
|
||||
return modeledEntity.getBase().getEntityId();
|
||||
}
|
||||
return entityId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user