Fix quickmove

This commit is contained in:
KäseToatz
2025-08-25 13:49:15 +02:00
parent fa265afe7b
commit 952b2b6ff4
3 changed files with 27 additions and 11 deletions

View File

@@ -6,7 +6,7 @@ minecraft_version=1.21.8
yarn_mappings=1.21.8+build.1
loader_version=0.17.2
# Mod Properties
mod_version=1.3
mod_version=1.4
maven_group=com.kasetoatz
archives_base_name=biggerhotbar
# Dependencies

View File

@@ -1,20 +1,35 @@
package com.kasetoatz.biggerhotbar;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.network.ClientPlayerInteractionManager;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.screen.slot.SlotActionType;
import java.util.ArrayList;
import java.util.Iterator;
import static com.kasetoatz.biggerhotbar.state.StateManager.*;
public class Biggerhotbar implements ClientModInitializer
{
public static ArrayList<Runnable> tickers = new ArrayList<>();
@Override
public void onInitializeClient()
{
load();
ClientTickEvents.END_CLIENT_TICK.register(client -> {
Iterator<Runnable> iterator = tickers.iterator();
while (iterator.hasNext())
{
Runnable runnable = iterator.next();
runnable.run();
iterator.remove();
}
});
}
public static void flipItems()

View File

@@ -1,36 +1,38 @@
package com.kasetoatz.biggerhotbar.mixin;
import com.llamalad7.mixinextras.sugar.Local;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.client.network.ClientPlayerInteractionManager;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.screen.GenericContainerScreenHandler;
import net.minecraft.screen.slot.SlotActionType;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.OptionalInt;
import static com.kasetoatz.biggerhotbar.Biggerhotbar.tickers;
import static com.kasetoatz.biggerhotbar.state.StateManager.isFlipped;
@Mixin(GenericContainerScreenHandler.class)
public class GenericContainerScreenHandlerMixin
{
@ModifyArg(method="quickMove", at=@At(value="INVOKE", target="Lnet/minecraft/screen/GenericContainerScreenHandler;insertItem(Lnet/minecraft/item/ItemStack;IIZ)Z", ordinal=0), index=0)
public ItemStack quickMove(ItemStack stack)
@Inject(method="quickMove", at=@At(value="INVOKE", target="Lnet/minecraft/screen/slot/Slot;setStack(Lnet/minecraft/item/ItemStack;)V"))
public void quickMove(PlayerEntity player, int s, CallbackInfoReturnable<ItemStack> cir, @Local(ordinal = 0) ItemStack stack)
{
ClientPlayerEntity player = MinecraftClient.getInstance().player;
ClientPlayerInteractionManager manager = MinecraftClient.getInstance().interactionManager;
if (isFlipped() || player == null || manager == null || stack.isEmpty())
if (isFlipped() || manager == null || stack.isEmpty())
{
return stack;
return;
}
int slot = player.getInventory().getMatchingSlot(Registries.ITEM.getEntry(stack.getItem()), stack);
if (slot < 0 || slot > 8)
{
return stack;
return;
}
for (int i = 35; i > 26; i--)
{
@@ -39,9 +41,8 @@ public class GenericContainerScreenHandlerMixin
{
continue;
}
manager.clickSlot(player.currentScreenHandler.syncId, index.getAsInt(), slot, SlotActionType.SWAP, player);
tickers.add(() -> manager.clickSlot(player.currentScreenHandler.syncId, index.getAsInt(), slot, SlotActionType.SWAP, player));
break;
}
return stack;
}
}