diff --git a/game-runner/src/v1_19_2/java/org/cubepanion/v1_19_2/mixins/MultiPlayerGameModeMixin.java b/game-runner/src/v1_19_2/java/org/cubepanion/v1_19_2/mixins/MultiPlayerGameModeMixin.java new file mode 100644 index 00000000..67c7f5c6 --- /dev/null +++ b/game-runner/src/v1_19_2/java/org/cubepanion/v1_19_2/mixins/MultiPlayerGameModeMixin.java @@ -0,0 +1,44 @@ +package org.cubepanion.v1_19_2.mixins; + +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.TieredItem; +import org.cubepanion.core.Cubepanion; +import org.cubepanion.core.utils.CubeGame; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MultiPlayerGameMode.class) +public class MultiPlayerGameModeMixin { + + @Unique + private Cubepanion cubepanion$addon = null; + + @Inject(at = @At("HEAD"), method = "handleInventoryMouseClick", cancellable = true) + private void handleInventoryMouseClick(int $$0, int $$1, int $$2, ClickType $$3, Player $$4, CallbackInfo ci) { + if ($$3 != ClickType.THROW) { + return; + } + if (cubepanion$addon == null) { + cubepanion$addon = Cubepanion.get(); + } + AbstractContainerMenu inv = $$4.containerMenu; + Slot slot = inv.getSlot($$1); + ItemStack itemStack = slot.getItem(); + + if ((itemStack.getItem() instanceof TieredItem || itemStack.is(Items.BOW) || itemStack.getItem() instanceof ArmorItem) + && cubepanion$addon.configuration().getQolConfig().getNoDropSkyBlock().get() + && cubepanion$addon.getManager().getDivision().equals(CubeGame.SKYBLOCK)) { + ci.cancel(); + } + } +} diff --git a/game-runner/src/v1_19_3/java/org/cubepanion/v1_19_3/mixins/MultiPlayerGameModeMixin.java b/game-runner/src/v1_19_3/java/org/cubepanion/v1_19_3/mixins/MultiPlayerGameModeMixin.java new file mode 100644 index 00000000..268cde5b --- /dev/null +++ b/game-runner/src/v1_19_3/java/org/cubepanion/v1_19_3/mixins/MultiPlayerGameModeMixin.java @@ -0,0 +1,45 @@ +package org.cubepanion.v1_19_3.mixins; + +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.TieredItem; +import org.cubepanion.core.Cubepanion; +import org.cubepanion.core.utils.CubeGame; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MultiPlayerGameMode.class) +public class MultiPlayerGameModeMixin { + + @Unique + private Cubepanion cubepanion$addon = null; + + @Inject(at = @At("HEAD"), method = "handleInventoryMouseClick", cancellable = true) + private void handleInventoryMouseClick(int $$0, int $$1, int $$2, ClickType $$3, Player $$4, CallbackInfo ci) { + if ($$3 != ClickType.THROW) { + return; + } + if (cubepanion$addon == null) { + cubepanion$addon = Cubepanion.get(); + } + AbstractContainerMenu inv = $$4.containerMenu; + Slot slot = inv.getSlot($$1); + ItemStack itemStack = slot.getItem(); + + if ((itemStack.getItem() instanceof TieredItem || itemStack.is(Items.BOW) || itemStack.getItem() instanceof ArmorItem) + && cubepanion$addon.configuration().getQolConfig().getNoDropSkyBlock().get() + && cubepanion$addon.getManager().getDivision().equals(CubeGame.SKYBLOCK)) { + ci.cancel(); + } + } +} diff --git a/game-runner/src/v1_19_4/java/org/cubepanion/v1_19_4/mixins/MultiPlayerGameModeMixin.java b/game-runner/src/v1_19_4/java/org/cubepanion/v1_19_4/mixins/MultiPlayerGameModeMixin.java new file mode 100644 index 00000000..aeffba2c --- /dev/null +++ b/game-runner/src/v1_19_4/java/org/cubepanion/v1_19_4/mixins/MultiPlayerGameModeMixin.java @@ -0,0 +1,43 @@ +package org.cubepanion.v1_19_4.mixins; + +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import org.cubepanion.core.Cubepanion; +import org.cubepanion.core.utils.CubeGame; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MultiPlayerGameMode.class) +public class MultiPlayerGameModeMixin { + + @Unique + private Cubepanion cubepanion$addon = null; + + @Inject(at = @At("HEAD"), method = "handleInventoryMouseClick", cancellable = true) + private void handleInventoryMouseClick(int $$0, int $$1, int $$2, ClickType $$3, Player $$4, CallbackInfo ci) { + if ($$3 != ClickType.THROW) { + return; + } + if (cubepanion$addon == null) { + cubepanion$addon = Cubepanion.get(); + } + AbstractContainerMenu inv = $$4.containerMenu; + Slot slot = inv.getSlot($$1); + ItemStack itemStack = slot.getItem(); + if ((itemStack.is(ItemTags.TOOLS) || itemStack.is(Items.BOW) || itemStack.getItem() instanceof ArmorItem) + && cubepanion$addon.configuration().getQolConfig().getNoDropSkyBlock().get() + && cubepanion$addon.getManager().getDivision().equals(CubeGame.SKYBLOCK)) { + ci.cancel(); + } + } +} diff --git a/game-runner/src/v1_20_1/java/org/cubepanion/v1_20_1/mixins/MultiPlayerGameModeMixin.java b/game-runner/src/v1_20_1/java/org/cubepanion/v1_20_1/mixins/MultiPlayerGameModeMixin.java new file mode 100644 index 00000000..0f909b53 --- /dev/null +++ b/game-runner/src/v1_20_1/java/org/cubepanion/v1_20_1/mixins/MultiPlayerGameModeMixin.java @@ -0,0 +1,43 @@ +package org.cubepanion.v1_20_1.mixins; + +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.tags.ItemTags; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ArmorItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import org.cubepanion.core.Cubepanion; +import org.cubepanion.core.utils.CubeGame; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(MultiPlayerGameMode.class) +public class MultiPlayerGameModeMixin { + + @Unique + private Cubepanion cubepanion$addon = null; + + @Inject(at = @At("HEAD"), method = "handleInventoryMouseClick", cancellable = true) + private void handleInventoryMouseClick(int $$0, int $$1, int $$2, ClickType $$3, Player $$4, CallbackInfo ci) { + if ($$3 != ClickType.THROW) { + return; + } + if (cubepanion$addon == null) { + cubepanion$addon = Cubepanion.get(); + } + AbstractContainerMenu inv = $$4.containerMenu; + Slot slot = inv.getSlot($$1); + ItemStack itemStack = slot.getItem(); + if ((itemStack.is(ItemTags.TOOLS) || itemStack.is(Items.BOW) || itemStack.getItem() instanceof ArmorItem) + && cubepanion$addon.configuration().getQolConfig().getNoDropSkyBlock().get() + && cubepanion$addon.getManager().getDivision().equals(CubeGame.SKYBLOCK)) { + ci.cancel(); + } + } +}