From f397a59579f2eb02dfd685db24489f07892e6ceb Mon Sep 17 00:00:00 2001 From: gnembon Date: Wed, 15 Jul 2020 00:25:51 -0300 Subject: [PATCH] fixed so updating of slot and craft requests are only called from main thread. --- .../mixins/ServerPlayNetworkHandler_scarpetEventsMixin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/mixins/ServerPlayNetworkHandler_scarpetEventsMixin.java b/src/main/java/carpet/mixins/ServerPlayNetworkHandler_scarpetEventsMixin.java index e5ca554a..402497b4 100644 --- a/src/main/java/carpet/mixins/ServerPlayNetworkHandler_scarpetEventsMixin.java +++ b/src/main/java/carpet/mixins/ServerPlayNetworkHandler_scarpetEventsMixin.java @@ -225,13 +225,13 @@ public class ServerPlayNetworkHandler_scarpetEventsMixin PLAYER_ATTACKS_ENTITY.onEntityAction(player, playerInteractEntityC2SPacket_1.getEntity(player.getServerWorld()), null); } - @Inject(method = "onButtonClick", at = @At("HEAD")) + @Inject(method = "onButtonClick", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;updateLastActionTime()V")) private void onItemBeingPickedFromInventory(ButtonClickC2SPacket packet, CallbackInfo ci) { // crafts not int the crafting window //CarpetSettings.LOG.error("Player clicks button "+packet.getButtonId()); } - @Inject(method = "onCraftRequest", at = @At("HEAD")) + @Inject(method = "onCraftRequest", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerPlayerEntity;updateLastActionTime()V")) private void onRecipeSelectedInRecipeManager(CraftRequestC2SPacket packet, CallbackInfo ci) { if (PLAYER_CHOOSES_RECIPE.isNeeded()) @@ -243,7 +243,7 @@ public class ServerPlayNetworkHandler_scarpetEventsMixin @Inject(method = "onUpdateSelectedSlot", at = @At("HEAD")) private void onUpdatedSelectedSLot(UpdateSelectedSlotC2SPacket packet, CallbackInfo ci) { - if (PLAYER_SWITCHES_SLOT.isNeeded()) + if (PLAYER_SWITCHES_SLOT.isNeeded() && player.getServer() != null && player.getServer().isOnThread()) { PLAYER_SWITCHES_SLOT.onSlotSwitch(player, player.inventory.selectedSlot, packet.getSelectedSlot()); }