Skip to content

Commit 02c848b

Browse files
committed
Update to mc1.21.3
1 parent 906d2ce commit 02c848b

15 files changed

+199
-205
lines changed

common/build.gradle

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,24 @@ plugins {
33
id("net.neoforged.moddev")
44
}
55

6+
// Vanilla depends on ASM 9.3, MDG makes that a 'strict' version constraint,
7+
// but Mixin and MixinExtras needs newer ASM so we override that here.
8+
configurations.configureEach {
9+
resolutionStrategy.eachDependency { details ->
10+
if (details.requested.group == "org.ow2.asm") {
11+
details.useVersion(asm_version)
12+
details.because("Mixin requires new ASM")
13+
}
14+
}
15+
}
16+
617
dependencies {
18+
compileOnly "org.ow2.asm:asm:${asm_version}"
19+
compileOnly "org.ow2.asm:asm-analysis:${asm_version}"
20+
compileOnly "org.ow2.asm:asm-commons:${asm_version}"
21+
compileOnly "org.ow2.asm:asm-tree:${asm_version}"
22+
compileOnly "org.ow2.asm:asm-util:${asm_version}"
23+
724
compileOnly("org.spongepowered:mixin:${mixin_version}")
825
compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:${mixinextras_version}"))
926

common/src/main/java/dev/terminalmc/moremousetweaks/MoreMouseTweaks.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import dev.terminalmc.moremousetweaks.util.ModLogger;
2323
import net.minecraft.client.Minecraft;
2424
import net.minecraft.core.registries.BuiltInRegistries;
25+
import net.minecraft.world.item.ItemStack;
26+
import org.jetbrains.annotations.Nullable;
2527

2628
import static dev.terminalmc.moremousetweaks.config.Config.options;
2729

@@ -31,6 +33,7 @@ public class MoreMouseTweaks {
3133
public static final ModLogger LOG = new ModLogger(MOD_NAME);
3234

3335
public static int lastUpdatedSlot = -1;
36+
public static @Nullable ItemStack resultStack = null;
3437

3538
public static void init() {
3639
Config.getAndSave();
@@ -42,15 +45,14 @@ public static void onConfigSaved(Config config) {
4245
} else {
4346
InteractionManager.setTickRate(config.options.interactionRateClient);
4447
}
45-
updateItemTags(config.options);
4648
setInteractionManagerTickRate(config.options);
4749
}
4850

4951
public static void updateItemTags(Config.Options options) {
5052
options.typeMatchItems.clear();
51-
BuiltInRegistries.ITEM.getTags().forEach((pair) -> {
52-
if (options.typeMatchTags.contains(pair.getFirst().location().getPath())) {
53-
pair.getSecond().forEach((itemHolder) ->
53+
BuiltInRegistries.ITEM.getTags().forEach((named) -> {
54+
if (options.typeMatchTags.contains(named.key().location().getPath())) {
55+
named.forEach((itemHolder) ->
5456
options.typeMatchItems.add(itemHolder.value()));
5557
}
5658
});

common/src/main/java/dev/terminalmc/moremousetweaks/inventory/ContainerScreenHelper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
2121
import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
22-
import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen;
2322
import net.minecraft.world.entity.player.Inventory;
2423
import net.minecraft.world.inventory.Slot;
2524
import net.minecraft.world.item.ItemStack;
@@ -71,7 +70,7 @@ public Scope getScope(Slot slot) {
7170
}
7271

7372
// Player inventory only screen
74-
if (screen instanceof EffectRenderingInventoryScreen) {
73+
if (screen instanceof AbstractContainerScreen<?>) {
7574
// Player inventory
7675
if (slot.container instanceof Inventory) {
7776
boolean mergeWithHotbar = false;

common/src/main/java/dev/terminalmc/moremousetweaks/mixin/MixinClientPacketListener.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import net.minecraft.network.Connection;
2727
import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket;
2828
import net.minecraft.network.protocol.game.ClientboundLoginPacket;
29-
import net.minecraft.network.protocol.game.ClientboundSetCarriedItemPacket;
29+
import net.minecraft.network.protocol.game.ClientboundSetCursorItemPacket;
3030
import org.spongepowered.asm.mixin.Mixin;
3131
import org.spongepowered.asm.mixin.injection.At;
3232
import org.spongepowered.asm.mixin.injection.Inject;
@@ -50,8 +50,8 @@ private void onLogin(ClientboundLoginPacket packet, CallbackInfo ci) {
5050
MoreMouseTweaks.setInteractionManagerTickRate(options());
5151
}
5252

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

common/src/main/java/dev/terminalmc/moremousetweaks/mixin/quick/craft/MixinOverlayRecipeComponent.java

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,27 @@
1616

1717
package dev.terminalmc.moremousetweaks.mixin.quick.craft;
1818

19+
import com.llamalad7.mixinextras.sugar.Local;
20+
import dev.terminalmc.moremousetweaks.MoreMouseTweaks;
1921
import dev.terminalmc.moremousetweaks.config.Config;
2022
import net.minecraft.client.Minecraft;
2123
import net.minecraft.client.gui.screens.recipebook.OverlayRecipeComponent;
24+
import net.minecraft.client.gui.screens.recipebook.RecipeCollection;
25+
import net.minecraft.util.context.ContextMap;
2226
import net.minecraft.world.item.ItemStack;
23-
import net.minecraft.world.item.crafting.RecipeHolder;
27+
import net.minecraft.world.item.crafting.display.RecipeDisplayEntry;
28+
import net.minecraft.world.item.crafting.display.RecipeDisplayId;
2429
import org.spongepowered.asm.mixin.Final;
2530
import org.spongepowered.asm.mixin.Mixin;
2631
import org.spongepowered.asm.mixin.Shadow;
32+
import org.spongepowered.asm.mixin.Unique;
2733
import org.spongepowered.asm.mixin.injection.At;
2834
import org.spongepowered.asm.mixin.injection.Inject;
35+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
2936
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
3037
import yalter.mousetweaks.MouseButton;
3138

39+
import java.util.ArrayList;
3240
import java.util.Iterator;
3341
import java.util.List;
3442

@@ -42,9 +50,26 @@ public class MixinOverlayRecipeComponent {
4250
@Shadow
4351
@Final private List<OverlayRecipeComponent.OverlayRecipeButton> recipeButtons;
4452
@Shadow
45-
private RecipeHolder<?> lastRecipeClicked;
46-
@Shadow
47-
private Minecraft minecraft;
53+
private RecipeDisplayId lastRecipeClicked;
54+
55+
@Unique
56+
private ContextMap mmt$contextMap;
57+
@Unique
58+
private final List<RecipeDisplayEntry> mmt$recipes = new ArrayList<>();
59+
60+
@Inject(
61+
method = "init",
62+
at = @At(
63+
value = "INVOKE",
64+
target = "Ljava/util/List;add(Ljava/lang/Object;)Z",
65+
shift = At.Shift.AFTER
66+
)
67+
)
68+
private void wrapAdd(RecipeCollection $$0, ContextMap contextMap, boolean $$2, int $$3, int $$4,
69+
int $$5, int $$6, float $$7, CallbackInfo ci, @Local RecipeDisplayEntry entry) {
70+
mmt$contextMap = contextMap;
71+
mmt$recipes.add(entry);
72+
}
4873

4974
@Inject(
5075
method = "mouseClicked",
@@ -57,20 +82,22 @@ private void onMouseClicked(double mouseX, double mouseY, int button,
5782
options().quickCrafting
5883
&& button == MouseButton.RIGHT.getValue()
5984
) {
60-
Iterator<OverlayRecipeComponent.OverlayRecipeButton> iter = this.recipeButtons.iterator();
85+
Iterator<OverlayRecipeComponent.OverlayRecipeButton> buttonIter = this.recipeButtons.iterator();
6186
OverlayRecipeComponent.OverlayRecipeButton overlayButton;
87+
Iterator<RecipeDisplayEntry> recipeIter = mmt$recipes.iterator();
88+
RecipeDisplayEntry recipe;
6289
do {
63-
if (!iter.hasNext()) {
90+
if (!buttonIter.hasNext() || !recipeIter.hasNext()) {
6491
cir.setReturnValue(false);
6592
return; // Crash prevention
6693
}
67-
overlayButton = iter.next();
94+
overlayButton = buttonIter.next();
95+
recipe = recipeIter.next();
6896
} while(!overlayButton.mouseClicked(mouseX, mouseY, MouseButton.LEFT.getValue()));
6997

7098
// Optionally prevent clicking past a full carried stack
71-
ItemStack carried = minecraft.player.containerMenu.getCarried();
72-
ItemStack result = overlayButton.recipe.value().getResultItem(
73-
minecraft.level.registryAccess());
99+
ItemStack carried = Minecraft.getInstance().player.containerMenu.getCarried();
100+
ItemStack result = recipe.display().result().resolveForFirstStack(mmt$contextMap);
74101
if (
75102
!options().qcOverflowMode.equals(Config.Options.QcOverflowMode.NONE)
76103
|| carried.isEmpty()
@@ -81,6 +108,8 @@ private void onMouseClicked(double mouseX, double mouseY, int button,
81108
) {
82109
// Quick-craft
83110
this.lastRecipeClicked = overlayButton.recipe;
111+
// Notify of result stack
112+
MoreMouseTweaks.resultStack = result;
84113
cir.setReturnValue(true);
85114
}
86115
}

0 commit comments

Comments
 (0)