diff --git a/common/src/main/java/org/samo_lego/simpleauth/mixin/MixinSlot.java b/common/src/main/java/org/samo_lego/simpleauth/mixin/MixinSlot.java index b781d5b..3ca726e 100644 --- a/common/src/main/java/org/samo_lego/simpleauth/mixin/MixinSlot.java +++ b/common/src/main/java/org/samo_lego/simpleauth/mixin/MixinSlot.java @@ -16,19 +16,20 @@ public abstract class MixinSlot { // Denying item moving etc. @Inject(method = "canTakeItems(Lnet/minecraft/entity/player/PlayerEntity;)Z", at = @At(value = "HEAD"), cancellable = true) private void canTakeItems(PlayerEntity playerEntity, CallbackInfoReturnable cir) { - ServerPlayerEntity player = (ServerPlayerEntity) playerEntity; - ActionResult result = AuthEventHandler.onTakeItem(player); + if (playerEntity instanceof ServerPlayerEntity player) { + ActionResult result = AuthEventHandler.onTakeItem(player); - if (result == ActionResult.FAIL) { - // Canceling the item taking - player.networkHandler.sendPacket( - new ScreenHandlerSlotUpdateS2CPacket( - -2, - 0, - player.getInventory().selectedSlot, - player.getInventory().getStack(player.getInventory().selectedSlot)) - ); - cir.setReturnValue(false); + if (result == ActionResult.FAIL) { + // Canceling the item taking + player.networkHandler.sendPacket( + new ScreenHandlerSlotUpdateS2CPacket( + -2, + 0, + player.getInventory().selectedSlot, + player.getInventory().getStack(player.getInventory().selectedSlot)) + ); + cir.setReturnValue(false); + } } } } diff --git a/forge/src/main/java/org/samo_lego/simpleauth/SimpleAuthForge.java b/forge/src/main/java/org/samo_lego/simpleauth/SimpleAuthForge.java index 8bf5355..0c27d84 100644 --- a/forge/src/main/java/org/samo_lego/simpleauth/SimpleAuthForge.java +++ b/forge/src/main/java/org/samo_lego/simpleauth/SimpleAuthForge.java @@ -2,9 +2,11 @@ package org.samo_lego.simpleauth; import com.mojang.brigadier.CommandDispatcher; import net.minecraft.server.command.ServerCommandSource; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.event.server.ServerStoppedEvent; import net.minecraftforge.fml.loading.FMLPaths; @@ -15,7 +17,7 @@ import org.samo_lego.simpleauth.commands.*; public class SimpleAuthForge { public SimpleAuthForge() { SimpleAuth.init(FMLPaths.GAMEDIR.get()); - MinecraftForge.EVENT_BUS.register(this); + DistExecutor.safeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> MinecraftForge.EVENT_BUS.register(this)); } @SubscribeEvent diff --git a/forge/src/main/java/org/samo_lego/simpleauth/event/AuthEventHandlerForge.java b/forge/src/main/java/org/samo_lego/simpleauth/event/AuthEventHandlerForge.java index 036752e..bcdb6ee 100644 --- a/forge/src/main/java/org/samo_lego/simpleauth/event/AuthEventHandlerForge.java +++ b/forge/src/main/java/org/samo_lego/simpleauth/event/AuthEventHandlerForge.java @@ -2,6 +2,7 @@ package org.samo_lego.simpleauth.event; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.ActionResult; +import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerContainerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -15,7 +16,7 @@ import static org.samo_lego.simpleauth.SimpleAuth.MOD_ID; * This class will take care of actions players try to do, * and cancel them if they aren't authenticated */ -@Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) +@Mod.EventBusSubscriber(value = Dist.DEDICATED_SERVER, modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class AuthEventHandlerForge { @SubscribeEvent(priority = HIGHEST) public static void onContainerOpen(PlayerContainerEvent.Open event) {