Skip to content

Commit a2e8a21

Browse files
committed
Merge 1.21(.1) into 1.21.4
* 1.21(.1): Update AnvilMenu Enchantability Matching (1.4.15-d:c4) Apply new Mixin in fabric.mod.json (1.4.15-d:c3) # Conflicts: # src/main/java/de/pnku/mstv_base/mixin/AnvilMenuMixin.java
2 parents 3d1d36b + 489918a commit a2e8a21

2 files changed

Lines changed: 15 additions & 12 deletions

File tree

src/main/java/de/pnku/mstv_base/mixin/AnvilMenuMixin.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
44
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
55
import net.minecraft.core.component.DataComponents;
6+
import net.minecraft.tags.TagKey;
67
import net.minecraft.world.inventory.AnvilMenu;
78
import net.minecraft.world.item.Item;
89
import net.minecraft.world.item.ItemStack;
@@ -11,6 +12,9 @@
1112
import org.spongepowered.asm.mixin.Unique;
1213
import org.spongepowered.asm.mixin.injection.At;
1314

15+
import java.util.ArrayList;
16+
import java.util.List;
17+
1418
import static net.minecraft.tags.ItemTags.*;
1519
import static net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags.*;
1620

@@ -20,7 +24,7 @@ public abstract class AnvilMenuMixin {
2024
private boolean wrappedCreateResultItemStackIs(ItemStack firstInputStack, Item secondInputItem, Operation<Boolean> original) {
2125
if (original.call(firstInputStack, secondInputItem)) return true;
2226

23-
if (isSameToolType(firstInputStack, new ItemStack(secondInputItem))) {
27+
if (isSameEnchantabilityType(firstInputStack, new ItemStack(secondInputItem))) {
2428
Repairable firstRepairable = firstInputStack.get(DataComponents.REPAIRABLE);
2529
Repairable secondRepairable = secondInputItem.getDefaultInstance().get(DataComponents.REPAIRABLE);
2630
if (firstRepairable != null) {
@@ -32,16 +36,14 @@ private boolean wrappedCreateResultItemStackIs(ItemStack firstInputStack, Item s
3236
}
3337

3438
@Unique
35-
private boolean isSameToolType(ItemStack stack1, ItemStack stack2) {
36-
return (stack1.is(AXES) && stack2.is(AXES))
37-
|| (stack1.is(HOES) && stack2.is(HOES))
38-
|| (stack1.is(PICKAXES) && stack2.is(PICKAXES))
39-
|| (stack1.is(SHOVELS) && stack2.is(SHOVELS))
40-
|| (stack1.is(SWORDS) && stack2.is(SWORDS))
41-
|| (stack1.is(BOW_TOOLS) && stack2.is(BOW_TOOLS))
42-
|| (stack1.is(CROSSBOW_TOOLS) && stack2.is(CROSSBOW_TOOLS))
43-
|| (stack1.is(FISHING_ROD_TOOLS) && stack2.is(FISHING_ROD_TOOLS))
44-
|| (stack1.is(SHIELD_TOOLS) && stack2.is(SHIELD_TOOLS))
45-
|| (stack1.is(SPEAR_TOOLS) && stack2.is(SPEAR_TOOLS));
39+
private boolean isSameEnchantabilityType(ItemStack stack1, ItemStack stack2) {
40+
List <TagKey<Item>> enchantableTags = new ArrayList<>();
41+
enchantableTags.add(AXES); enchantableTags.add(HOES); enchantableTags.add(PICKAXES); enchantableTags.add(SHOVELS); enchantableTags.add(SWORDS);
42+
enchantableTags.add(BOW_ENCHANTABLE); enchantableTags.add(CROSSBOW_ENCHANTABLE); enchantableTags.add(FISHING_ENCHANTABLE);
43+
enchantableTags.add(SHIELD_TOOLS); enchantableTags.add(SPEAR_TOOLS);
44+
for (TagKey<Item> tag : enchantableTags) {
45+
if (stack1.is(tag) && stack2.is(tag)) return true;
46+
}
47+
return false;
4648
}
4749
}

src/main/resources/fabric.mod.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
]
2323
},
2424
"mixins": [
25+
"mstv-base.mixins.json",
2526
"mstv-base.trade.mixins.json"
2627
],
2728
"accessWidener": "mstv-base.accesswidener",

0 commit comments

Comments
 (0)