Skip to content

Commit 8f603db

Browse files
committed
Account for the various enchantment based changes
1 parent ed7fa95 commit 8f603db

File tree

9 files changed

+50
-32
lines changed

9 files changed

+50
-32
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ minecraft_version=1.21
99
previous_minecraft_version=1.20.4
1010
previous_minor_minecraft_version=1.20.6
1111
loader_version_range=[4,)
12-
forge_version=21.0.0-alpha.1.21-rc1.20240612.183440
12+
forge_version=21.0.0-alpha.1.21-rc1.20240613.054156
1313
mod_version=10.5.20
1414
#This determines the minimum version of forge required to use Mekanism
1515
# Only bump it whenever we need access to a feature in forge that is not available in earlier versions

src/main/java/mekanism/common/item/gear/ItemAtomicDisassembler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import mekanism.common.util.MekanismUtils;
4646
import mekanism.common.util.StorageUtils;
4747
import net.minecraft.core.BlockPos;
48+
import net.minecraft.core.Holder;
4849
import net.minecraft.core.component.DataComponentType;
4950
import net.minecraft.core.component.DataComponents;
5051
import net.minecraft.core.registries.BuiltInRegistries;
@@ -292,7 +293,7 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
292293
}
293294

294295
@Override
295-
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
296+
public boolean isPrimaryItemFor(ItemStack stack, Holder<Enchantment> enchantment) {
296297
return false;
297298
}
298299

src/main/java/mekanism/common/item/gear/ItemElectricBow.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package mekanism.common.item.gear;
22

33
import java.util.List;
4+
import java.util.Optional;
45
import java.util.function.Consumer;
56
import javax.annotation.Nullable;
67
import mekanism.api.Action;
@@ -17,6 +18,8 @@
1718
import mekanism.common.util.StorageUtils;
1819
import mekanism.common.util.text.BooleanStateDisplay.OnOff;
1920
import net.minecraft.core.Holder;
21+
import net.minecraft.core.Holder.Reference;
22+
import net.minecraft.core.HolderLookup.RegistryLookup;
2023
import net.minecraft.core.component.DataComponentType;
2124
import net.minecraft.network.chat.Component;
2225
import net.minecraft.server.level.ServerLevel;
@@ -74,11 +77,10 @@ protected void shoot(@NotNull ServerLevel world, @NotNull LivingEntity entity, @
7477
}
7578

7679
@Override
77-
public boolean canApplyAtEnchantingTable(@NotNull ItemStack stack, @NotNull Enchantment enchantment) {
80+
public boolean isPrimaryItemFor(@NotNull ItemStack stack, @NotNull Holder<Enchantment> enchantment) {
7881
//Note: This stops application of it via enchanted books while in survival. We don't override isBookEnchantable as we don't care
7982
// if someone enchants it in creative and would rather not stop players from enchanting with books that have flame and power on them
80-
//TODO - 1.21: Re-enable after https://github.com/neoforged/NeoForge/pull/1089
81-
return /*enchantment != Enchantments.FLAME &&*/ super.canApplyAtEnchantingTable(stack, enchantment);
83+
return !enchantment.is(Enchantments.FLAME) && super.isPrimaryItemFor(stack, enchantment);
8284
}
8385

8486
@Override
@@ -93,14 +95,19 @@ public int getEnchantmentLevel(@NotNull ItemStack stack, @NotNull Holder<Enchant
9395

9496
@NotNull
9597
@Override
96-
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack) {
97-
ItemEnchantments enchantments = super.getAllEnchantments(stack);
98-
//TODO - 1.21: Re-enable after https://github.com/neoforged/NeoForge/pull/1089
99-
/*if (getMode(stack) && enchantments.getLevel(Enchantments.FLAME) == 0) {
100-
ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(enchantments);
101-
mutable.set(Enchantments.FLAME, 1);
102-
return mutable.toImmutable();
103-
}*/
98+
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack, @NotNull RegistryLookup<Enchantment> lookup) {
99+
ItemEnchantments enchantments = super.getAllEnchantments(stack, lookup);
100+
if (getMode(stack)) {
101+
Optional<Reference<Enchantment>> enchantment = lookup.get(Enchantments.FLAME);
102+
if (enchantment.isPresent()) {
103+
Holder<Enchantment> flame = enchantment.get();
104+
if (enchantments.getLevel(flame) == 0){
105+
ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(enchantments);
106+
mutable.set(flame, 1);
107+
return mutable.toImmutable();
108+
}
109+
}
110+
}
104111
return enchantments;
105112
}
106113

src/main/java/mekanism/common/item/gear/ItemFlamethrower.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import mekanism.common.util.ChemicalUtil;
2828
import mekanism.common.util.MekanismUtils;
2929
import mekanism.common.util.StorageUtils;
30+
import net.minecraft.core.Holder;
3031
import net.minecraft.core.component.DataComponentType;
3132
import net.minecraft.network.chat.Component;
3233
import net.minecraft.network.codec.ByteBufCodecs;
@@ -209,7 +210,7 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
209210
}
210211

