Fix quickmove
This commit is contained in:
@@ -6,7 +6,7 @@ minecraft_version=1.21.8
|
|||||||
yarn_mappings=1.21.8+build.1
|
yarn_mappings=1.21.8+build.1
|
||||||
loader_version=0.17.2
|
loader_version=0.17.2
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=1.3
|
mod_version=1.4
|
||||||
maven_group=com.kasetoatz
|
maven_group=com.kasetoatz
|
||||||
archives_base_name=biggerhotbar
|
archives_base_name=biggerhotbar
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
@@ -1,20 +1,35 @@
|
|||||||
package com.kasetoatz.biggerhotbar;
|
package com.kasetoatz.biggerhotbar;
|
||||||
|
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
import net.minecraft.client.network.ClientPlayerEntity;
|
||||||
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.screen.slot.SlotActionType;
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
import static com.kasetoatz.biggerhotbar.state.StateManager.*;
|
import static com.kasetoatz.biggerhotbar.state.StateManager.*;
|
||||||
|
|
||||||
public class Biggerhotbar implements ClientModInitializer
|
public class Biggerhotbar implements ClientModInitializer
|
||||||
{
|
{
|
||||||
|
public static ArrayList<Runnable> tickers = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient()
|
public void onInitializeClient()
|
||||||
{
|
{
|
||||||
load();
|
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()
|
public static void flipItems()
|
||||||
|
@@ -1,36 +1,38 @@
|
|||||||
package com.kasetoatz.biggerhotbar.mixin;
|
package com.kasetoatz.biggerhotbar.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayerEntity;
|
|
||||||
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
import net.minecraft.client.network.ClientPlayerInteractionManager;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.registry.Registries;
|
import net.minecraft.registry.Registries;
|
||||||
import net.minecraft.screen.GenericContainerScreenHandler;
|
import net.minecraft.screen.GenericContainerScreenHandler;
|
||||||
import net.minecraft.screen.slot.SlotActionType;
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
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 java.util.OptionalInt;
|
||||||
|
|
||||||
|
import static com.kasetoatz.biggerhotbar.Biggerhotbar.tickers;
|
||||||
import static com.kasetoatz.biggerhotbar.state.StateManager.isFlipped;
|
import static com.kasetoatz.biggerhotbar.state.StateManager.isFlipped;
|
||||||
|
|
||||||
@Mixin(GenericContainerScreenHandler.class)
|
@Mixin(GenericContainerScreenHandler.class)
|
||||||
public class GenericContainerScreenHandlerMixin
|
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)
|
@Inject(method="quickMove", at=@At(value="INVOKE", target="Lnet/minecraft/screen/slot/Slot;setStack(Lnet/minecraft/item/ItemStack;)V"))
|
||||||
public ItemStack quickMove(ItemStack stack)
|
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;
|
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);
|
int slot = player.getInventory().getMatchingSlot(Registries.ITEM.getEntry(stack.getItem()), stack);
|
||||||
if (slot < 0 || slot > 8)
|
if (slot < 0 || slot > 8)
|
||||||
{
|
{
|
||||||
return stack;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 35; i > 26; i--)
|
for (int i = 35; i > 26; i--)
|
||||||
{
|
{
|
||||||
@@ -39,9 +41,8 @@ public class GenericContainerScreenHandlerMixin
|
|||||||
{
|
{
|
||||||
continue;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
return stack;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user