Fix quickmove
This commit is contained in:
@@ -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
|
||||
|
@@ -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()
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user