211212
@Override
212-
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
213+
public boolean isPrimaryItemFor(ItemStack stack, Holder<Enchantment> enchantment) {
213214
return false;
214215
}
215216

src/main/java/mekanism/common/item/gear/ItemFreeRunners.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import io.netty.buffer.ByteBuf;
55
import java.util.List;
66
import java.util.Locale;
7+
import java.util.Optional;
78
import java.util.function.Consumer;
89
import java.util.function.IntFunction;
910
import mekanism.api.IIncrementalEnum;
@@ -22,6 +23,8 @@
2223
import mekanism.common.registries.MekanismDataComponents;
2324
import mekanism.common.util.StorageUtils;
2425
import net.minecraft.core.Holder;
26+
import net.minecraft.core.Holder.Reference;
27+
import net.minecraft.core.HolderLookup.RegistryLookup;
2528
import net.minecraft.core.component.DataComponentType;
2629
import net.minecraft.network.chat.Component;
2730
import net.minecraft.network.codec.ByteBufCodecs;
@@ -103,15 +106,18 @@ public int getEnchantmentLevel(@NotNull ItemStack stack, @NotNull Holder<Enchant
103106

104107
@NotNull
105108
@Override
106-
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack) {
107-
ItemEnchantments enchantments = super.getAllEnchantments(stack);
108-
//TODO - 1.21: Re-enable after https://github.com/neoforged/NeoForge/pull/1089
109-
/*int fakeLevel = getFakeEnchantmentLevel(stack, Enchantments.SOUL_SPEED);
110-
if (enchantments.getLevel(Enchantments.SOUL_SPEED) < fakeLevel) {
111-
ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(enchantments);
112-
mutable.set(Enchantments.SOUL_SPEED, fakeLevel);
113-
return mutable.toImmutable();
114-
}*/
109+
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack, @NotNull RegistryLookup<Enchantment> lookup) {
110+
ItemEnchantments enchantments = super.getAllEnchantments(stack, lookup);
111+
Optional<Reference<Enchantment>> enchantment = lookup.get(Enchantments.SOUL_SPEED);
112+
if (enchantment.isPresent()) {
113+
Holder<Enchantment> soulSpeed = enchantment.get();
114+
int fakeLevel = getFakeEnchantmentLevel(stack, soulSpeed);
115+
if (enchantments.getLevel(soulSpeed) < fakeLevel) {
116+
ItemEnchantments.Mutable mutable = new ItemEnchantments.Mutable(enchantments);
117+
mutable.set(soulSpeed, fakeLevel);
118+
return mutable.toImmutable();
119+
}
120+
}
115121
return enchantments;
116122
}
117123

