diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java index 9eb1207d..1bc16565 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/network/play/ServerPlayNetHandlerMixin.java @@ -11,6 +11,7 @@ import io.izzel.arclight.common.bridge.server.management.PlayerInteractionManage import io.izzel.arclight.common.bridge.server.management.PlayerListBridge; import io.izzel.arclight.common.bridge.tileentity.SignTileEntityBridge; import io.izzel.arclight.common.mod.ArclightConstants; +import io.izzel.arclight.common.mod.compat.AstralSorceryHooks; import io.izzel.arclight.common.mod.util.ArclightCaptures; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.GenericFutureListener; @@ -1189,7 +1190,7 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB this.player.sendContainerToPlayer(this.player.openContainer); } } else if (packetIn.getAction() == CUseEntityPacket.Action.ATTACK) { - if (entity instanceof ItemEntity || entity instanceof ExperienceOrbEntity || entity instanceof AbstractArrowEntity || (entity == this.player && !this.player.isSpectator())) { + if ((entity instanceof ItemEntity && AstralSorceryHooks.notInteractable(entity)) || entity instanceof ExperienceOrbEntity || entity instanceof AbstractArrowEntity || (entity == this.player && !this.player.isSpectator())) { this.disconnect(new TranslationTextComponent("multiplayer.disconnect.invalid_entity_attacked")); LOGGER.warn("Player {} tried to attack an invalid entity", this.player.getName().getString()); return; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/compat/AstralSorceryHooks.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/compat/AstralSorceryHooks.java new file mode 100644 index 00000000..a61f8740 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/compat/AstralSorceryHooks.java @@ -0,0 +1,20 @@ +package io.izzel.arclight.common.mod.compat; + +import net.minecraft.entity.Entity; + +public class AstralSorceryHooks { + + private static Class interactClass; + + static { + try { + interactClass = Class.forName("hellfirepvp.astralsorcery.common.entity.InteractableEntity"); + } catch (ClassNotFoundException e) { + interactClass = null; + } + } + + public static boolean notInteractable(Entity entity) { + return interactClass == null || !interactClass.isInstance(entity); + } +}