From a81d042f23574a9e36aeb8e768d11e5776212b44 Mon Sep 17 00:00:00 2001 From: angel Date: Sat, 17 Jan 2026 14:04:11 -0600 Subject: [PATCH] switch from yarn to minecraft mapping due to 26.1 --- build.gradle | 9 +- .../enchantment/ModEnchantmentEffects.java | 26 ++--- .../effect/CripplingEnchantmentEffect.java | 41 +++---- .../effect/LightningEnchantmentEffect.java | 38 +++---- .../effect/PoisonEnchantmentEffect.java | 36 +++--- .../effect/WitheringEnchantmentEffect.java | 36 +++--- .../more_spear_enchantments/util/ModTags.java | 14 +-- .../fabric/datagen/ModItemTagProvider.java | 10 +- .../enchantment/ModEnchantmentEffects.java | 42 +++---- .../enchantment/ModEnchantmentGenerator.java | 105 +++++++++--------- .../effect/CripplingEnchantmentEffect.java | 52 --------- .../effect/LightningEnchantmentEffect.java | 43 ------- .../effect/PoisonEnchantmentEffect.java | 45 -------- .../effect/WitheringEnchantmentEffect.java | 46 -------- .../fabric/mixin/ExampleMixin.java | 2 +- gradle.properties | 4 +- 16 files changed, 183 insertions(+), 366 deletions(-) delete mode 100644 fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/CripplingEnchantmentEffect.java delete mode 100644 fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/LightningEnchantmentEffect.java delete mode 100644 fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/PoisonEnchantmentEffect.java delete mode 100644 fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/WitheringEnchantmentEffect.java diff --git a/build.gradle b/build.gradle index ee56bf3..3db0d58 100644 --- a/build.gradle +++ b/build.gradle @@ -31,12 +31,13 @@ subprojects { // for more information about repositories. } + loom { + silentMojangMappingsLicense() + } + dependencies { minecraft "net.minecraft:minecraft:$rootProject.minecraft_version" - mappings loom.layered { - it.mappings("net.fabricmc:yarn:$rootProject.yarn_mappings:v2") - it.mappings("dev.architectury:yarn-mappings-patch-neoforge:$rootProject.yarn_mappings_patch_neoforge_version") - } + mappings loom.officialMojangMappings() } java { diff --git a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/ModEnchantmentEffects.java b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/ModEnchantmentEffects.java index 4a8f562..6e3ea8d 100644 --- a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/ModEnchantmentEffects.java +++ b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/ModEnchantmentEffects.java @@ -5,22 +5,22 @@ import dev.architectury.registry.registries.DeferredRegister; import dev.architectury.registry.registries.RegistrySupplier; import dev.sillyangel.more_spear_enchantments.MoreSpearEnchantments; import dev.sillyangel.more_spear_enchantments.enchantment.effect.*; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.util.Identifier; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.effects.EnchantmentEntityEffect; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; public class ModEnchantmentEffects { // Deferred register for enchantment effect types public static final DeferredRegister> ENCHANTMENT_ENTITY_EFFECTS = - DeferredRegister.create(MoreSpearEnchantments.MOD_ID, RegistryKeys.ENCHANTMENT_ENTITY_EFFECT_TYPE); + DeferredRegister.create(MoreSpearEnchantments.MOD_ID, Registries.ENCHANTMENT_ENTITY_EFFECT_TYPE); // Enchantment registry keys - public static final RegistryKey THUNDERING = of("thundering"); - public static final RegistryKey WITHERING = of("withering"); - public static final RegistryKey POISONING = of("poisoning"); - public static final RegistryKey CRIPPLING = of("crippling"); + public static final ResourceKey THUNDERING = of("thundering"); + public static final ResourceKey WITHERING = of("withering"); + public static final ResourceKey POISONING = of("poisoning"); + public static final ResourceKey CRIPPLING = of("crippling"); // Register enchantment effect types public static final RegistrySupplier> LIGHTNING_EFFECT = @@ -32,9 +32,9 @@ public class ModEnchantmentEffects { public static final RegistrySupplier> CRIPPLING_EFFECT = ENCHANTMENT_ENTITY_EFFECTS.register("crippling", () -> CripplingEnchantmentEffect.CODEC); - private static RegistryKey of(String path) { - Identifier id = Identifier.of(MoreSpearEnchantments.MOD_ID, path); - return RegistryKey.of(RegistryKeys.ENCHANTMENT, id); + private static ResourceKey of(String path) { + Identifier id = Identifier.fromNamespaceAndPath(MoreSpearEnchantments.MOD_ID, path); + return ResourceKey.create(Registries.ENCHANTMENT, id); } public static void registerModEnchantmentEffects() { diff --git a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/CripplingEnchantmentEffect.java b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/CripplingEnchantmentEffect.java index 44d33ee..6e34b87 100644 --- a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/CripplingEnchantmentEffect.java +++ b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/CripplingEnchantmentEffect.java @@ -2,40 +2,41 @@ package dev.sillyangel.more_spear_enchantments.enchantment.effect; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.enchantment.LevelBasedValue; +import net.minecraft.world.item.enchantment.effects.EnchantmentEntityEffect; +import net.minecraft.world.item.enchantment.EnchantedItemInUse; +import net.minecraft.world.phys.Vec3; -public record CripplingEnchantmentEffect(EnchantmentLevelBasedValue duration) implements EnchantmentEntityEffect { +public record CripplingEnchantmentEffect(LevelBasedValue duration) implements EnchantmentEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("duration").forGetter(CripplingEnchantmentEffect::duration) + LevelBasedValue.CODEC.fieldOf("duration").forGetter(CripplingEnchantmentEffect::duration) ).apply(instance, CripplingEnchantmentEffect::new) ); @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { + public void apply(ServerLevel world, int level, EnchantedItemInUse context, Entity target, Vec3 pos) { if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - int Duration = (int) (this.duration.getValue(level) * 50); // Convert to ticks + if (context.owner() != null && context.owner() instanceof Player player) { + int Duration = (int) (this.duration.calculate(level) * 50); // Convert to ticks int slownessAmplifier = level - 1; // Level 1 = Slowness 0, Level 2 = Slowness I, Level 3 = Slowness II int weaknessAmplifier = level - 1; // Level 1 = Weakness 0, Level 2 = Weakness I, Level 3 = Weakness II - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.SLOWNESS, + victim.addEffect(new MobEffectInstance( + MobEffects.SLOWNESS, Duration, slownessAmplifier, false, true )); - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.WEAKNESS, + victim.addEffect(new MobEffectInstance( + MobEffects.WEAKNESS, Duration, weaknessAmplifier, false, @@ -46,7 +47,7 @@ public record CripplingEnchantmentEffect(EnchantmentLevelBasedValue duration) im } @Override - public MapCodec getCodec() { + public MapCodec codec() { return CODEC; } } diff --git a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/LightningEnchantmentEffect.java b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/LightningEnchantmentEffect.java index 4e3a186..babcadf 100644 --- a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/LightningEnchantmentEffect.java +++ b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/LightningEnchantmentEffect.java @@ -2,41 +2,41 @@ package dev.sillyangel.more_spear_enchantments.enchantment.effect; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntitySpawnReason; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.enchantment.LevelBasedValue; +import net.minecraft.world.item.enchantment.effects.EnchantmentEntityEffect; +import net.minecraft.world.item.enchantment.EnchantedItemInUse; +import net.minecraft.world.phys.Vec3; -public record LightningEnchantmentEffect(EnchantmentLevelBasedValue amount) implements EnchantmentEntityEffect { +public record LightningEnchantmentEffect(LevelBasedValue amount) implements EnchantmentEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("amount").forGetter(LightningEnchantmentEffect::amount) + LevelBasedValue.CODEC.fieldOf("amount").forGetter(LightningEnchantmentEffect::amount) ).apply(instance, LightningEnchantmentEffect::new) ); @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { + public void apply(ServerLevel world, int level, EnchantedItemInUse context, Entity target, Vec3 pos) { if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - float numStrikes = this.amount.getValue(level); + if (context.owner() != null && context.owner() instanceof Player player) { + float numStrikes = this.amount.calculate(level); for (float i = 0; i < numStrikes; i++) { - BlockPos position = victim.getBlockPos(); - EntityType.LIGHTNING_BOLT.spawn(world, position, SpawnReason.TRIGGERED); + BlockPos position = victim.blockPosition(); + EntityType.LIGHTNING_BOLT.spawn(world, position, EntitySpawnReason.TRIGGERED); } } } } @Override - public MapCodec getCodec() { + public MapCodec codec() { return CODEC; } } diff --git a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/PoisonEnchantmentEffect.java b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/PoisonEnchantmentEffect.java index 69fc2a3..8f31f07 100644 --- a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/PoisonEnchantmentEffect.java +++ b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/PoisonEnchantmentEffect.java @@ -2,33 +2,33 @@ package dev.sillyangel.more_spear_enchantments.enchantment.effect; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.enchantment.LevelBasedValue; +import net.minecraft.world.item.enchantment.effects.EnchantmentEntityEffect; +import net.minecraft.world.item.enchantment.EnchantedItemInUse; +import net.minecraft.world.phys.Vec3; -public record PoisonEnchantmentEffect(EnchantmentLevelBasedValue duration) implements EnchantmentEntityEffect { +public record PoisonEnchantmentEffect(LevelBasedValue duration) implements EnchantmentEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("duration").forGetter(PoisonEnchantmentEffect::duration) + LevelBasedValue.CODEC.fieldOf("duration").forGetter(PoisonEnchantmentEffect::duration) ).apply(instance, PoisonEnchantmentEffect::new) ); @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { + public void apply(ServerLevel world, int level, EnchantedItemInUse context, Entity target, Vec3 pos) { if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - int poisonDuration = (int) (this.duration.getValue(level) * 40); // Convert to ticks + if (context.owner() != null && context.owner() instanceof Player player) { + int poisonDuration = (int) (this.duration.calculate(level) * 40); // Convert to ticks int poisonAmplifier = level - 2; // Level 1 = Poison 0, Level 2 = Poison I, Level 3 = Poison II - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.POISON, + victim.addEffect(new MobEffectInstance( + MobEffects.POISON, poisonDuration, poisonAmplifier, false, @@ -39,7 +39,7 @@ public record PoisonEnchantmentEffect(EnchantmentLevelBasedValue duration) imple } @Override - public MapCodec getCodec() { + public MapCodec codec() { return CODEC; } } diff --git a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/WitheringEnchantmentEffect.java b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/WitheringEnchantmentEffect.java index 7a581f1..7f12dc0 100644 --- a/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/WitheringEnchantmentEffect.java +++ b/common/src/main/java/dev/sillyangel/more_spear_enchantments/enchantment/effect/WitheringEnchantmentEffect.java @@ -2,33 +2,33 @@ package dev.sillyangel.more_spear_enchantments.enchantment.effect; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.enchantment.LevelBasedValue; +import net.minecraft.world.item.enchantment.effects.EnchantmentEntityEffect; +import net.minecraft.world.item.enchantment.EnchantedItemInUse; +import net.minecraft.world.phys.Vec3; -public record WitheringEnchantmentEffect(EnchantmentLevelBasedValue duration) implements EnchantmentEntityEffect { +public record WitheringEnchantmentEffect(LevelBasedValue duration) implements EnchantmentEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("duration").forGetter(WitheringEnchantmentEffect::duration) + LevelBasedValue.CODEC.fieldOf("duration").forGetter(WitheringEnchantmentEffect::duration) ).apply(instance, WitheringEnchantmentEffect::new) ); @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { + public void apply(ServerLevel world, int level, EnchantedItemInUse context, Entity target, Vec3 pos) { if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - int witherDuration = (int) (this.duration.getValue(level) * 40); // Convert to ticks + if (context.owner() != null && context.owner() instanceof Player player) { + int witherDuration = (int) (this.duration.calculate(level) * 40); // Convert to ticks int witherAmplifier = level - 2; // Level 1 = Wither 0, Level 2 = Wither I, Level 3 = Wither II - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.WITHER, + victim.addEffect(new MobEffectInstance( + MobEffects.WITHER, witherDuration, witherAmplifier, false, @@ -39,7 +39,7 @@ public record WitheringEnchantmentEffect(EnchantmentLevelBasedValue duration) im } @Override - public MapCodec getCodec() { + public MapCodec codec() { return CODEC; } } diff --git a/common/src/main/java/dev/sillyangel/more_spear_enchantments/util/ModTags.java b/common/src/main/java/dev/sillyangel/more_spear_enchantments/util/ModTags.java index 5c8f405..e116175 100644 --- a/common/src/main/java/dev/sillyangel/more_spear_enchantments/util/ModTags.java +++ b/common/src/main/java/dev/sillyangel/more_spear_enchantments/util/ModTags.java @@ -1,17 +1,17 @@ package dev.sillyangel.more_spear_enchantments.util; import dev.sillyangel.more_spear_enchantments.MoreSpearEnchantments; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.item.Item; +import net.minecraft.tags.TagKey; +import net.minecraft.resources.Identifier; public class ModTags { public static class Blocks { private static TagKey createTag(String name) { - return TagKey.of(RegistryKeys.BLOCK, Identifier.of(MoreSpearEnchantments.MOD_ID, name)); + return TagKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(MoreSpearEnchantments.MOD_ID, name)); } } @@ -19,7 +19,7 @@ public class ModTags { public static final TagKey SPEARS = createTag("spears"); private static TagKey createTag(String name) { - return TagKey.of(RegistryKeys.ITEM, Identifier.of(MoreSpearEnchantments.MOD_ID, name)); + return TagKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(MoreSpearEnchantments.MOD_ID, name)); } } } \ No newline at end of file diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/datagen/ModItemTagProvider.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/datagen/ModItemTagProvider.java index eb23e5e..de422c9 100644 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/datagen/ModItemTagProvider.java +++ b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/datagen/ModItemTagProvider.java @@ -1,22 +1,20 @@ package dev.sillyangel.more_spear_enchantments.fabric.datagen; import dev.sillyangel.more_spear_enchantments.util.ModTags; -import dev.sillyangel.more_spear_enchantments.MoreSpearEnchantments; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; -import net.minecraft.item.Items; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.tag.ItemTags; +import net.minecraft.core.HolderLookup; +import net.minecraft.world.item.Items; import java.util.concurrent.CompletableFuture; public class ModItemTagProvider extends FabricTagProvider.ItemTagProvider { - public ModItemTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { + public ModItemTagProvider(FabricDataOutput output, CompletableFuture completableFuture) { super(output, completableFuture); } @Override - protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { + protected void addTags(HolderLookup.Provider wrapperLookup) { valueLookupBuilder(ModTags.Items.SPEARS) .add(Items.WOODEN_SPEAR) .add(Items.STONE_SPEAR) diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentEffects.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentEffects.java index 13093ca..2b31730 100644 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentEffects.java +++ b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentEffects.java @@ -3,37 +3,41 @@ package dev.sillyangel.more_spear_enchantments.fabric.enchantment; import com.mojang.serialization.MapCodec; import dev.sillyangel.more_spear_enchantments.MoreSpearEnchantments; import dev.sillyangel.more_spear_enchantments.enchantment.effect.*; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.util.Identifier; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.enchantment.effects.EnchantmentEntityEffect; +import net.minecraft.world.item.enchantment.Enchantment; public class ModEnchantmentEffects { - public static final RegistryKey THUNDERING = of("thundering"); - public static final RegistryKey WITHERING = of("withering"); - public static final RegistryKey POISONING = of("poisoning"); - public static final RegistryKey CRIPPLING = of("crippling"); + public static final ResourceKey THUNDERING = of("thundering"); + public static MapCodec LIGHTNING_EFFECT = register("lightning_effect", LightningEnchantmentEffect.CODEC); + public static final ResourceKey WITHERING = of("withering"); + public static MapCodec WITHERING_EFFECT = register("withering_effect", WitheringEnchantmentEffect.CODEC); + public static final ResourceKey POISONING = of("poisoning"); + public static MapCodec POISONING_EFFECT = register("poisoning_effect", PoisonEnchantmentEffect.CODEC); + public static final ResourceKey CRIPPLING = of("crippling"); + public static MapCodec CRIPPLING_EFFECT = register("crippling_effect", CripplingEnchantmentEffect.CODEC); - private static RegistryKey of(String path) { - Identifier id = Identifier.of(MoreSpearEnchantments.MOD_ID, path); - return RegistryKey.of(RegistryKeys.ENCHANTMENT, id); + private static ResourceKey of(String path) { + Identifier id = Identifier.fromNamespaceAndPath(MoreSpearEnchantments.MOD_ID, path); + return ResourceKey.create(Registries.ENCHANTMENT, id); } private static MapCodec register(String id, MapCodec codec) { - return Registry.register(Registries.ENCHANTMENT_ENTITY_EFFECT_TYPE, Identifier.of(MoreSpearEnchantments.MOD_ID, id), codec); + return Registry.register(BuiltInRegistries.ENCHANTMENT_ENTITY_EFFECT_TYPE, Identifier.fromNamespaceAndPath(MoreSpearEnchantments.MOD_ID, id), codec); } public static void registerModEnchantmentEffects() { MoreSpearEnchantments.LOGGER.info("Registering EnchantmentEffects for " + MoreSpearEnchantments.MOD_ID); - register("lightning", LightningEnchantmentEffect.CODEC); - register("poison", PoisonEnchantmentEffect.CODEC); - register("withering", WitheringEnchantmentEffect.CODEC); - register("crippling", CripplingEnchantmentEffect.CODEC); +// register("lightning", LightningEnchantmentEffect.CODEC); +// register("poison", PoisonEnchantmentEffect.CODEC); +// register("withering", WitheringEnchantmentEffect.CODEC); +// register("crippling", CripplingEnchantmentEffect.CODEC); } } diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentGenerator.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentGenerator.java index c65016d..cabafe2 100644 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentGenerator.java +++ b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/ModEnchantmentGenerator.java @@ -5,111 +5,112 @@ import dev.sillyangel.more_spear_enchantments.enchantment.effect.*; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider; import net.fabricmc.fabric.api.resource.conditions.v1.ResourceCondition; -import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.RegistryKey; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.effect.EnchantmentEffectTarget; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.component.type.AttributeModifierSlot; -import net.minecraft.component.EnchantmentEffectComponentTypes; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentTarget; +import net.minecraft.world.item.enchantment.LevelBasedValue; +import net.minecraft.world.item.enchantment.LevelBasedValue.Linear; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.item.enchantment.EnchantmentEffectComponents; import java.util.concurrent.CompletableFuture; public class ModEnchantmentGenerator extends FabricDynamicRegistryProvider { - public ModEnchantmentGenerator(FabricDataOutput output, CompletableFuture registriesFuture) { + public ModEnchantmentGenerator(FabricDataOutput output, CompletableFuture registriesFuture) { super(output, registriesFuture); System.out.println("REGISTERING ENCHANTS"); } @Override - protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) { + protected void configure(HolderLookup.Provider registries, Entries entries) { // Our new enchantment, "Thundering." - register(entries, ModEnchantmentEffects.THUNDERING, Enchantment.builder( + register(entries, ModEnchantmentEffects.THUNDERING, Enchantment.enchantment( Enchantment.definition( - registries.getOrThrow(RegistryKeys.ITEM).getOrThrow(ModTags.Items.SPEARS), + registries.lookupOrThrow(Registries.ITEM).getOrThrow(ModTags.Items.SPEARS), // this is the "weight" or probability of our enchantment showing up in the table 10, // the maximum level of the enchantment 3, // base cost for level 1 of the enchantment, and min levels required for something higher - Enchantment.leveledCost(1, 10), + Enchantment.dynamicCost(1, 10), // same fields as above but for max cost - Enchantment.leveledCost(1, 15), + Enchantment.dynamicCost(1, 15), // anvil cost 5, // valid slots - AttributeModifierSlot.HAND + EquipmentSlotGroup.HAND ) ) - .addEffect( + .withEffect( // enchantment occurs POST_ATTACK - EnchantmentEffectComponentTypes.POST_ATTACK, - EnchantmentEffectTarget.ATTACKER, - EnchantmentEffectTarget.VICTIM, - new LightningEnchantmentEffect(EnchantmentLevelBasedValue.linear(0.4f, 0.2f)) // scale the enchantment linearly. + EnchantmentEffectComponents.POST_ATTACK, + EnchantmentTarget.ATTACKER, + EnchantmentTarget.VICTIM, + new LightningEnchantmentEffect(LevelBasedValue.perLevel(0.4f, 0.2f)) // scale the enchantment linearly. ) ); - register(entries, ModEnchantmentEffects.POISONING, Enchantment.builder( + register(entries, ModEnchantmentEffects.POISONING, Enchantment.enchantment( Enchantment.definition( - registries.getOrThrow(RegistryKeys.ITEM).getOrThrow(ModTags.Items.SPEARS), + registries.lookupOrThrow(Registries.ITEM).getOrThrow(ModTags.Items.SPEARS), 10, 3, - Enchantment.leveledCost(1, 10), - Enchantment.leveledCost(1, 15), + Enchantment.dynamicCost(1, 10), + Enchantment.dynamicCost(1, 15), 5, - AttributeModifierSlot.HAND + EquipmentSlotGroup.HAND ) ) - .addEffect( - EnchantmentEffectComponentTypes.POST_ATTACK, - EnchantmentEffectTarget.ATTACKER, - EnchantmentEffectTarget.VICTIM, - new PoisonEnchantmentEffect(EnchantmentLevelBasedValue.linear(3.0f, 1.0f)) // 3s base, +1s per level + .withEffect( + EnchantmentEffectComponents.POST_ATTACK, + EnchantmentTarget.ATTACKER, + EnchantmentTarget.VICTIM, + new PoisonEnchantmentEffect(LevelBasedValue.perLevel(3.0f, 1.0f)) // 3s base, +1s per level ) ); // Our new enchantment, "Withering." - register(entries, ModEnchantmentEffects.WITHERING, Enchantment.builder( + register(entries, ModEnchantmentEffects.WITHERING, Enchantment.enchantment( Enchantment.definition( - registries.getOrThrow(RegistryKeys.ITEM).getOrThrow(ModTags.Items.SPEARS), + registries.lookupOrThrow(Registries.ITEM).getOrThrow(ModTags.Items.SPEARS), 10, 3, - Enchantment.leveledCost(1, 10), - Enchantment.leveledCost(1, 15), + Enchantment.dynamicCost(1, 10), + Enchantment.dynamicCost(1, 15), 5, - AttributeModifierSlot.HAND + EquipmentSlotGroup.HAND ) ) - .addEffect( - EnchantmentEffectComponentTypes.POST_ATTACK, - EnchantmentEffectTarget.ATTACKER, - EnchantmentEffectTarget.VICTIM, - new WitheringEnchantmentEffect(EnchantmentLevelBasedValue.linear(2.0f, 1.0f)) // 2s base, +1s per level + .withEffect( + EnchantmentEffectComponents.POST_ATTACK, + EnchantmentTarget.ATTACKER, + EnchantmentTarget.VICTIM, + new WitheringEnchantmentEffect(LevelBasedValue.perLevel(2.0f, 1.0f)) // 2s base, +1s per level ) ); // Our new enchantment, "Crippling." - register(entries, ModEnchantmentEffects.CRIPPLING, Enchantment.builder( + register(entries, ModEnchantmentEffects.CRIPPLING, Enchantment.enchantment( Enchantment.definition( - registries.getOrThrow(RegistryKeys.ITEM).getOrThrow(ModTags.Items.SPEARS), + registries.lookupOrThrow(Registries.ITEM).getOrThrow(ModTags.Items.SPEARS), 10, 3, - Enchantment.leveledCost(1, 10), - Enchantment.leveledCost(1, 15), + Enchantment.dynamicCost(1, 10), + Enchantment.dynamicCost(1, 15), 5, - AttributeModifierSlot.HAND + EquipmentSlotGroup.HAND ) ) - .addEffect( - EnchantmentEffectComponentTypes.POST_ATTACK, - EnchantmentEffectTarget.ATTACKER, - EnchantmentEffectTarget.VICTIM, - new CripplingEnchantmentEffect(EnchantmentLevelBasedValue.linear(2.0f, 1.0f)) // 2s base, +1s per leve + .withEffect( + EnchantmentEffectComponents.POST_ATTACK, + EnchantmentTarget.ATTACKER, + EnchantmentTarget.VICTIM, + new CripplingEnchantmentEffect(LevelBasedValue.perLevel(2.0f, 1.0f)) // 2s base, +1s per leve ) ); } - private void register(Entries entries, RegistryKey key, Enchantment.Builder builder, ResourceCondition... resourceConditions) { - entries.add(key, builder.build(key.getValue()), resourceConditions); + private void register(Entries entries, ResourceKey key, Enchantment.Builder builder, ResourceCondition... resourceConditions) { + entries.add(key, builder.build(key.identifier()), resourceConditions); //idk, im going insane } @Override diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/CripplingEnchantmentEffect.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/CripplingEnchantmentEffect.java deleted file mode 100644 index 5d6083e..0000000 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/CripplingEnchantmentEffect.java +++ /dev/null @@ -1,52 +0,0 @@ -package dev.sillyangel.more_spear_enchantments.fabric.enchantment.effect; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; - -public record CripplingEnchantmentEffect(EnchantmentLevelBasedValue duration) implements EnchantmentEntityEffect { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> - instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("duration").forGetter(CripplingEnchantmentEffect::duration) - ).apply(instance, CripplingEnchantmentEffect::new) - ); - - @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { - if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - int Duration = (int) (this.duration.getValue(level) * 50); // Convert to ticks - int slownessAmplifier = level - 1; // Level 1 = Slowness 0, Level 2 = Slowness I, Level 3 = Slowness II - int weaknessAmplifier = level - 1; // Level 1 = Weakness 0, Level 2 = Weakness I, Level 3 = Weakness II - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.SLOWNESS, - Duration, - slownessAmplifier, - false, - true - )); - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.WEAKNESS, - Duration, - weaknessAmplifier, - false, - true - )); - } - } - } - - @Override - public MapCodec getCodec() { - return CODEC; - } -} diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/LightningEnchantmentEffect.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/LightningEnchantmentEffect.java deleted file mode 100644 index 6078bac..0000000 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/LightningEnchantmentEffect.java +++ /dev/null @@ -1,43 +0,0 @@ -package dev.sillyangel.more_spear_enchantments.fabric.enchantment.effect; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; - -public record LightningEnchantmentEffect(EnchantmentLevelBasedValue amount) implements EnchantmentEntityEffect { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> - instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("amount").forGetter(LightningEnchantmentEffect::amount) - ).apply(instance, LightningEnchantmentEffect::new) - ); - - @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { - if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - float numStrikes = this.amount.getValue(level); - - for (float i = 0; i < numStrikes; i++) { - BlockPos position = victim.getBlockPos(); - EntityType.LIGHTNING_BOLT.spawn(world, position, SpawnReason.TRIGGERED); - } - } - } - } - - @Override - public MapCodec getCodec() { - return CODEC; - } -} - diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/PoisonEnchantmentEffect.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/PoisonEnchantmentEffect.java deleted file mode 100644 index f3fb822..0000000 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/PoisonEnchantmentEffect.java +++ /dev/null @@ -1,45 +0,0 @@ -package dev.sillyangel.more_spear_enchantments.fabric.enchantment.effect; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; - -public record PoisonEnchantmentEffect(EnchantmentLevelBasedValue duration) implements EnchantmentEntityEffect { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> - instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("duration").forGetter(PoisonEnchantmentEffect::duration) - ).apply(instance, PoisonEnchantmentEffect::new) - ); - - @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { - if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - int poisonDuration = (int) (this.duration.getValue(level) * 40); // Convert to ticks - int poisonAmplifier = level - 2; // Level 1 = Poison 0, Level 2 = Poison I, Level 3 = Poison II - - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.POISON, - poisonDuration, - poisonAmplifier, - false, - true - )); - } - } - } - - @Override - public MapCodec getCodec() { - return CODEC; - } -} diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/WitheringEnchantmentEffect.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/WitheringEnchantmentEffect.java deleted file mode 100644 index 4fa1d23..0000000 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/enchantment/effect/WitheringEnchantmentEffect.java +++ /dev/null @@ -1,46 +0,0 @@ -package dev.sillyangel.more_spear_enchantments.fabric.enchantment.effect; - -import com.mojang.serialization.MapCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.enchantment.EnchantmentEffectContext; -import net.minecraft.enchantment.EnchantmentLevelBasedValue; -import net.minecraft.enchantment.effect.EnchantmentEntityEffect; -import net.minecraft.util.math.Vec3d; - -public record WitheringEnchantmentEffect(EnchantmentLevelBasedValue duration) implements EnchantmentEntityEffect { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> - instance.group( - EnchantmentLevelBasedValue.CODEC.fieldOf("duration").forGetter(WitheringEnchantmentEffect::duration) - ).apply(instance, WitheringEnchantmentEffect::new) - ); - - @Override - public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity target, Vec3d pos) { - if (target instanceof LivingEntity victim) { - if (context.owner() != null && context.owner() instanceof PlayerEntity player) { - int witherDuration = (int) (this.duration.getValue(level) * 40); // Convert to ticks - int witherAmplifier = level - 2; // Level 1 = Wither 0, Level 2 = Wither I, Level 3 = Wither II - - victim.addStatusEffect(new StatusEffectInstance( - StatusEffects.WITHER, - witherDuration, - witherAmplifier, - false, - true - )); - } - } - } - - @Override - public MapCodec getCodec() { - return CODEC; - } -} - diff --git a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/mixin/ExampleMixin.java b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/mixin/ExampleMixin.java index bbe2c54..2b4c61f 100644 --- a/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/mixin/ExampleMixin.java +++ b/fabric/src/main/java/dev/sillyangel/more_spear_enchantments/fabric/mixin/ExampleMixin.java @@ -8,7 +8,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MinecraftServer.class) public class ExampleMixin { - @Inject(at = @At("HEAD"), method = "loadWorld") + @Inject(at = @At("HEAD"), method = "loadLevel") private void init(CallbackInfo info) { // This code is injected into the start of MinecraftServer.loadWorld()V } diff --git a/gradle.properties b/gradle.properties index 96023bf..dd4e53f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,18 +3,16 @@ org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true # Mod properties -mod_version = 1.0.1 +mod_version = 1.1.0 maven_group = dev.sillyangel.more_spear_enchantments archives_name = more_spear_enchantments enabled_platforms = fabric,neoforge # Minecraft properties minecraft_version = 1.21.11 -yarn_mappings = 1.21.11+build.3 # Dependencies architectury_api_version = 19.0.1 fabric_loader_version = 0.18.4 fabric_api_version = 0.140.2+1.21.11 neoforge_version = 21.11.17-beta -yarn_mappings_patch_neoforge_version = 1.21+build.6