Fix astralsorcery compat (#217)

This commit is contained in:
IzzelAliz 2021-04-18 12:37:35 +08:00
parent 77378c43f1
commit 047a913c63
2 changed files with 22 additions and 1 deletions

View File

@ -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;

View File

@ -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);
}
}