Skip to content

Commit

Permalink
Update to mc1.21.3
Browse files Browse the repository at this point in the history
  • Loading branch information
NotRyken committed Jan 17, 2025
1 parent 7ee614c commit 89db662
Show file tree
Hide file tree
Showing 14 changed files with 200 additions and 216 deletions.
17 changes: 17 additions & 0 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,24 @@ plugins {
id("net.neoforged.moddev")
}

// Vanilla depends on ASM 9.3, MDG makes that a 'strict' version constraint,
// but Mixin and MixinExtras needs newer ASM so we override that here.
configurations.configureEach {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == "org.ow2.asm") {
details.useVersion(asm_version)
details.because("Mixin requires new ASM")
}
}
}

dependencies {
compileOnly "org.ow2.asm:asm:${asm_version}"
compileOnly "org.ow2.asm:asm-analysis:${asm_version}"
compileOnly "org.ow2.asm:asm-commons:${asm_version}"
compileOnly "org.ow2.asm:asm-tree:${asm_version}"
compileOnly "org.ow2.asm:asm-util:${asm_version}"

compileOnly("org.spongepowered:mixin:${mixin_version}")
compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,16 @@
import dev.terminalmc.moremousetweaks.util.ModLogger;
import net.minecraft.client.Minecraft;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.Nullable;

public class MoreMouseTweaks {
public static final String MOD_ID = "moremousetweaks";
public static final String MOD_NAME = "MoreMouseTweaks";
public static final ModLogger LOG = new ModLogger(MOD_NAME);

public static int lastUpdatedSlot = -1;
public static @Nullable ItemStack resultStack = null;

public static void init() {
Config.getAndSave();
Expand All @@ -44,14 +47,13 @@ public static void onConfigSaved(Config config) {
} else {
InteractionManager.setTickRate(config.options.interactionRateClient);
}
updateItemTags(config);
}

public static void updateItemTags(Config config) {
config.options.typeMatchItems.clear();
BuiltInRegistries.ITEM.getTags().forEach((pair) -> {
if (config.options.typeMatchTags.contains(pair.getFirst().location().getPath())) {
pair.getSecond().forEach((itemHolder) ->
BuiltInRegistries.ITEM.getTags().forEach((named) -> {
if (config.options.typeMatchTags.contains(named.key().location().getPath())) {
named.forEach((itemHolder) ->
config.options.typeMatchItems.add(itemHolder.value()));
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import net.minecraft.network.Connection;
import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket;
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
import net.minecraft.network.protocol.game.ClientboundSetCarriedItemPacket;
import net.minecraft.network.protocol.game.ClientboundSetCursorItemPacket;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
Expand All @@ -48,8 +48,8 @@ private void onLogin(ClientboundLoginPacket packet, CallbackInfo ci) {
MoreMouseTweaks.updateItemTags(Config.get());
}

@Inject(method = "handleSetCarriedItem", at = @At("HEAD"))
public void onHeldItemChangeBegin(ClientboundSetCarriedItemPacket packet, CallbackInfo ci) {
@Inject(method = "handleSetCursorItem", at = @At("HEAD"))
public void onHeldItemChangeBegin(ClientboundSetCursorItemPacket packet, CallbackInfo ci) {
InteractionManager.triggerSend(InteractionManager.TriggerType.HELD_ITEM_CHANGE);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,27 @@

package dev.terminalmc.moremousetweaks.mixin.gui.other;

import com.llamalad7.mixinextras.sugar.Local;
import dev.terminalmc.moremousetweaks.MoreMouseTweaks;
import dev.terminalmc.moremousetweaks.config.Config;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.recipebook.OverlayRecipeComponent;
import net.minecraft.client.gui.screens.recipebook.RecipeCollection;
import net.minecraft.util.context.ContextMap;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.display.RecipeDisplayEntry;
import net.minecraft.world.item.crafting.display.RecipeDisplayId;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
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;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import yalter.mousetweaks.MouseButton;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

Expand All @@ -44,9 +52,26 @@ public class MixinOverlayRecipeComponent {
@Shadow
@Final private List<OverlayRecipeComponent.OverlayRecipeButton> recipeButtons;
@Shadow
private RecipeHolder<?> lastRecipeClicked;
@Shadow
private Minecraft minecraft;
private RecipeDisplayId lastRecipeClicked;

@Unique
private ContextMap mmt$contextMap;
@Unique
private final List<RecipeDisplayEntry> mmt$recipes = new ArrayList<>();

@Inject(
method = "init",
at = @At(
value = "INVOKE",
target = "Ljava/util/List;add(Ljava/lang/Object;)Z",
shift = At.Shift.AFTER
)
)
private void wrapAdd(RecipeCollection $$0, ContextMap contextMap, boolean $$2, int $$3, int $$4,
int $$5, int $$6, float $$7, CallbackInfo ci, @Local RecipeDisplayEntry entry) {
mmt$contextMap = contextMap;
mmt$recipes.add(entry);
}

@Inject(
method = "mouseClicked",
Expand All @@ -59,20 +84,23 @@ private void onMouseClicked(double mouseX, double mouseY, int button,
options().quickCrafting
&& button == MouseButton.RIGHT.getValue()
) {
Iterator<OverlayRecipeComponent.OverlayRecipeButton> iter = this.recipeButtons.iterator();
Iterator<OverlayRecipeComponent.OverlayRecipeButton> buttonIter = this.recipeButtons.iterator();
OverlayRecipeComponent.OverlayRecipeButton overlayButton;
Iterator<RecipeDisplayEntry> recipeIter = mmt$recipes.iterator();
RecipeDisplayEntry recipe;
do {
if (!iter.hasNext()) {
if (!buttonIter.hasNext() || !recipeIter.hasNext()) {
cir.setReturnValue(false);
return; // Crash prevention
}
overlayButton = iter.next();
overlayButton = buttonIter.next();
recipe = recipeIter.next();
} while(!overlayButton.mouseClicked(mouseX, mouseY, MouseButton.LEFT.getValue()));

// Optionally prevent clicking past a full carried stack
ItemStack carried = minecraft.player.containerMenu.getCarried();
ItemStack result = overlayButton.recipe.value().getResultItem(
minecraft.level.registryAccess());
Minecraft mc = Minecraft.getInstance();
ItemStack carried = mc.player.containerMenu.getCarried();
ItemStack result = recipe.display().result().resolveForFirstStack(mmt$contextMap);
if (
!options().qcOverflowMode.equals(Config.QcOverflowMode.NONE)
|| carried.isEmpty()
Expand All @@ -83,6 +111,8 @@ private void onMouseClicked(double mouseX, double mouseY, int button,
) {
// Quick-craft
this.lastRecipeClicked = overlayButton.recipe;
// Notify of result stack
MoreMouseTweaks.resultStack = result;
cir.setReturnValue(true);
}
}
Expand Down
Loading

0 comments on commit 89db662

Please sign in to comment.