src/main/java/mekanism/common/item/gear/ItemHazmatSuitArmor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import mekanism.common.capabilities.radiation.item.RadiationShieldingHandler;
66
import mekanism.common.integration.gender.GenderCapabilityHelper;
77
import mekanism.common.registries.MekanismArmorMaterials;
8+
import net.minecraft.core.Holder;
89
import net.minecraft.world.item.ArmorItem;
910
import net.minecraft.world.item.ItemStack;
1011
import net.minecraft.world.item.Rarity;
@@ -45,7 +46,7 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
4546
}
4647

4748
@Override
48-
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
49-
return isEnchantable(stack) && super.canApplyAtEnchantingTable(stack, enchantment);
49+
public boolean isPrimaryItemFor(ItemStack stack, Holder<Enchantment> enchantment) {
50+
return isEnchantable(stack) && super.isPrimaryItemFor(stack, enchantment);
5051
}
5152
}

src/main/java/mekanism/common/item/gear/ItemMekaSuitArmor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import mekanism.common.util.StorageUtils;
6262
import net.minecraft.SharedConstants;
6363
import net.minecraft.core.Holder;
64+
import net.minecraft.core.HolderLookup.RegistryLookup;
6465
import net.minecraft.core.Registry;
6566
import net.minecraft.core.registries.Registries;
6667
import net.minecraft.network.chat.Component;
@@ -233,8 +234,8 @@ public int getEnchantmentLevel(ItemStack stack, Holder<Enchantment> enchantment)
233234

234235
@NotNull
235236
@Override
236-
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack) {
237-
ItemEnchantments enchantments = super.getAllEnchantments(stack);
237+
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack, RegistryLookup<Enchantment> lookup) {
238+
ItemEnchantments enchantments = super.getAllEnchantments(stack, lookup);
238239
IModuleContainer container = IModuleHelper.INSTANCE.getModuleContainer(stack);
239240
if (container != null) {
240241
ItemEnchantments moduleEnchantments = container.moduleBasedEnchantments();

src/main/java/mekanism/common/item/gear/ItemMekaTool.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import mekanism.common.util.StorageUtils;
4747
import net.minecraft.core.BlockPos;
4848
import net.minecraft.core.Holder;
49+
import net.minecraft.core.HolderLookup.RegistryLookup;
4950
import net.minecraft.core.component.DataComponents;
5051
import net.minecraft.core.registries.BuiltInRegistries;
5152
import net.minecraft.network.chat.Component;
@@ -175,8 +176,8 @@ public int getEnchantmentLevel(ItemStack stack, Holder<Enchantment> enchantment)
175176

176177
@NotNull
177178
@Override
178-
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack) {
179-
ItemEnchantments enchantments = super.getAllEnchantments(stack);
179+
public ItemEnchantments getAllEnchantments(@NotNull ItemStack stack, RegistryLookup<Enchantment> lookup) {
180+
ItemEnchantments enchantments = super.getAllEnchantments(stack, lookup);
180181
IModuleContainer container = IModuleHelper.INSTANCE.getModuleContainer(stack);
181182
if (container != null) {
182183
ItemEnchantments moduleEnchantments = container.moduleBasedEnchantments();
@@ -456,7 +457,7 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
456457
}
457458

458459
@Override
459-
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
460+
public boolean isPrimaryItemFor(ItemStack stack, Holder<Enchantment> enchantment) {
460461
return false;
461462
}
462463

src/main/java/mekanism/common/item/gear/ItemSpecialArmor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
2828
}
2929

3030
@Override
31-
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
32-
return isEnchantable(stack) && super.canApplyAtEnchantingTable(stack, enchantment);
31+
public boolean isPrimaryItemFor(ItemStack stack, Holder<Enchantment> enchantment) {
32+
return isEnchantable(stack) && super.isPrimaryItemFor(stack, enchantment);
3333
}
3434

3535
@Override

0 commit comments

Comments
 (0)