From 66d82ab6093cc46b543fb564145e8e226dcc4ad0 Mon Sep 17 00:00:00 2001 From: stellanera Date: Wed, 24 Dec 2025 03:40:43 +0100 Subject: [PATCH] initial stuff --- .../java/wayoftime/bloodmagic/Datagen.java | 15 +- .../datagen/content/AltarTiers.java | 20 +- ...yDamageSources.java => BMDamageTypes.java} | 34 +-- .../datagen/content/ImperfectRitualData.java | 8 +- .../datagen/content/LivingUpgrades.java | 270 ++++++++---------- .../content/datamap/BloodRuneData.java | 2 +- .../datagen/content/datamap/LivingData.java | 2 +- .../datagen/provider/BMBlockTagProvider.java | 4 +- .../datagen/provider/BMItemTagProvider.java | 4 +- .../bloodmagic/imperfect_rituals/zombie.json | 12 +- .../bloodmagic/api/BMIdentifiers.java | 69 ++++- .../{common/tag => api}/BMTags.java | 9 +- .../registry => api/altar}/AltarTier.java | 8 +- .../{util => api/altar}/EnumRuneType.java | 2 +- .../caps => api/capability}/IRunePowers.java | 4 +- .../datacomponent/Binding.java | 3 +- .../datacomponent/LivingStats.java | 18 +- .../{util => api/helper}/RitualUtil.java | 2 +- .../helper/SoulNetworkHelper.java | 4 +- .../api/living/LivingEntityEffect.java | 21 ++ .../api/living/LivingValueEffect.java | 21 ++ .../api/ritual/ImperfectRitualEffect.java | 26 ++ .../{util => api/soulnetwork}/SoulTicket.java | 2 +- .../bloodmagic/common/block/BMBlocks.java | 2 +- .../common/block/ImperfectRitualBlock.java | 10 +- .../common/blockentity/ARCTile.java | 2 +- .../common/blockentity/BloodAltarTile.java | 15 +- .../common/blockentity/HellfireForgeTile.java | 6 +- .../common/blockentity/LivingStationTile.java | 8 +- .../bloodmagic/common/caps/BMCaps.java | 1 + .../common/command/LivingUpgradesCommand.java | 29 +- .../common/command/SoulNetworkCommand.java | 5 +- .../bloodmagic/common/creativetab/BMTabs.java | 8 +- .../common/damagesource/BMDamageSources.java | 15 - .../datacomponent/BMDataComponents.java | 8 +- .../common/datacomponent/SoulNetwork.java | 6 +- .../bloodmagic/common/datamap/BloodRune.java | 3 +- .../common/datamap/LivingArmorData.java | 6 +- .../common/event/CommonEventHandler.java | 2 +- .../bloodmagic/common/item/BloodOrbItem.java | 6 +- .../bloodmagic/common/item/SigilItem.java | 6 +- .../common/living/LivingEffectComponents.java | 6 +- .../common/living/LivingEntityEffect.java | 45 --- .../common/living/LivingEntityEffects.java | 34 +++ .../common/living/LivingEventHandler.java | 8 +- .../common/living/LivingHelper.java | 8 +- .../common/living/LivingUpgrade.java | 7 +- .../common/living/LivingValueEffect.java | 39 --- .../common/living/LivingValueEffects.java | 28 ++ .../common/living/effects/AddMobEffect.java | 2 +- .../common/living/effects/AddValue.java | 2 +- .../living/effects/CauseExhaustionEffect.java | 2 +- .../common/living/effects/CooldownEffect.java | 2 +- .../common/living/effects/DelegateEffect.java | 4 +- .../living/effects/DistanceExpGain.java | 3 +- .../living/effects/EatingExpEffect.java | 3 +- .../common/living/effects/EntityBasedExp.java | 2 +- .../effects/ItemDamageBasedExpGain.java | 2 +- .../living/effects/MovementModifier.java | 2 +- .../living/effects/MultiplyIncreaseValue.java | 2 +- .../living/effects/MultiplyReduceValue.java | 2 +- .../effects/RandomArmourDamageEffect.java | 2 +- .../living/effects/RemoveMobEffect.java | 2 +- .../living/effects/ResetCooldownEffect.java | 2 +- .../common/living/effects/ValueBasedExp.java | 2 +- .../common/menu/LivingStationMenu.java | 4 +- .../common/recipe/forge/ForgeRecipe.java | 2 +- .../common/registry/BMRegistries.java | 41 +-- .../ritual/imperfect/ApplyPotionEffect.java | 1 + .../imperfect/ImperfectRitualEffect.java | 40 --- .../imperfect/ImperfectRitualEffects.java | 24 ++ .../ritual/imperfect/SetTimeEffect.java | 1 + .../ritual/imperfect/SpawnMobEffect.java | 1 + .../common/sigil/DivinationEffect.java | 6 +- .../bloodmagic/common/tag/TagsCache.java | 7 +- .../wayoftime/bloodmagic/util/AltarUtil.java | 14 +- 76 files changed, 520 insertions(+), 530 deletions(-) rename src/datagen/java/wayoftime/bloodmagic/datagen/content/{BloodyDamageSources.java => BMDamageTypes.java} (50%) rename src/main/java/wayoftime/bloodmagic/{common/tag => api}/BMTags.java (94%) rename src/main/java/wayoftime/bloodmagic/{common/registry => api/altar}/AltarTier.java (84%) rename src/main/java/wayoftime/bloodmagic/{util => api/altar}/EnumRuneType.java (93%) rename src/main/java/wayoftime/bloodmagic/{common/caps => api/capability}/IRunePowers.java (54%) rename src/main/java/wayoftime/bloodmagic/{common => api}/datacomponent/Binding.java (95%) rename src/main/java/wayoftime/bloodmagic/{common => api}/datacomponent/LivingStats.java (77%) rename src/main/java/wayoftime/bloodmagic/{util => api/helper}/RitualUtil.java (93%) rename src/main/java/wayoftime/bloodmagic/{util => api}/helper/SoulNetworkHelper.java (94%) create mode 100644 src/main/java/wayoftime/bloodmagic/api/living/LivingEntityEffect.java create mode 100644 src/main/java/wayoftime/bloodmagic/api/living/LivingValueEffect.java create mode 100644 src/main/java/wayoftime/bloodmagic/api/ritual/ImperfectRitualEffect.java rename src/main/java/wayoftime/bloodmagic/{util => api/soulnetwork}/SoulTicket.java (98%) delete mode 100644 src/main/java/wayoftime/bloodmagic/common/damagesource/BMDamageSources.java delete mode 100644 src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffect.java create mode 100644 src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffects.java delete mode 100644 src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffect.java create mode 100644 src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffects.java delete mode 100644 src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffect.java create mode 100644 src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffects.java diff --git a/src/datagen/java/wayoftime/bloodmagic/Datagen.java b/src/datagen/java/wayoftime/bloodmagic/Datagen.java index 6b97be0e29..dc7ea6263e 100644 --- a/src/datagen/java/wayoftime/bloodmagic/Datagen.java +++ b/src/datagen/java/wayoftime/bloodmagic/Datagen.java @@ -9,9 +9,8 @@ import net.neoforged.neoforge.common.data.ExistingFileHelper; import net.neoforged.neoforge.data.event.GatherDataEvent; import wayoftime.bloodmagic.api.BMIdentifiers.RegistryKeys; -import wayoftime.bloodmagic.common.registry.BMRegistries; import wayoftime.bloodmagic.datagen.content.AltarTiers; -import wayoftime.bloodmagic.datagen.content.BloodyDamageSources; +import wayoftime.bloodmagic.datagen.content.BMDamageTypes; import wayoftime.bloodmagic.datagen.content.ImperfectRitualData; import wayoftime.bloodmagic.datagen.content.LivingUpgrades; import wayoftime.bloodmagic.datagen.content.SigilData; @@ -32,17 +31,17 @@ public static void gatherData(GatherDataEvent event) { event.createProvider(BMLanguageProvider::new); event.createDatapackRegistryObjects(new RegistrySetBuilder() - .add(Registries.DAMAGE_TYPE, BloodyDamageSources::bootstrap) - .add(BMRegistries.Keys.ALTAR_TIER_KEY, AltarTiers::bootstrap) - .add(BMRegistries.Keys.LIVING_UPGRADES, LivingUpgrades::bootstrap) - .add(BMRegistries.Keys.IMPERFECT_RITUALS, ImperfectRitualData::effects) + .add(Registries.DAMAGE_TYPE, BMDamageTypes::types) + .add(RegistryKeys.ALTAR_TIER_KEY, AltarTiers::tiers) + .add(RegistryKeys.LIVING_UPGRADES, LivingUpgrades::upgrades) + .add(RegistryKeys.IMPERFECT_RITUALS, ImperfectRitualData::effects) .add(RegistryKeys.SIGIL_EFFECT, SigilData::sigilTypes) ); ProviderHelper helper = new ProviderHelper(fileHelper); - event.createProvider(helper.tagsFor(BMRegistries.Keys.LIVING_UPGRADES, LivingUpgrades::tags)); - event.createProvider(helper.tagsFor(Registries.DAMAGE_TYPE, BloodyDamageSources::tags)); + event.createProvider(helper.tagsFor(RegistryKeys.LIVING_UPGRADES, LivingUpgrades::tags)); + event.createProvider(helper.tagsFor(Registries.DAMAGE_TYPE, BMDamageTypes::tags)); event.createBlockAndItemTags(BMBlockTagProvider::new, BMItemTagProvider::new); event.createProvider(BMDataMapProvider::new); diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/content/AltarTiers.java b/src/datagen/java/wayoftime/bloodmagic/datagen/content/AltarTiers.java index 5c0541a120..154c9c0696 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/content/AltarTiers.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/content/AltarTiers.java @@ -5,13 +5,13 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ExtraCodecs.TagOrElementLocation; import wayoftime.bloodmagic.BloodMagic; -import wayoftime.bloodmagic.common.registry.AltarTier; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.altar.AltarTier; +import wayoftime.bloodmagic.api.BMTags; public class AltarTiers { - public static void bootstrap(BootstrapContext builder) { + public static void tiers(BootstrapContext builder) { builder.register(Keys.APPRENTICE, APPRENTICE); builder.register(Keys.MAGE, MAGE); builder.register(Keys.MASTER, MASTER); @@ -24,12 +24,12 @@ protected static ResourceLocation bm(String path) { } public static class Keys { - public static final ResourceKey WEAK = ResourceKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, Locs.WEAK); - public static final ResourceKey APPRENTICE = ResourceKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, Locs.APPRENTICE); - public static final ResourceKey MAGE = ResourceKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, Locs.MAGE); - public static final ResourceKey MASTER = ResourceKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, Locs.MASTER); - public static final ResourceKey ARCHMAGE = ResourceKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, Locs.ARCHMAGE); - public static final ResourceKey TRANSCENDENT = ResourceKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, Locs.TRANSCENDENT); + public static final ResourceKey WEAK = ResourceKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, Locs.WEAK); + public static final ResourceKey APPRENTICE = ResourceKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, Locs.APPRENTICE); + public static final ResourceKey MAGE = ResourceKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, Locs.MAGE); + public static final ResourceKey MASTER = ResourceKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, Locs.MASTER); + public static final ResourceKey ARCHMAGE = ResourceKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, Locs.ARCHMAGE); + public static final ResourceKey TRANSCENDENT = ResourceKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, Locs.TRANSCENDENT); } public static class Locs { diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/content/BloodyDamageSources.java b/src/datagen/java/wayoftime/bloodmagic/datagen/content/BMDamageTypes.java similarity index 50% rename from src/datagen/java/wayoftime/bloodmagic/datagen/content/BloodyDamageSources.java rename to src/datagen/java/wayoftime/bloodmagic/datagen/content/BMDamageTypes.java index 903c9b9b2a..01ff7de441 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/content/BloodyDamageSources.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/content/BMDamageTypes.java @@ -6,40 +6,40 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.damagesource.DamageScaling; import net.minecraft.world.damagesource.DamageType; -import wayoftime.bloodmagic.common.damagesource.BMDamageSources; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMIdentifiers.DamageTypes; +import wayoftime.bloodmagic.api.BMTags; import java.util.function.Function; -public class BloodyDamageSources { - public static void bootstrap(BootstrapContext context) { - context.register(BMDamageSources.SACRIFICE, new DamageType("sacrifice", DamageScaling.NEVER, 0F)); - context.register(BMDamageSources.SELF_SACRIFICE, new DamageType("self_sacrifice", DamageScaling.NEVER, 0F)); +public class BMDamageTypes { + public static void types(BootstrapContext context) { + context.register(DamageTypes.SACRIFICE, new DamageType("sacrifice", DamageScaling.NEVER, 0F)); + context.register(DamageTypes.SELF_SACRIFICE, new DamageType("self_sacrifice", DamageScaling.NEVER, 0F)); } public static void tags(Function, TagsProvider.TagAppender> setter) { setter.apply(DamageTypeTags.BYPASSES_ARMOR) - .add(BMDamageSources.SELF_SACRIFICE) - .add(BMDamageSources.SACRIFICE); + .add(DamageTypes.SELF_SACRIFICE) + .add(DamageTypes.SACRIFICE); setter.apply(DamageTypeTags.BYPASSES_EFFECTS) - .add(BMDamageSources.SELF_SACRIFICE) - .add(BMDamageSources.SACRIFICE); + .add(DamageTypes.SELF_SACRIFICE) + .add(DamageTypes.SACRIFICE); setter.apply(DamageTypeTags.BYPASSES_INVULNERABILITY) - .add(BMDamageSources.SELF_SACRIFICE) - .add(BMDamageSources.SACRIFICE); + .add(DamageTypes.SELF_SACRIFICE) + .add(DamageTypes.SACRIFICE); setter.apply(DamageTypeTags.NO_IMPACT) - .add(BMDamageSources.SELF_SACRIFICE) - .add(BMDamageSources.SACRIFICE); + .add(DamageTypes.SELF_SACRIFICE) + .add(DamageTypes.SACRIFICE); setter.apply(DamageTypeTags.NO_KNOCKBACK) - .add(BMDamageSources.SELF_SACRIFICE) - .add(BMDamageSources.SACRIFICE); + .add(DamageTypes.SELF_SACRIFICE) + .add(DamageTypes.SACRIFICE); setter.apply(BMTags.DamageTypes.SELF_SACRIFICE) - .add(BMDamageSources.SELF_SACRIFICE); // needed later for damage predicates + .add(DamageTypes.SELF_SACRIFICE); // needed later for damage predicates setter.apply(BMTags.DamageTypes.TOUGH_IGNORED) .addTag(DamageTypeTags.IS_FIRE) diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/content/ImperfectRitualData.java b/src/datagen/java/wayoftime/bloodmagic/datagen/content/ImperfectRitualData.java index af3e722fbe..28a197ec4e 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/content/ImperfectRitualData.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/content/ImperfectRitualData.java @@ -8,16 +8,14 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.storage.loot.BuiltInLootTables; import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.data.DataMapProvider; import net.neoforged.neoforge.registries.datamaps.DataMapType; -import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.api.BMIdentifiers.ImperfectRituals; import wayoftime.bloodmagic.common.datamap.BMDataMaps; -import wayoftime.bloodmagic.common.registry.BMRegistries; import wayoftime.bloodmagic.common.ritual.imperfect.ApplyPotionEffect; -import wayoftime.bloodmagic.common.ritual.imperfect.ImperfectRitualEffect; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; import wayoftime.bloodmagic.common.ritual.imperfect.SetTimeEffect; import wayoftime.bloodmagic.common.ritual.imperfect.SpawnMobEffect; @@ -40,7 +38,7 @@ public static void effects(BootstrapContext context) { } private static ResourceKey key(ResourceLocation id) { - return ResourceKey.create(BMRegistries.Keys.IMPERFECT_RITUALS, id); + return ResourceKey.create(BMIdentifiers.RegistryKeys.IMPERFECT_RITUALS, id); } public static void dataMap(Function, DataMapProvider.Builder> setup) { diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/content/LivingUpgrades.java b/src/datagen/java/wayoftime/bloodmagic/datagen/content/LivingUpgrades.java index 55d0d41a40..c629298b87 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/content/LivingUpgrades.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/content/LivingUpgrades.java @@ -22,14 +22,15 @@ import net.neoforged.neoforge.attachment.AttachmentHolder; import net.neoforged.neoforge.common.NeoForgeMod; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.BMIdentifiers.Upgrades; import wayoftime.bloodmagic.common.attribute.BMAttributes; import wayoftime.bloodmagic.common.dataattachment.BMDataAttachments; import wayoftime.bloodmagic.common.living.effects.CauseExhaustionEffect; import wayoftime.bloodmagic.common.living.LivingEffectComponents; import wayoftime.bloodmagic.common.living.LivingUpgrade; import wayoftime.bloodmagic.common.living.effects.*; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import java.util.ArrayList; import java.util.List; @@ -39,63 +40,30 @@ import java.util.function.Function; public class LivingUpgrades { - // Downgrades - public static final ResourceKey BATTLE_HUNGRY = key("battle_hungry"); - public static final ResourceKey CRIPPLED_ARM = key("crippled_arm"); - public static final ResourceKey DIG_SLOWDOWN = key("dig_slowdown"); - public static final ResourceKey MELEE_DECREASE = key("melee_decrease"); - public static final ResourceKey QUENCHED = key("quenched"); - public static final ResourceKey SLOW_HEAL = key("slow_heal"); - public static final ResourceKey SPEED_DECREASE = key("speed_decrease"); - public static final ResourceKey STORM_TROOPER = key("storm_trooper"); - public static final ResourceKey SWIM_DECREASE = key("swim_decrease"); - // Upgrades - public static final ResourceKey ARROW_PROTECT = key("arrow_protect"); - public static final ResourceKey CURIOS_SOCKET = key("curios_socket"); - public static final ResourceKey NETHERITE_PROTECT = key("netherite_protect"); - public static final ResourceKey DIGGING = key("digging"); - public static final ResourceKey ELYTRA = key("elytra"); - public static final ResourceKey EXPERIENCED = key("experienced"); - public static final ResourceKey FALL_PROTECT = key("fall_protect"); - public static final ResourceKey FIRE_RESIST = key("fire_resist"); - public static final ResourceKey GILDED = key("gilded"); - public static final ResourceKey HEALTH = key("health"); - public static final ResourceKey JUMP = key("jump"); - public static final ResourceKey KNOCKBACK_RESIST = key("knockback_resist"); - public static final ResourceKey MELEE_DAMAGE = key("melee_damage"); - public static final ResourceKey PHYSICAL_PROTECT = key("physical_protect"); - public static final ResourceKey POISON_RESIST = key("poison_resist"); - public static final ResourceKey REPAIR = key("repair"); - public static final ResourceKey SELF_SACRIFICE = key("self_sacrifice"); - public static final ResourceKey SPEED = key("speed"); - public static final ResourceKey SPRINT_ATTACK = key("sprint_attack"); - - public static final ResourceKey LUCK = key("luck"); - - public static void bootstrap(BootstrapContext context) { + public static void upgrades(BootstrapContext context) { context.register( - BATTLE_HUNGRY, + Upgrades.BATTLE_HUNGRY, new LivingUpgrade.Builder() .level(1, -10) .level(2, -20) .level(3, -30) .level(4, -40) .level(5, -50) - .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(BATTLE_HUNGRY.location())) - .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(BATTLE_HUNGRY.location(), LevelBasedValue.constant(20), Optional.of(new CauseExhaustionEffect(LevelBasedValue.lookup(List.of(0.02F, 0.04F, 0.06F, 0.08F, 0.1F), LevelBasedValue.constant(0))))), cooldownCondition(BATTLE_HUNGRY)) - .withEffect(LivingEffectComponents.DEALING_DAMAGE.get(), new DelegateEffect(new ResetCooldownEffect(BATTLE_HUNGRY.location(), LevelBasedValue.lookup(List.of(600f, 600f, 600f, 500f, 400f), LevelBasedValue.constant(300)), Optional.empty()))) + .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(Upgrades.BATTLE_HUNGRY.location())) + .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(Upgrades.BATTLE_HUNGRY.location(), LevelBasedValue.constant(20), Optional.of(new CauseExhaustionEffect(LevelBasedValue.lookup(List.of(0.02F, 0.04F, 0.06F, 0.08F, 0.1F), LevelBasedValue.constant(0))))), cooldownCondition(Upgrades.BATTLE_HUNGRY)) + .withEffect(LivingEffectComponents.DEALING_DAMAGE.get(), new DelegateEffect(new ResetCooldownEffect(Upgrades.BATTLE_HUNGRY.location(), LevelBasedValue.lookup(List.of(600f, 600f, 600f, 500f, 400f), LevelBasedValue.constant(300)), Optional.empty()))) .build() ); context.register( - CRIPPLED_ARM, + Upgrades.CRIPPLED_ARM, new LivingUpgrade.Builder() .level(1, -150) .withEffect(LivingEffectComponents.CRIPPLED_ARM.get()) .build() ); context.register( - DIG_SLOWDOWN, + Upgrades.DIG_SLOWDOWN, new LivingUpgrade.Builder() .level(1, -10) .level(2, -17) @@ -107,11 +75,11 @@ public static void bootstrap(BootstrapContext context) { .level(8, -125) .level(9, -160) .level(10, -200) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(DIG_SLOWDOWN.location(), Attributes.BLOCK_BREAK_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.3f, -0.4f, -0.45f, -0.5f, -0.6f, -0.65f, -0.7f, -0.8f), LevelBasedValue.constant(-0.8f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.DIG_SLOWDOWN.location(), Attributes.BLOCK_BREAK_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.3f, -0.4f, -0.45f, -0.5f, -0.6f, -0.65f, -0.7f, -0.8f), LevelBasedValue.constant(-0.8f)))) .build() ); context.register( - MELEE_DECREASE, + Upgrades.MELEE_DECREASE, new LivingUpgrade.Builder() .level(1, -10) .level(2, -17) @@ -123,18 +91,18 @@ public static void bootstrap(BootstrapContext context) { .level(8, -125) .level(9, -160) .level(10, -200) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(MELEE_DECREASE.location(), Attributes.ATTACK_DAMAGE, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.25f, -0.3f, -0.35f, -0.4f, -0.5f, -0.6f, -0.7f, -0.8f), LevelBasedValue.constant(-0.8f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.MELEE_DECREASE.location(), Attributes.ATTACK_DAMAGE, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.25f, -0.3f, -0.35f, -0.4f, -0.5f, -0.6f, -0.7f, -0.8f), LevelBasedValue.constant(-0.8f)))) .build() ); context.register( - QUENCHED, + Upgrades.QUENCHED, new LivingUpgrade.Builder() .level(1, -100) .withEffect(LivingEffectComponents.QUENCHED.get()) .build() ); context.register( - SLOW_HEAL, + Upgrades.SLOW_HEAL, new LivingUpgrade.Builder() .level(1, -10) .level(2, -17) @@ -150,7 +118,7 @@ public static void bootstrap(BootstrapContext context) { .build() ); context.register( - SPEED_DECREASE, + Upgrades.SPEED_DECREASE, new LivingUpgrade.Builder() .level(1, -10) .level(2, -17) @@ -162,11 +130,11 @@ public static void bootstrap(BootstrapContext context) { .level(8, -125) .level(9, -160) .level(10, -200) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(SPEED_DECREASE.location(), Attributes.MOVEMENT_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.3f, -0.4f, -0.45f, -0.5f, -0.6f, -0.65f, -0.7f, -0.8f), LevelBasedValue.constant(-0.8f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.SPEED_DECREASE.location(), Attributes.MOVEMENT_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.3f, -0.4f, -0.45f, -0.5f, -0.6f, -0.65f, -0.7f, -0.8f), LevelBasedValue.constant(-0.8f)))) .build() ); context.register( - STORM_TROOPER, + Upgrades.STORM_TROOPER, new LivingUpgrade.Builder() .level(1, -10) .level(2, -25) @@ -177,7 +145,7 @@ public static void bootstrap(BootstrapContext context) { .build() ); context.register( - SWIM_DECREASE, + Upgrades.SWIM_DECREASE, new LivingUpgrade.Builder() .level(1, -10) .level(2, -17) @@ -189,7 +157,7 @@ public static void bootstrap(BootstrapContext context) { .level(8, -125) .level(9, -160) .level(10, -200) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(SWIM_DECREASE.location(), NeoForgeMod.SWIM_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.25f, -0.3f, -0.35f, -0.4f, -0.5f, -0.6f, -0.7f, -0.8f), LevelBasedValue.constant(-0.9f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.SWIM_DECREASE.location(), NeoForgeMod.SWIM_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.1f, -0.2f, -0.25f, -0.3f, -0.35f, -0.4f, -0.5f, -0.6f, -0.7f, -0.8f), LevelBasedValue.constant(-0.9f)))) .build() ); LootItemCondition.Builder arrowDamage = DamageSourceCondition.hasDamageSource( @@ -198,7 +166,7 @@ public static void bootstrap(BootstrapContext context) { .tag(TagPredicate.is(DamageTypeTags.IS_PROJECTILE)) ); context.register( - ARROW_PROTECT, + Upgrades.ARROW_PROTECT, new LivingUpgrade.Builder() .level(30, 4) .level(200, 9) @@ -222,7 +190,7 @@ public static void bootstrap(BootstrapContext context) { ); */ context.register( - NETHERITE_PROTECT, + Upgrades.NETHERITE_PROTECT, new LivingUpgrade.Builder() // TODO 6 dias = 1 xp, 1 1xp tome netherite upgraded = 1000xp .level(1, 6) .level(2, 10) @@ -232,12 +200,12 @@ public static void bootstrap(BootstrapContext context) { .level(2000, 55) .level(3000, 70) .level(4000, 85) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(NETHERITE_PROTECT.location(), Attributes.ARMOR, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(1f, 3f, 4f, 5f, 5f, 5f, 5f, 5f), LevelBasedValue.constant(0f)))) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(NETHERITE_PROTECT.location(), Attributes.ARMOR_TOUGHNESS, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(2f, 4f, 6f, 8f, 9f, 10f, 11f, 12f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.NETHERITE_PROTECT.location(), Attributes.ARMOR, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(1f, 3f, 4f, 5f, 5f, 5f, 5f, 5f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.NETHERITE_PROTECT.location(), Attributes.ARMOR_TOUGHNESS, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(2f, 4f, 6f, 8f, 9f, 10f, 11f, 12f), LevelBasedValue.constant(0f)))) .build() ); context.register( - DIGGING, + Upgrades.DIGGING, new LivingUpgrade.Builder() .level(128, 5) .level(512, 10) @@ -249,19 +217,19 @@ public static void bootstrap(BootstrapContext context) { .level(50000, 180) .level(80000, 240) .level(150000, 300) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(DIGGING.location(), Attributes.MINING_EFFICIENCY, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 1f, 1.2f, 1.5f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.DIGGING.location(), Attributes.MINING_EFFICIENCY, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 1f, 1.2f, 1.5f), LevelBasedValue.constant(0f)))) .withEffect(LivingEffectComponents.BREAK_BLOCK.get(), new AddMobEffect(MobEffects.DIG_SPEED, LevelBasedValue.lookup(List.of(0f, 0f, 0f, 1f, 1f, 1f, 1f, 1f, 2f, 2f), LevelBasedValue.constant(0)), LevelBasedValue.lookup(List.of(0f, 50f, 60f, 100f, 100f, 100f, 100f, 150f, 150f, 150f), LevelBasedValue.constant(0)))) .build() ); context.register( - ELYTRA, + Upgrades.ELYTRA, new LivingUpgrade.Builder() .level(1, 15) .withEffect(LivingEffectComponents.ELYTRA.get()) .build() ); context.register( - EXPERIENCED, + Upgrades.EXPERIENCED, new LivingUpgrade.Builder() .level(100, 7) .level(400, 13) @@ -282,7 +250,7 @@ public static void bootstrap(BootstrapContext context) { .tag(TagPredicate.is(DamageTypeTags.IS_FALL)) ); context.register( - FALL_PROTECT, + Upgrades.FALL_PROTECT, new LivingUpgrade.Builder() .level(30, 2) .level(200, 5) @@ -293,26 +261,26 @@ public static void bootstrap(BootstrapContext context) { .build() ); context.register( - FIRE_RESIST, + Upgrades.FIRE_RESIST, new LivingUpgrade.Builder() .level(1200, 2) .level(3600, 6) .level(12000, 14) .level(24000, 25) .level(30000, 40) - .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(FIRE_RESIST.location())) - .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(FIRE_RESIST.location(), LevelBasedValue.lookup(List.of(6000f, 4800f, 4800f, 3600f, 2400f), LevelBasedValue.constant(6000)), Optional.of(new AddMobEffect(MobEffects.FIRE_RESISTANCE, LevelBasedValue.constant(0f), LevelBasedValue.lookup(List.of(600f, 600f, 800f, 1000f, 1200f), LevelBasedValue.constant(0))))), AllOfCondition.allOf(cooldownCondition(FIRE_RESIST), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setOnFire(true))))) + .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(Upgrades.FIRE_RESIST.location())) + .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(Upgrades.FIRE_RESIST.location(), LevelBasedValue.lookup(List.of(6000f, 4800f, 4800f, 3600f, 2400f), LevelBasedValue.constant(6000)), Optional.of(new AddMobEffect(MobEffects.FIRE_RESISTANCE, LevelBasedValue.constant(0f), LevelBasedValue.lookup(List.of(600f, 600f, 800f, 1000f, 1200f), LevelBasedValue.constant(0))))), AllOfCondition.allOf(cooldownCondition(Upgrades.FIRE_RESIST), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setOnFire(true))))) .build() ); context.register( - GILDED, + Upgrades.GILDED, new LivingUpgrade.Builder() .level(1, 5) .withEffect(LivingEffectComponents.GILDED.get()) .build() ); context.register( - HEALTH, + Upgrades.HEALTH, new LivingUpgrade.Builder() .level(80, 5) .level(200, 12) @@ -324,11 +292,11 @@ public static void bootstrap(BootstrapContext context) { .level(5000, 160) .level(7600, 215) .level(10000, 320) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(HEALTH.location(), Attributes.MAX_HEALTH, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(4f, 8f, 12f, 16f, 20f, 26f, 32f, 38f, 44f, 50f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.HEALTH.location(), Attributes.MAX_HEALTH, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(4f, 8f, 12f, 16f, 20f, 26f, 32f, 38f, 44f, 50f), LevelBasedValue.constant(0f)))) .build() ); context.register( - JUMP, + Upgrades.JUMP, new LivingUpgrade.Builder() .level(30, 3) .level(200, 6) @@ -340,24 +308,24 @@ public static void bootstrap(BootstrapContext context) { .level(2800, 100) .level(3600, 140) .level(5000, 200) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(JUMP.location(), Attributes.JUMP_STRENGTH, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.7f, 0.75f, 0.9f, 1.1f, 1.3f), LevelBasedValue.constant(0f)))) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(JUMP.location(), Attributes.FALL_DAMAGE_MULTIPLIER, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.33f, -0.4f, -0.45f, -0.5f, -0.55f, -0.6f, -0.65f, -0.75f, -0.85f, -0.95f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.JUMP.location(), Attributes.JUMP_STRENGTH, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.7f, 0.75f, 0.9f, 1.1f, 1.3f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.JUMP.location(), Attributes.FALL_DAMAGE_MULTIPLIER, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(-0.33f, -0.4f, -0.45f, -0.5f, -0.55f, -0.6f, -0.65f, -0.75f, -0.85f, -0.95f), LevelBasedValue.constant(0f)))) .build() ); context.register( - KNOCKBACK_RESIST, + Upgrades.KNOCKBACK_RESIST, new LivingUpgrade.Builder() .level(100, 3) .level(200, 7) .level(300, 13) .level(500, 26) .level(1000, 42) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(KNOCKBACK_RESIST.location(), Attributes.MAX_HEALTH, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(0f, 0f, 0f, 4f, 10f), LevelBasedValue.constant(0f)))) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(KNOCKBACK_RESIST.location(), Attributes.KNOCKBACK_RESISTANCE, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(0.2f, 0.4f, 0.6f, 0.8f, 1f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.KNOCKBACK_RESIST.location(), Attributes.MAX_HEALTH, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(0f, 0f, 0f, 4f, 10f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.KNOCKBACK_RESIST.location(), Attributes.KNOCKBACK_RESISTANCE, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(0.2f, 0.4f, 0.6f, 0.8f, 1f), LevelBasedValue.constant(0f)))) .build() ); context.register( - MELEE_DAMAGE, + Upgrades.MELEE_DAMAGE, new LivingUpgrade.Builder() .level(200, 5) .level(800, 12) @@ -369,7 +337,7 @@ public static void bootstrap(BootstrapContext context) { .level(9200, 160) .level(11500, 215) .level(14000, 320) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(MELEE_DAMAGE.location(), Attributes.ATTACK_DAMAGE, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(0.5f, 1f, 1.5f, 2f, 2.5f, 3f, 4f, 5f, 6f, 7f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.MELEE_DAMAGE.location(), Attributes.ATTACK_DAMAGE, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(0.5f, 1f, 1.5f, 2f, 2.5f, 3f, 4f, 5f, 6f, 7f), LevelBasedValue.constant(0f)))) .build() ); LootItemCondition.Builder physicalDamage = DamageSourceCondition.hasDamageSource( @@ -378,7 +346,7 @@ public static void bootstrap(BootstrapContext context) { .tag(TagPredicate.isNot(BMTags.DamageTypes.TOUGH_IGNORED)) ); context.register( - PHYSICAL_PROTECT, + Upgrades.PHYSICAL_PROTECT, new LivingUpgrade.Builder() .level(30, 5) .level(200, 10) @@ -394,27 +362,27 @@ public static void bootstrap(BootstrapContext context) { .build() ); context.register( - POISON_RESIST, + Upgrades.POISON_RESIST, new LivingUpgrade.Builder() .level(1200, 2) .level(3600, 6) .level(12000, 14) .level(24000, 25) .level(30000, 40) - .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(POISON_RESIST.location())) - .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(POISON_RESIST.location(), LevelBasedValue.lookup(List.of(1200f, 800f, 600f, 300f, 100f), LevelBasedValue.constant(1200)), Optional.of(new RemoveMobEffect(MobEffects.POISON, LevelBasedValue.lookup(List.of(0f, 1f, 2f, 2f, 3f), LevelBasedValue.constant(0))))), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().effects(new MobEffectsPredicate.Builder().and(MobEffects.POISON)))) + .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(Upgrades.POISON_RESIST.location())) + .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(Upgrades.POISON_RESIST.location(), LevelBasedValue.lookup(List.of(1200f, 800f, 600f, 300f, 100f), LevelBasedValue.constant(1200)), Optional.of(new RemoveMobEffect(MobEffects.POISON, LevelBasedValue.lookup(List.of(0f, 1f, 2f, 2f, 3f), LevelBasedValue.constant(0))))), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().effects(new MobEffectsPredicate.Builder().and(MobEffects.POISON)))) .build() ); context.register( - REPAIR, + Upgrades.REPAIR, new LivingUpgrade.Builder() .level(10, 25) - .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(REPAIR.location())) - .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(REPAIR.location(), LevelBasedValue.constant(100), Optional.of(new RandomArmourDamageEffect(LevelBasedValue.constant(-2)))), cooldownCondition(REPAIR)) + .withEffect(LivingEffectComponents.TICK.get(), new CooldownEffect(Upgrades.REPAIR.location())) + .withEffect(LivingEffectComponents.TICK.get(), new ResetCooldownEffect(Upgrades.REPAIR.location(), LevelBasedValue.constant(100), Optional.of(new RandomArmourDamageEffect(LevelBasedValue.constant(-2)))), cooldownCondition(Upgrades.REPAIR)) .build() ); context.register( - SELF_SACRIFICE, + Upgrades.SELF_SACRIFICE, new LivingUpgrade.Builder() .level(30, 7) .level(200, 13) @@ -426,11 +394,11 @@ public static void bootstrap(BootstrapContext context) { .level(2800, 180) .level(3600, 250) .level(5000, 350) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(SELF_SACRIFICE.location(), BMAttributes.SELF_SACRIFICE_MULTIPLIER.getDelegate(), Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.15f, 0.3f, 0.45f, 0.6f, 0.75f, 0.9f, 1.05f, 1.2f, 1.35f, 1.5f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.SELF_SACRIFICE.location(), BMAttributes.SELF_SACRIFICE_MULTIPLIER.getDelegate(), Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.15f, 0.3f, 0.45f, 0.6f, 0.75f, 0.9f, 1.05f, 1.2f, 1.35f, 1.5f), LevelBasedValue.constant(0f)))) .build() ); context.register( - SPEED, + Upgrades.SPEED, new LivingUpgrade.Builder() .level(200, 3) .level(1000, 7) @@ -442,12 +410,12 @@ public static void bootstrap(BootstrapContext context) { .level(35000, 130) .level(50000, 180) .level(70000, 250) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(SPEED.location(), Attributes.MOVEMENT_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.9f, 1.1f, 1.3f, 1.5f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.SPEED.location(), Attributes.MOVEMENT_SPEED, Operation.ADD_MULTIPLIED_BASE, LevelBasedValue.lookup(List.of(0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.9f, 1.1f, 1.3f, 1.5f), LevelBasedValue.constant(0f)))) .withEffect(LivingEffectComponents.TICK.get(), new AddMobEffect(MobEffects.MOVEMENT_SPEED, LevelBasedValue.lookup(List.of(0f, 0f, 0f, 0f, 0f, 0f, 0f, 1f, 1f, 2f), LevelBasedValue.constant(0)), LevelBasedValue.lookup(List.of(0f, 0f, 0f, 0f, 0f, 20f, 60f, 60f, 100f, 200f), LevelBasedValue.constant(0))), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setSprinting(true)))) .build() ); context.register( - SPRINT_ATTACK, + Upgrades.SPRINT_ATTACK, new LivingUpgrade.Builder() .level(200, 3) .level(400, 7) @@ -460,121 +428,121 @@ public static void bootstrap(BootstrapContext context) { ); context.register( - LUCK, // TODO add this to demon dungeon loot tables + Upgrades.LUCK, // TODO add this to demon dungeon loot tables new LivingUpgrade.Builder() .level(1, 10) .level(2, 25) .level(3, 40) .level(4, 65) .level(5, 90) - .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(LUCK.location(), Attributes.LUCK, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(2f, 4f, 6f, 8f, 10f), LevelBasedValue.constant(0f)))) + .withEffect(LivingEffectComponents.ATTRIBUTES.get(), new AttributeEffect(Upgrades.LUCK.location(), Attributes.LUCK, Operation.ADD_VALUE, LevelBasedValue.lookup(List.of(2f, 4f, 6f, 8f, 10f), LevelBasedValue.constant(0f)))) .build() ); - HolderGetter lookup = context.lookup(BMRegistries.Keys.LIVING_UPGRADES); + HolderGetter lookup = context.lookup(BMIdentifiers.RegistryKeys.LIVING_UPGRADES); context.register( - exp(ARROW_PROTECT), + exp(Upgrades.ARROW_PROTECT), new LivingUpgrade.Builder() - .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(ARROW_PROTECT), ValueBasedExp.THIS_ENTITY), arrowDamage) + .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.ARROW_PROTECT), ValueBasedExp.THIS_ENTITY), arrowDamage) .build() ); context.register( - exp(PHYSICAL_PROTECT), + exp(Upgrades.PHYSICAL_PROTECT), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(PHYSICAL_PROTECT), ValueBasedExp.THIS_ENTITY), physicalDamage) + .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.PHYSICAL_PROTECT), ValueBasedExp.THIS_ENTITY), physicalDamage) .build() ); context.register( - exp(FALL_PROTECT), + exp(Upgrades.FALL_PROTECT), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(FALL_PROTECT), ValueBasedExp.THIS_ENTITY), fallDamage) + .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.FALL_PROTECT), ValueBasedExp.THIS_ENTITY), fallDamage) .build() ); context.register( - exp(DIGGING), + exp(Upgrades.DIGGING), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.BREAK_BLOCK.get(), new EntityBasedExp(lookup.getOrThrow(DIGGING))) + .withEffect(LivingEffectComponents.BREAK_BLOCK.get(), new EntityBasedExp(lookup.getOrThrow(Upgrades.DIGGING))) .build() ); context.register( - exp(EXPERIENCED), + exp(Upgrades.EXPERIENCED), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.EXP_PICKUP.get(), new ValueBasedExp(lookup.getOrThrow(EXPERIENCED), ValueBasedExp.THIS_ENTITY)) + .withEffect(LivingEffectComponents.EXP_PICKUP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.EXPERIENCED), ValueBasedExp.THIS_ENTITY)) .build() ); context.register( - exp(FIRE_RESIST), + exp(Upgrades.FIRE_RESIST), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.TICK.get(), new EntityBasedExp(lookup.getOrThrow(FIRE_RESIST)), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setOnFire(true)))) + .withEffect(LivingEffectComponents.TICK.get(), new EntityBasedExp(lookup.getOrThrow(Upgrades.FIRE_RESIST)), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setOnFire(true)))) .build() ); context.register( - exp(HEALTH), + exp(Upgrades.HEALTH), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.HEALING.get(), new ValueBasedExp(lookup.getOrThrow(HEALTH), ValueBasedExp.THIS_ENTITY)) + .withEffect(LivingEffectComponents.HEALING.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.HEALTH), ValueBasedExp.THIS_ENTITY)) .build() ); context.register( - exp(JUMP), + exp(Upgrades.JUMP), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.TICK.get(), new DistanceExpGain(lookup.getOrThrow(JUMP), DistanceExpGain.Movement.VERTICAL), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setIsFlying(false).setOnGround(false)))) + .withEffect(LivingEffectComponents.TICK.get(), new DistanceExpGain(lookup.getOrThrow(Upgrades.JUMP), DistanceExpGain.Movement.VERTICAL), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setIsFlying(false).setOnGround(false)))) .build() ); context.register( - exp(KNOCKBACK_RESIST), + exp(Upgrades.KNOCKBACK_RESIST), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.TICK.get(), new EatingExpEffect(lookup.getOrThrow(KNOCKBACK_RESIST))) + .withEffect(LivingEffectComponents.TICK.get(), new EatingExpEffect(lookup.getOrThrow(Upgrades.KNOCKBACK_RESIST))) .build() ); context.register( - exp(MELEE_DAMAGE), + exp(Upgrades.MELEE_DAMAGE), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.DAMAGE_DEALT_EXP.get(), new ValueBasedExp(lookup.getOrThrow(MELEE_DAMAGE), ValueBasedExp.ATTACKER)) + .withEffect(LivingEffectComponents.DAMAGE_DEALT_EXP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.MELEE_DAMAGE), ValueBasedExp.ATTACKER)) .build() ); context.register( - exp(POISON_RESIST), + exp(Upgrades.POISON_RESIST), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.TICK.get(), new EntityBasedExp(lookup.getOrThrow(POISON_RESIST)), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().effects(new MobEffectsPredicate.Builder().and(MobEffects.POISON)))) + .withEffect(LivingEffectComponents.TICK.get(), new EntityBasedExp(lookup.getOrThrow(Upgrades.POISON_RESIST)), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().effects(new MobEffectsPredicate.Builder().and(MobEffects.POISON)))) .build() ); context.register( - exp(REPAIR), + exp(Upgrades.REPAIR), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.TICK.get(), new ItemDamageBasedExpGain(lookup.getOrThrow(REPAIR))) + .withEffect(LivingEffectComponents.TICK.get(), new ItemDamageBasedExpGain(lookup.getOrThrow(Upgrades.REPAIR))) .build() ); context.register( - exp(SELF_SACRIFICE), + exp(Upgrades.SELF_SACRIFICE), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(SELF_SACRIFICE), ValueBasedExp.THIS_ENTITY), DamageSourceCondition.hasDamageSource(new DamageSourcePredicate.Builder().tag(TagPredicate.is(BMTags.DamageTypes.SELF_SACRIFICE)))) + .withEffect(LivingEffectComponents.DAMAGE_TAKEN_EXP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.SELF_SACRIFICE), ValueBasedExp.THIS_ENTITY), DamageSourceCondition.hasDamageSource(new DamageSourcePredicate.Builder().tag(TagPredicate.is(BMTags.DamageTypes.SELF_SACRIFICE)))) .build() ); context.register( - exp(SPEED), + exp(Upgrades.SPEED), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.TICK.get(), new DistanceExpGain(lookup.getOrThrow(SPEED), DistanceExpGain.Movement.HORIZONTAL), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setOnGround(true)))) + .withEffect(LivingEffectComponents.TICK.get(), new DistanceExpGain(lookup.getOrThrow(Upgrades.SPEED), DistanceExpGain.Movement.HORIZONTAL), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.THIS, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setOnGround(true)))) .build() ); context.register( - exp(SPRINT_ATTACK), + exp(Upgrades.SPRINT_ATTACK), new LivingUpgrade.Builder() .level(1, 0) - .withEffect(LivingEffectComponents.DAMAGE_DEALT_EXP.get(), new ValueBasedExp(lookup.getOrThrow(SPRINT_ATTACK), ValueBasedExp.ATTACKER), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.ATTACKER, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setSprinting(true)))) + .withEffect(LivingEffectComponents.DAMAGE_DEALT_EXP.get(), new ValueBasedExp(lookup.getOrThrow(Upgrades.SPRINT_ATTACK), ValueBasedExp.ATTACKER), LootItemEntityPropertyCondition.hasProperties(LootContext.EntityTarget.ATTACKER, new EntityPredicate.Builder().flags(new EntityFlagsPredicate.Builder().setSprinting(true)))) .build() ); } @@ -587,8 +555,8 @@ private static ResourceKey exp(ResourceKey key) { } // TODO order these alphabetical by *english* translation - private static final List> downgrades = List.of(BATTLE_HUNGRY, CRIPPLED_ARM, DIG_SLOWDOWN, MELEE_DECREASE, QUENCHED, SLOW_HEAL, SPEED_DECREASE, STORM_TROOPER, SWIM_DECREASE); - private static final List> upgrades = List.of(ARROW_PROTECT, DIGGING, ELYTRA, EXPERIENCED, FALL_PROTECT, FIRE_RESIST, GILDED, HEALTH, JUMP, KNOCKBACK_RESIST, LUCK, MELEE_DAMAGE, NETHERITE_PROTECT, PHYSICAL_PROTECT, POISON_RESIST, REPAIR, SELF_SACRIFICE, SPEED, SPRINT_ATTACK); + private static final List> downgrades = List.of(Upgrades.BATTLE_HUNGRY, Upgrades.CRIPPLED_ARM, Upgrades.DIG_SLOWDOWN, Upgrades.MELEE_DECREASE, Upgrades.QUENCHED, Upgrades.SLOW_HEAL, Upgrades.SPEED_DECREASE, Upgrades.STORM_TROOPER, Upgrades.SWIM_DECREASE); + private static final List> upgrades = List.of(Upgrades.ARROW_PROTECT, Upgrades.DIGGING, Upgrades.ELYTRA, Upgrades.EXPERIENCED, Upgrades.FALL_PROTECT, Upgrades.FIRE_RESIST, Upgrades.GILDED, Upgrades.HEALTH, Upgrades.JUMP, Upgrades.KNOCKBACK_RESIST, Upgrades.LUCK, Upgrades.MELEE_DAMAGE, Upgrades.NETHERITE_PROTECT, Upgrades.PHYSICAL_PROTECT, Upgrades.POISON_RESIST, Upgrades.REPAIR, Upgrades.SELF_SACRIFICE, Upgrades.SPEED, Upgrades.SPRINT_ATTACK); public static void tags(Function, TagsProvider.TagAppender> adder) { adder.apply(BMTags.Living.TRAINERS) @@ -614,35 +582,35 @@ public static void tags(Function, TagsProvider.TagAppender } public static void translations(BiConsumer translator) { - addUpgrade(BATTLE_HUNGRY.location(), "Battle Hungry", translator); - addUpgrade(CRIPPLED_ARM.location(), "Crippled Arm", translator); - addUpgrade(DIG_SLOWDOWN.location(), "Leadened Pick", translator); - addUpgrade(MELEE_DECREASE.location(), "Dulled Blade", translator); - addUpgrade(QUENCHED.location(), "Quenched", translator); - addUpgrade(SLOW_HEAL.location(), "Slow Heal", translator); - addUpgrade(SPEED_DECREASE.location(), "Limp Leg", translator); - addUpgrade(STORM_TROOPER.location(), "Storm Trooper", translator); - addUpgrade(SWIM_DECREASE.location(), "Concrete Shoes", translator); + addUpgrade(Upgrades.BATTLE_HUNGRY.location(), "Battle Hungry", translator); + addUpgrade(Upgrades.CRIPPLED_ARM.location(), "Crippled Arm", translator); + addUpgrade(Upgrades.DIG_SLOWDOWN.location(), "Leadened Pick", translator); + addUpgrade(Upgrades.MELEE_DECREASE.location(), "Dulled Blade", translator); + addUpgrade(Upgrades.QUENCHED.location(), "Quenched", translator); + addUpgrade(Upgrades.SLOW_HEAL.location(), "Slow Heal", translator); + addUpgrade(Upgrades.SPEED_DECREASE.location(), "Limp Leg", translator); + addUpgrade(Upgrades.STORM_TROOPER.location(), "Storm Trooper", translator); + addUpgrade(Upgrades.SWIM_DECREASE.location(), "Concrete Shoes", translator); - addUpgrade(ARROW_PROTECT.location(), "Pin Cushion", translator); - addUpgrade(DIGGING.location(), "Dwarven Might", translator); - addUpgrade(ELYTRA.location(), "Elytra", translator); - addUpgrade(EXPERIENCED.location(), "Experienced", translator); - addUpgrade(FALL_PROTECT.location(), "Soft Fall", translator); - addUpgrade(FIRE_RESIST.location(), "Gift of Ignis", translator); - addUpgrade(GILDED.location(), "Gilded", translator); - addUpgrade(HEALTH.location(), "Healthy", translator); - addUpgrade(JUMP.location(), "Strong Legs", translator); - addUpgrade(KNOCKBACK_RESIST.location(), "Body Builder", translator); - addUpgrade(LUCK.location(), "Skilled", translator); - addUpgrade(MELEE_DAMAGE.location(), "Fierce Strike", translator); - addUpgrade(NETHERITE_PROTECT.location(), "Forgotten", translator); - addUpgrade(PHYSICAL_PROTECT.location(), "Tough", translator); - addUpgrade(POISON_RESIST.location(), "Poison Resistance", translator); - addUpgrade(REPAIR.location(), "Repair", translator); - addUpgrade(SELF_SACRIFICE.location(), "Tough Palms", translator); - addUpgrade(SPEED.location(), "Quick Feet", translator); - addUpgrade(SPRINT_ATTACK.location(), "Charging Strike", translator); + addUpgrade(Upgrades.ARROW_PROTECT.location(), "Pin Cushion", translator); + addUpgrade(Upgrades.DIGGING.location(), "Dwarven Might", translator); + addUpgrade(Upgrades.ELYTRA.location(), "Elytra", translator); + addUpgrade(Upgrades.EXPERIENCED.location(), "Experienced", translator); + addUpgrade(Upgrades.FALL_PROTECT.location(), "Soft Fall", translator); + addUpgrade(Upgrades.FIRE_RESIST.location(), "Gift of Ignis", translator); + addUpgrade(Upgrades.GILDED.location(), "Gilded", translator); + addUpgrade(Upgrades.HEALTH.location(), "Healthy", translator); + addUpgrade(Upgrades.JUMP.location(), "Strong Legs", translator); + addUpgrade(Upgrades.KNOCKBACK_RESIST.location(), "Body Builder", translator); + addUpgrade(Upgrades.LUCK.location(), "Skilled", translator); + addUpgrade(Upgrades.MELEE_DAMAGE.location(), "Fierce Strike", translator); + addUpgrade(Upgrades.NETHERITE_PROTECT.location(), "Forgotten", translator); + addUpgrade(Upgrades.PHYSICAL_PROTECT.location(), "Tough", translator); + addUpgrade(Upgrades.POISON_RESIST.location(), "Poison Resistance", translator); + addUpgrade(Upgrades.REPAIR.location(), "Repair", translator); + addUpgrade(Upgrades.SELF_SACRIFICE.location(), "Tough Palms", translator); + addUpgrade(Upgrades.SPEED.location(), "Quick Feet", translator); + addUpgrade(Upgrades.SPRINT_ATTACK.location(), "Charging Strike", translator); } private static void addUpgrade(ResourceLocation key, String translated, BiConsumer translator) { @@ -667,6 +635,6 @@ private static CompoundTag getCooldownTag(ResourceLocation id) { } private static ResourceKey key(String path) { - return ResourceKey.create(BMRegistries.Keys.LIVING_UPGRADES, ResourceLocation.fromNamespaceAndPath(BloodMagic.MODID, path)); + return ResourceKey.create(BMIdentifiers.RegistryKeys.LIVING_UPGRADES, ResourceLocation.fromNamespaceAndPath(BloodMagic.MODID, path)); } } diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/BloodRuneData.java b/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/BloodRuneData.java index ea13ca00c6..efefbe3374 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/BloodRuneData.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/BloodRuneData.java @@ -8,7 +8,7 @@ import wayoftime.bloodmagic.common.block.BMBlocks; import wayoftime.bloodmagic.common.datamap.BMDataMaps; import wayoftime.bloodmagic.common.datamap.BloodRune; -import wayoftime.bloodmagic.util.EnumRuneType; +import wayoftime.bloodmagic.api.altar.EnumRuneType; import wayoftime.bloodmagic.util.helper.BlockWithItemHolder; import java.util.List; diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/LivingData.java b/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/LivingData.java index 09b28c9382..4a269062f4 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/LivingData.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/content/datamap/LivingData.java @@ -6,7 +6,7 @@ import wayoftime.bloodmagic.common.datamap.BMDataMaps; import wayoftime.bloodmagic.common.datamap.LivingArmorData; import wayoftime.bloodmagic.common.item.BMItems; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import java.util.function.Function; diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMBlockTagProvider.java b/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMBlockTagProvider.java index baf21c5504..f60917fee6 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMBlockTagProvider.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMBlockTagProvider.java @@ -6,11 +6,9 @@ import net.minecraft.world.level.block.Blocks; import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.data.BlockTagsProvider; -import net.neoforged.neoforge.common.data.ExistingFileHelper; -import org.jetbrains.annotations.Nullable; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.block.BMBlocks; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import wayoftime.bloodmagic.datagen.BlockGroups; import java.util.concurrent.CompletableFuture; diff --git a/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMItemTagProvider.java b/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMItemTagProvider.java index 80ad1cf209..31eff79ac8 100644 --- a/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMItemTagProvider.java +++ b/src/datagen/java/wayoftime/bloodmagic/datagen/provider/BMItemTagProvider.java @@ -5,11 +5,9 @@ import net.minecraft.data.tags.ItemTagsProvider; import net.minecraft.tags.ItemTags; import net.minecraft.world.level.block.Block; -import net.neoforged.neoforge.common.Tags; -import net.neoforged.neoforge.common.data.ExistingFileHelper; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.item.BMItems; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import java.util.concurrent.CompletableFuture; diff --git a/src/generated/resources/data/bloodmagic/bloodmagic/imperfect_rituals/zombie.json b/src/generated/resources/data/bloodmagic/bloodmagic/imperfect_rituals/zombie.json index 482786b708..7863ac1f43 100644 --- a/src/generated/resources/data/bloodmagic/bloodmagic/imperfect_rituals/zombie.json +++ b/src/generated/resources/data/bloodmagic/bloodmagic/imperfect_rituals/zombie.json @@ -7,8 +7,8 @@ "duration": 2000, "id": "minecraft:fire_resistance", "neoforge:cures": [ - "protected_by_totem", - "milk" + "milk", + "protected_by_totem" ], "show_icon": true }, @@ -17,8 +17,8 @@ "duration": 2000, "id": "minecraft:strength", "neoforge:cures": [ - "protected_by_totem", - "milk" + "milk", + "protected_by_totem" ], "show_icon": true }, @@ -27,8 +27,8 @@ "duration": 2000, "id": "minecraft:resistance", "neoforge:cures": [ - "protected_by_totem", - "milk" + "milk", + "protected_by_totem" ], "show_icon": true } diff --git a/src/main/java/wayoftime/bloodmagic/api/BMIdentifiers.java b/src/main/java/wayoftime/bloodmagic/api/BMIdentifiers.java index 77f67a9c87..31a96359ac 100644 --- a/src/main/java/wayoftime/bloodmagic/api/BMIdentifiers.java +++ b/src/main/java/wayoftime/bloodmagic/api/BMIdentifiers.java @@ -3,10 +3,18 @@ import com.mojang.serialization.MapCodec; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.core.Registry; +import net.minecraft.core.component.DataComponentType; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageType; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; import wayoftime.bloodmagic.api.sigil.SigilEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; +import wayoftime.bloodmagic.common.living.LivingUpgrade; +import wayoftime.bloodmagic.api.living.LivingValueEffect; +import wayoftime.bloodmagic.api.altar.AltarTier; public class BMIdentifiers { public static class ImperfectRituals { @@ -16,11 +24,19 @@ public static class ImperfectRituals { public static final ResourceLocation ZOMBIE_RITUAL = bm("zombie"); } - // TODO move all the stuff here, including from Datagen - public static class RegistryKeys { public static final ResourceKey>> SIGIL_EFFECT_TYPES = ResourceKey.createRegistryKey(bm("sigil_effect_type")); public static final ResourceKey> SIGIL_EFFECT = ResourceKey.createRegistryKey(bm("sigil")); + + public static final ResourceKey> ALTAR_TIER_KEY = ResourceKey.createRegistryKey(bm("altar_tier")); + + public static final ResourceKey> LIVING_UPGRADES = ResourceKey.createRegistryKey(bm("living_upgrades")); + public static final ResourceKey>> LIVING_EFFECT_COMPONENTS = ResourceKey.createRegistryKey(bm("living_effect_component")); + public static final ResourceKey>> VALUE_BASED_EFFECT_TYPE = ResourceKey.createRegistryKey(bm("value_based_effect_type")); + public static final ResourceKey>> ENTITY_EFFECT_TYPE = ResourceKey.createRegistryKey(bm("entity_effect_type")); + + public static final ResourceKey> IMPERFECT_RITUALS = ResourceKey.createRegistryKey(bm("imperfect_rituals")); + public static final ResourceKey>> IMPERFECT_RITUAL_EFFECT_TYPE = ResourceKey.createRegistryKey(bm("imperfect_ritual_effect_types")); } public static class Sigils { @@ -32,6 +48,55 @@ public static class Sigils { public static final ResourceKey MINER = ResourceKey.create(RegistryKeys.SIGIL_EFFECT, bm("miner")); } + public static class Upgrades { + // Downgrades + public static final ResourceKey BATTLE_HUNGRY = key("battle_hungry"); + public static final ResourceKey CRIPPLED_ARM = key("crippled_arm"); + public static final ResourceKey DIG_SLOWDOWN = key("dig_slowdown"); + public static final ResourceKey MELEE_DECREASE = key("melee_decrease"); + public static final ResourceKey QUENCHED = key("quenched"); + public static final ResourceKey SLOW_HEAL = key("slow_heal"); + public static final ResourceKey SPEED_DECREASE = key("speed_decrease"); + public static final ResourceKey STORM_TROOPER = key("storm_trooper"); + public static final ResourceKey SWIM_DECREASE = key("swim_decrease"); + + // Upgrades + public static final ResourceKey ARROW_PROTECT = key("arrow_protect"); + public static final ResourceKey CURIOS_SOCKET = key("curios_socket"); + public static final ResourceKey NETHERITE_PROTECT = key("netherite_protect"); + public static final ResourceKey DIGGING = key("digging"); + public static final ResourceKey ELYTRA = key("elytra"); + public static final ResourceKey EXPERIENCED = key("experienced"); + public static final ResourceKey FALL_PROTECT = key("fall_protect"); + public static final ResourceKey FIRE_RESIST = key("fire_resist"); + public static final ResourceKey GILDED = key("gilded"); + public static final ResourceKey HEALTH = key("health"); + public static final ResourceKey JUMP = key("jump"); + public static final ResourceKey KNOCKBACK_RESIST = key("knockback_resist"); + public static final ResourceKey MELEE_DAMAGE = key("melee_damage"); + public static final ResourceKey PHYSICAL_PROTECT = key("physical_protect"); + public static final ResourceKey POISON_RESIST = key("poison_resist"); + public static final ResourceKey REPAIR = key("repair"); + public static final ResourceKey SELF_SACRIFICE = key("self_sacrifice"); + public static final ResourceKey SPEED = key("speed"); + public static final ResourceKey SPRINT_ATTACK = key("sprint_attack"); + + public static final ResourceKey LUCK = key("luck"); + + private static ResourceKey key(String name) { + return ResourceKey.create(RegistryKeys.LIVING_UPGRADES, bm(name)); + } + } + + public static class DamageTypes { + public static final ResourceKey SACRIFICE = key("sacrifice"); // used by soul network to forcibly receive needed LP. TODO Potentially by Dagger of Sacrifice? + public static final ResourceKey SELF_SACRIFICE = key("self_sacrifice"); + + private static ResourceKey key(String path) { + return ResourceKey.create(Registries.DAMAGE_TYPE, BloodMagic.rl(path)); + } + } + public static class ItemProperties { public static final ResourceLocation SIGIL_ACTIVE = bm("sigil_active"); } diff --git a/src/main/java/wayoftime/bloodmagic/common/tag/BMTags.java b/src/main/java/wayoftime/bloodmagic/api/BMTags.java similarity index 94% rename from src/main/java/wayoftime/bloodmagic/common/tag/BMTags.java rename to src/main/java/wayoftime/bloodmagic/api/BMTags.java index e83c8743bf..2ba6a42bae 100644 --- a/src/main/java/wayoftime/bloodmagic/common/tag/BMTags.java +++ b/src/main/java/wayoftime/bloodmagic/api/BMTags.java @@ -1,4 +1,4 @@ -package wayoftime.bloodmagic.common.tag; +package wayoftime.bloodmagic.api; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; @@ -9,8 +9,7 @@ import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.item.BMMaterialsAndTiers; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.AltarTier; -import wayoftime.bloodmagic.common.registry.BMRegistries; +import wayoftime.bloodmagic.api.altar.AltarTier; public class BMTags { public static class Items { @@ -71,7 +70,7 @@ public static class DamageTypes { } public static class Tiers { - public static final TagKey VALID_TIERS = TagKey.create(BMRegistries.Keys.ALTAR_TIER_KEY, bm("valid_tiers")); + public static final TagKey VALID_TIERS = TagKey.create(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY, bm("valid_tiers")); } public static class Living { @@ -85,7 +84,7 @@ public static class Living { public static final TagKey LIVING_BLACKLIST = tag(bm("empty")); private static TagKey tag(ResourceLocation id) { - return TagKey.create(BMRegistries.Keys.LIVING_UPGRADES, id); + return TagKey.create(BMIdentifiers.RegistryKeys.LIVING_UPGRADES, id); } } diff --git a/src/main/java/wayoftime/bloodmagic/common/registry/AltarTier.java b/src/main/java/wayoftime/bloodmagic/api/altar/AltarTier.java similarity index 84% rename from src/main/java/wayoftime/bloodmagic/common/registry/AltarTier.java rename to src/main/java/wayoftime/bloodmagic/api/altar/AltarTier.java index a1b2a7994a..145943d145 100644 --- a/src/main/java/wayoftime/bloodmagic/common/registry/AltarTier.java +++ b/src/main/java/wayoftime/bloodmagic/api/altar/AltarTier.java @@ -1,16 +1,10 @@ -package wayoftime.bloodmagic.common.registry; +package wayoftime.bloodmagic.api.altar; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.core.registries.Registries; -import net.minecraft.tags.TagKey; import net.minecraft.util.ExtraCodecs; -import net.minecraft.world.level.block.Block; import org.jetbrains.annotations.NotNull; -import java.util.List; -import java.util.Optional; - public record AltarTier(int tier, int distance, int sideRunes, int sideBlocks, int pillarHeight, int pillarOffset, ExtraCodecs.TagOrElementLocation capstone) implements Comparable { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( Codec.INT.fieldOf("tier").forGetter(AltarTier::tier), diff --git a/src/main/java/wayoftime/bloodmagic/util/EnumRuneType.java b/src/main/java/wayoftime/bloodmagic/api/altar/EnumRuneType.java similarity index 93% rename from src/main/java/wayoftime/bloodmagic/util/EnumRuneType.java rename to src/main/java/wayoftime/bloodmagic/api/altar/EnumRuneType.java index 159574f0e7..60e7f74f63 100644 --- a/src/main/java/wayoftime/bloodmagic/util/EnumRuneType.java +++ b/src/main/java/wayoftime/bloodmagic/api/altar/EnumRuneType.java @@ -1,4 +1,4 @@ -package wayoftime.bloodmagic.util; +package wayoftime.bloodmagic.api.altar; import com.mojang.serialization.Codec; import net.minecraft.util.StringRepresentable; diff --git a/src/main/java/wayoftime/bloodmagic/common/caps/IRunePowers.java b/src/main/java/wayoftime/bloodmagic/api/capability/IRunePowers.java similarity index 54% rename from src/main/java/wayoftime/bloodmagic/common/caps/IRunePowers.java rename to src/main/java/wayoftime/bloodmagic/api/capability/IRunePowers.java index da55cc1793..e33846d0e2 100644 --- a/src/main/java/wayoftime/bloodmagic/common/caps/IRunePowers.java +++ b/src/main/java/wayoftime/bloodmagic/api/capability/IRunePowers.java @@ -1,6 +1,6 @@ -package wayoftime.bloodmagic.common.caps; +package wayoftime.bloodmagic.api.capability; -import wayoftime.bloodmagic.util.EnumRuneType; +import wayoftime.bloodmagic.api.altar.EnumRuneType; import java.util.Map; diff --git a/src/main/java/wayoftime/bloodmagic/common/datacomponent/Binding.java b/src/main/java/wayoftime/bloodmagic/api/datacomponent/Binding.java similarity index 95% rename from src/main/java/wayoftime/bloodmagic/common/datacomponent/Binding.java rename to src/main/java/wayoftime/bloodmagic/api/datacomponent/Binding.java index e91c1ccf6c..fcaf880031 100644 --- a/src/main/java/wayoftime/bloodmagic/common/datacomponent/Binding.java +++ b/src/main/java/wayoftime/bloodmagic/api/datacomponent/Binding.java @@ -1,9 +1,8 @@ -package wayoftime.bloodmagic.common.datacomponent; +package wayoftime.bloodmagic.api.datacomponent; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import io.netty.buffer.ByteBuf; -import net.minecraft.ChatFormatting; import net.minecraft.core.UUIDUtil; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/src/main/java/wayoftime/bloodmagic/common/datacomponent/LivingStats.java b/src/main/java/wayoftime/bloodmagic/api/datacomponent/LivingStats.java similarity index 77% rename from src/main/java/wayoftime/bloodmagic/common/datacomponent/LivingStats.java rename to src/main/java/wayoftime/bloodmagic/api/datacomponent/LivingStats.java index fbdba383e8..e30239e70d 100644 --- a/src/main/java/wayoftime/bloodmagic/common/datacomponent/LivingStats.java +++ b/src/main/java/wayoftime/bloodmagic/api/datacomponent/LivingStats.java @@ -1,36 +1,28 @@ -package wayoftime.bloodmagic.common.datacomponent; +package wayoftime.bloodmagic.api.datacomponent; import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; import it.unimi.dsi.fastutil.objects.Object2FloatMap; import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2IntMap; import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderSet; -import net.minecraft.core.RegistryAccess; -import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; -import net.minecraft.network.codec.ByteBufCodecs; -import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.RegistryFixedCodec; import net.minecraft.world.item.Item; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.component.TooltipProvider; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; -import java.util.Collections; import java.util.Optional; -import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; public record LivingStats(Object2FloatOpenHashMap> upgrades) implements TooltipProvider { public static final Codec CODEC = - Codec.unboundedMap(RegistryFixedCodec.create(BMRegistries.Keys.LIVING_UPGRADES), Codec.FLOAT) + Codec.unboundedMap(RegistryFixedCodec.create(BMIdentifiers.RegistryKeys.LIVING_UPGRADES), Codec.FLOAT) .xmap(Object2FloatOpenHashMap::new, Function.identity()) .xmap(LivingStats::new, LivingStats::upgrades); @@ -59,7 +51,7 @@ public void addToTooltip(Item.TooltipContext context, Consumer toolti private static HolderSet getOrder(HolderLookup.Provider registries) { if (registries != null) { - Optional> optional = registries.lookupOrThrow(BMRegistries.Keys.LIVING_UPGRADES).get(BMTags.Living.TOOLTIP_ORDER); + Optional> optional = registries.lookupOrThrow(BMIdentifiers.RegistryKeys.LIVING_UPGRADES).get(BMTags.Living.TOOLTIP_ORDER); if (optional.isPresent()) { return optional.get(); } diff --git a/src/main/java/wayoftime/bloodmagic/util/RitualUtil.java b/src/main/java/wayoftime/bloodmagic/api/helper/RitualUtil.java similarity index 93% rename from src/main/java/wayoftime/bloodmagic/util/RitualUtil.java rename to src/main/java/wayoftime/bloodmagic/api/helper/RitualUtil.java index aee5e74eb9..6bf8d65b76 100644 --- a/src/main/java/wayoftime/bloodmagic/util/RitualUtil.java +++ b/src/main/java/wayoftime/bloodmagic/api/helper/RitualUtil.java @@ -1,4 +1,4 @@ -package wayoftime.bloodmagic.util; +package wayoftime.bloodmagic.api.helper; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; diff --git a/src/main/java/wayoftime/bloodmagic/util/helper/SoulNetworkHelper.java b/src/main/java/wayoftime/bloodmagic/api/helper/SoulNetworkHelper.java similarity index 94% rename from src/main/java/wayoftime/bloodmagic/util/helper/SoulNetworkHelper.java rename to src/main/java/wayoftime/bloodmagic/api/helper/SoulNetworkHelper.java index 00790791a8..4a18f628c6 100644 --- a/src/main/java/wayoftime/bloodmagic/util/helper/SoulNetworkHelper.java +++ b/src/main/java/wayoftime/bloodmagic/api/helper/SoulNetworkHelper.java @@ -1,4 +1,4 @@ -package wayoftime.bloodmagic.util.helper; +package wayoftime.bloodmagic.api.helper; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.saveddata.SavedData.Factory; @@ -7,7 +7,7 @@ import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.server.ServerStoppedEvent; import net.neoforged.neoforge.server.ServerLifecycleHooks; -import wayoftime.bloodmagic.common.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.Binding; import wayoftime.bloodmagic.common.datacomponent.SoulNetwork; import wayoftime.bloodmagic.common.world.BMSavedData; diff --git a/src/main/java/wayoftime/bloodmagic/api/living/LivingEntityEffect.java b/src/main/java/wayoftime/bloodmagic/api/living/LivingEntityEffect.java new file mode 100644 index 0000000000..aff661035c --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/api/living/LivingEntityEffect.java @@ -0,0 +1,21 @@ +package wayoftime.bloodmagic.api.living; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import net.minecraft.world.entity.Entity; +import wayoftime.bloodmagic.common.living.LivingEntityEffects; + +import java.util.function.Function; + +public interface LivingEntityEffect { + Codec CODEC = Codec.lazyInitialized(() -> LivingEntityEffects.ENTITY_EFFECT_TYPE + .getRegistry() + .get() + .byNameCodec() + .dispatch(LivingEntityEffect::codec, Function.identity()) + ); + + void apply(int upgradeLevel, Entity entity); + + MapCodec codec(); +} diff --git a/src/main/java/wayoftime/bloodmagic/api/living/LivingValueEffect.java b/src/main/java/wayoftime/bloodmagic/api/living/LivingValueEffect.java new file mode 100644 index 0000000000..e3da9e98b3 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/api/living/LivingValueEffect.java @@ -0,0 +1,21 @@ +package wayoftime.bloodmagic.api.living; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import net.minecraft.world.level.storage.loot.LootContext; +import wayoftime.bloodmagic.common.living.LivingValueEffects; + +import java.util.function.Function; + +public interface LivingValueEffect { + Codec CODEC = Codec.lazyInitialized(() -> LivingValueEffects.VALUE_BASED_EFFECT_TYPE + .getRegistry() + .get() + .byNameCodec() + .dispatch(LivingValueEffect::codec, Function.identity()) + ); + + float process(int level, LootContext lootContext, float value); + + MapCodec codec(); +} diff --git a/src/main/java/wayoftime/bloodmagic/api/ritual/ImperfectRitualEffect.java b/src/main/java/wayoftime/bloodmagic/api/ritual/ImperfectRitualEffect.java new file mode 100644 index 0000000000..fb1f2fba06 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/api/ritual/ImperfectRitualEffect.java @@ -0,0 +1,26 @@ +package wayoftime.bloodmagic.api.ritual; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.player.Player; +import wayoftime.bloodmagic.common.ritual.imperfect.ImperfectRitualEffects; + +import java.util.function.Function; + +// TODO should probably define cost here and have it be part of this codec, but not sure how to do that +public interface ImperfectRitualEffect { + Codec CODEC = Codec.lazyInitialized(() -> ImperfectRitualEffects.IMPERFECT_RITUAL_EFFECT_TYPE + .getRegistry() + .get() + .byNameCodec() + .dispatch(ImperfectRitualEffect::codec, Function.identity()) + ); + + int getCost(); + + void perform(Player player, ServerLevel level, BlockPos ritualPos); + + MapCodec codec(); +} diff --git a/src/main/java/wayoftime/bloodmagic/util/SoulTicket.java b/src/main/java/wayoftime/bloodmagic/api/soulnetwork/SoulTicket.java similarity index 98% rename from src/main/java/wayoftime/bloodmagic/util/SoulTicket.java rename to src/main/java/wayoftime/bloodmagic/api/soulnetwork/SoulTicket.java index 77669cfe72..f6c69c0497 100644 --- a/src/main/java/wayoftime/bloodmagic/util/SoulTicket.java +++ b/src/main/java/wayoftime/bloodmagic/api/soulnetwork/SoulTicket.java @@ -1,4 +1,4 @@ -package wayoftime.bloodmagic.util; +package wayoftime.bloodmagic.api.soulnetwork; import net.minecraft.commands.CommandSource; import net.minecraft.core.BlockPos; diff --git a/src/main/java/wayoftime/bloodmagic/common/block/BMBlocks.java b/src/main/java/wayoftime/bloodmagic/common/block/BMBlocks.java index 366dc5c80e..2793e13d15 100644 --- a/src/main/java/wayoftime/bloodmagic/common/block/BMBlocks.java +++ b/src/main/java/wayoftime/bloodmagic/common/block/BMBlocks.java @@ -16,7 +16,7 @@ import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; import wayoftime.bloodmagic.common.datamap.BMDataMaps; import wayoftime.bloodmagic.common.datamap.BloodRune; -import wayoftime.bloodmagic.util.EnumRuneType; +import wayoftime.bloodmagic.api.altar.EnumRuneType; import wayoftime.bloodmagic.util.helper.BlockEntityHelper; import wayoftime.bloodmagic.util.helper.BlockWithItemHolder; import wayoftime.bloodmagic.util.helper.BlockWithItemRegister; diff --git a/src/main/java/wayoftime/bloodmagic/common/block/ImperfectRitualBlock.java b/src/main/java/wayoftime/bloodmagic/common/block/ImperfectRitualBlock.java index 069f91bc12..b9088e6827 100644 --- a/src/main/java/wayoftime/bloodmagic/common/block/ImperfectRitualBlock.java +++ b/src/main/java/wayoftime/bloodmagic/common/block/ImperfectRitualBlock.java @@ -11,11 +11,11 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.common.datamap.BMDataMaps; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.ritual.imperfect.ImperfectRitualEffect; -import wayoftime.bloodmagic.util.RitualUtil; -import wayoftime.bloodmagic.util.helper.SoulNetworkHelper; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; +import wayoftime.bloodmagic.api.helper.RitualUtil; +import wayoftime.bloodmagic.api.helper.SoulNetworkHelper; import java.util.Optional; @@ -35,7 +35,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP if (type == null) { return super.useWithoutItem(state, level, pos, player, hitResult); } - Optional optionalEffect = level.registryAccess().registryOrThrow(BMRegistries.Keys.IMPERFECT_RITUALS).getOptional(type); + Optional optionalEffect = level.registryAccess().registryOrThrow(BMIdentifiers.RegistryKeys.IMPERFECT_RITUALS).getOptional(type); if (optionalEffect.isEmpty()) { return super.useWithoutItem(state, level, pos, player, hitResult); } diff --git a/src/main/java/wayoftime/bloodmagic/common/blockentity/ARCTile.java b/src/main/java/wayoftime/bloodmagic/common/blockentity/ARCTile.java index 0581cdd3e1..372fae3b5d 100644 --- a/src/main/java/wayoftime/bloodmagic/common/blockentity/ARCTile.java +++ b/src/main/java/wayoftime/bloodmagic/common/blockentity/ARCTile.java @@ -36,7 +36,7 @@ import wayoftime.bloodmagic.common.recipe.BMRecipes; import wayoftime.bloodmagic.common.recipe.arc.ARCRecipe; import wayoftime.bloodmagic.common.recipe.arc.ARCRecipeInput; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import wayoftime.bloodmagic.util.ARCOutputHandler; import javax.annotation.Nullable; diff --git a/src/main/java/wayoftime/bloodmagic/common/blockentity/BloodAltarTile.java b/src/main/java/wayoftime/bloodmagic/common/blockentity/BloodAltarTile.java index 89494aebab..e3b78de863 100644 --- a/src/main/java/wayoftime/bloodmagic/common/blockentity/BloodAltarTile.java +++ b/src/main/java/wayoftime/bloodmagic/common/blockentity/BloodAltarTile.java @@ -18,7 +18,7 @@ import net.neoforged.neoforge.fluids.capability.IFluidHandler; import net.neoforged.neoforge.items.ItemStackHandler; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.Binding; import wayoftime.bloodmagic.common.datacomponent.SoulNetwork; import wayoftime.bloodmagic.common.datamap.BMDataMaps; import wayoftime.bloodmagic.common.datamap.BloodOrb; @@ -27,11 +27,11 @@ import wayoftime.bloodmagic.common.recipe.BMRecipes; import wayoftime.bloodmagic.common.recipe.bloodaltar.BloodAltarInput; import wayoftime.bloodmagic.common.recipe.bloodaltar.BloodAltarRecipe; -import wayoftime.bloodmagic.common.tag.BMTags; -import wayoftime.bloodmagic.util.EnumRuneType; +import wayoftime.bloodmagic.api.BMTags; +import wayoftime.bloodmagic.api.altar.EnumRuneType; import wayoftime.bloodmagic.util.AltarUtil; -import wayoftime.bloodmagic.util.SoulTicket; -import wayoftime.bloodmagic.util.helper.SoulNetworkHelper; +import wayoftime.bloodmagic.api.soulnetwork.SoulTicket; +import wayoftime.bloodmagic.api.helper.SoulNetworkHelper; import java.util.Map; import java.util.Optional; @@ -43,7 +43,12 @@ public class BloodAltarTile extends BaseTile implements IFluidHandler { private BloodAltarRecipe currentRecipe = null; private int cooldownAfterCrafting = 0; private int progress = 0; + private int tier = 0; + public int getTier() { + return tier; + } + private int ticks; private int inputTank = 0; private int outputTank = 0; diff --git a/src/main/java/wayoftime/bloodmagic/common/blockentity/HellfireForgeTile.java b/src/main/java/wayoftime/bloodmagic/common/blockentity/HellfireForgeTile.java index 36f7adfddd..60bf2b3c2c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/blockentity/HellfireForgeTile.java +++ b/src/main/java/wayoftime/bloodmagic/common/blockentity/HellfireForgeTile.java @@ -5,15 +5,11 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.game.ClientGamePacketListener; -import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.items.IItemHandler; @@ -26,7 +22,7 @@ import wayoftime.bloodmagic.common.recipe.BMRecipes; import wayoftime.bloodmagic.common.recipe.forge.ForgeInput; import wayoftime.bloodmagic.common.recipe.forge.ForgeRecipe; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/src/main/java/wayoftime/bloodmagic/common/blockentity/LivingStationTile.java b/src/main/java/wayoftime/bloodmagic/common/blockentity/LivingStationTile.java index 9cbeb3caad..250019f685 100644 --- a/src/main/java/wayoftime/bloodmagic/common/blockentity/LivingStationTile.java +++ b/src/main/java/wayoftime/bloodmagic/common/blockentity/LivingStationTile.java @@ -3,7 +3,6 @@ import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponentMap; @@ -16,9 +15,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemStackHandler; -import net.neoforged.neoforge.items.wrapper.RangedWrapper; import org.jetbrains.annotations.Nullable; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.menu.LivingStationMenu; @@ -27,12 +24,9 @@ import wayoftime.bloodmagic.common.item.BMItems; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import wayoftime.bloodmagic.common.tag.TagsCache; -import java.util.ArrayList; -import java.util.List; - public class LivingStationTile extends BaseTile implements MenuProvider { public Object2FloatOpenHashMap> upgradeData; diff --git a/src/main/java/wayoftime/bloodmagic/common/caps/BMCaps.java b/src/main/java/wayoftime/bloodmagic/common/caps/BMCaps.java index 435aef3488..d751d706f4 100644 --- a/src/main/java/wayoftime/bloodmagic/common/caps/BMCaps.java +++ b/src/main/java/wayoftime/bloodmagic/common/caps/BMCaps.java @@ -2,6 +2,7 @@ import net.neoforged.neoforge.capabilities.BlockCapability; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.capability.IRunePowers; public class BMCaps { public static final BlockCapability RUNE_POWERS = BlockCapability.createVoid(BloodMagic.rl("rune_powers"), IRunePowers.class); diff --git a/src/main/java/wayoftime/bloodmagic/common/command/LivingUpgradesCommand.java b/src/main/java/wayoftime/bloodmagic/common/command/LivingUpgradesCommand.java index a8fb150391..c1448cdc0c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/command/LivingUpgradesCommand.java +++ b/src/main/java/wayoftime/bloodmagic/common/command/LivingUpgradesCommand.java @@ -1,14 +1,11 @@ package wayoftime.bloodmagic.common.command; import com.mojang.brigadier.Command; -import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; -import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap; -import net.minecraft.Util; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; @@ -20,15 +17,13 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.LivingStats; +import wayoftime.bloodmagic.api.datacomponent.LivingStats; import wayoftime.bloodmagic.common.datacomponent.UpgradeLimits; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import javax.swing.text.html.CSS; import java.util.Optional; public class LivingUpgradesCommand { @@ -44,11 +39,11 @@ public static LiteralArgumentBuilder command(CommandBuildCon .then( Commands.literal("set") .then( - Commands.argument("id", ResourceArgument.resource(buildContext, BMRegistries.Keys.LIVING_UPGRADES)) + Commands.argument("id", ResourceArgument.resource(buildContext, BMIdentifiers.RegistryKeys.LIVING_UPGRADES)) .then( Commands.argument("exp", IntegerArgumentType.integer(0)) .executes( - context -> setUpgrade(context.getSource(), EntityArgument.getPlayer(context, "target"), ResourceArgument.getResource(context, "id", BMRegistries.Keys.LIVING_UPGRADES), IntegerArgumentType.getInteger(context, "exp")) + context -> setUpgrade(context.getSource(), EntityArgument.getPlayer(context, "target"), ResourceArgument.getResource(context, "id", BMIdentifiers.RegistryKeys.LIVING_UPGRADES), IntegerArgumentType.getInteger(context, "exp")) ) ) ) @@ -59,9 +54,9 @@ public static LiteralArgumentBuilder command(CommandBuildCon context -> getUpgrades(context.getSource(), EntityArgument.getPlayer(context, "target"), Optional.empty()) ) .then( - Commands.argument("id", ResourceArgument.resource(buildContext, BMRegistries.Keys.LIVING_UPGRADES)) + Commands.argument("id", ResourceArgument.resource(buildContext, BMIdentifiers.RegistryKeys.LIVING_UPGRADES)) .executes( - context -> getUpgrades(context.getSource(), EntityArgument.getPlayer(context, "target"), Optional.of(ResourceArgument.getResource(context, "id", BMRegistries.Keys.LIVING_UPGRADES))) + context -> getUpgrades(context.getSource(), EntityArgument.getPlayer(context, "target"), Optional.of(ResourceArgument.getResource(context, "id", BMIdentifiers.RegistryKeys.LIVING_UPGRADES))) ) ) ) @@ -71,11 +66,11 @@ public static LiteralArgumentBuilder command(CommandBuildCon .then( Commands.literal("set") .then( - Commands.argument("id", ResourceArgument.resource(buildContext, BMRegistries.Keys.LIVING_UPGRADES)) + Commands.argument("id", ResourceArgument.resource(buildContext, BMIdentifiers.RegistryKeys.LIVING_UPGRADES)) .then( Commands.argument("exp", IntegerArgumentType.integer(0)) .executes( - context -> setLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), ResourceArgument.getResource(context, "id", BMRegistries.Keys.LIVING_UPGRADES), IntegerArgumentType.getInteger(context, "exp")) + context -> setLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), ResourceArgument.getResource(context, "id", BMIdentifiers.RegistryKeys.LIVING_UPGRADES), IntegerArgumentType.getInteger(context, "exp")) ) ) ) @@ -86,17 +81,17 @@ public static LiteralArgumentBuilder command(CommandBuildCon context -> getLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), Optional.empty()) ) .then( - Commands.argument("id", ResourceArgument.resource(buildContext, BMRegistries.Keys.LIVING_UPGRADES)) + Commands.argument("id", ResourceArgument.resource(buildContext, BMIdentifiers.RegistryKeys.LIVING_UPGRADES)) .executes( - context -> getLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), Optional.of(ResourceArgument.getResource(context, "id", BMRegistries.Keys.LIVING_UPGRADES))) + context -> getLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), Optional.of(ResourceArgument.getResource(context, "id", BMIdentifiers.RegistryKeys.LIVING_UPGRADES))) ) ) ) .then( Commands.literal("remove") .then( - Commands.argument("id", ResourceArgument.resource(buildContext, BMRegistries.Keys.LIVING_UPGRADES)) - .executes(context -> removeLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), ResourceArgument.getResource(context, "id", BMRegistries.Keys.LIVING_UPGRADES))) + Commands.argument("id", ResourceArgument.resource(buildContext, BMIdentifiers.RegistryKeys.LIVING_UPGRADES)) + .executes(context -> removeLimit(context.getSource(), EntityArgument.getPlayer(context, "target"), ResourceArgument.getResource(context, "id", BMIdentifiers.RegistryKeys.LIVING_UPGRADES))) ) ) .then( diff --git a/src/main/java/wayoftime/bloodmagic/common/command/SoulNetworkCommand.java b/src/main/java/wayoftime/bloodmagic/common/command/SoulNetworkCommand.java index de065dd03e..8779ef0e23 100644 --- a/src/main/java/wayoftime/bloodmagic/common/command/SoulNetworkCommand.java +++ b/src/main/java/wayoftime/bloodmagic/common/command/SoulNetworkCommand.java @@ -1,6 +1,5 @@ package wayoftime.bloodmagic.common.command; -import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; @@ -10,8 +9,8 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import wayoftime.bloodmagic.common.datacomponent.SoulNetwork; -import wayoftime.bloodmagic.util.helper.SoulNetworkHelper; -import wayoftime.bloodmagic.util.SoulTicket; +import wayoftime.bloodmagic.api.helper.SoulNetworkHelper; +import wayoftime.bloodmagic.api.soulnetwork.SoulTicket; public class SoulNetworkCommand { public static LiteralArgumentBuilder COMMAND = Commands.literal("soul-network") diff --git a/src/main/java/wayoftime/bloodmagic/common/creativetab/BMTabs.java b/src/main/java/wayoftime/bloodmagic/common/creativetab/BMTabs.java index d237cfbf45..f1545226bc 100644 --- a/src/main/java/wayoftime/bloodmagic/common/creativetab/BMTabs.java +++ b/src/main/java/wayoftime/bloodmagic/common/creativetab/BMTabs.java @@ -12,6 +12,7 @@ import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredRegister; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.api.BMIdentifiers.Sigils; import wayoftime.bloodmagic.api.sigil.SigilEffect; import wayoftime.bloodmagic.common.block.BMBlocks; @@ -22,8 +23,7 @@ import wayoftime.bloodmagic.common.item.BMItems; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import java.util.List; import java.util.function.Consumer; @@ -78,7 +78,7 @@ private static void addSigils(HolderLookup.Provider registries, Consumer { // TODO maybe have actual tags for up/downgrade to use? idk, this is probably fine - addAll(params.holders().lookupOrThrow(BMRegistries.Keys.LIVING_UPGRADES).get(BMTags.Living.TOOLTIP_ORDER).orElseThrow(), output::accept); + addAll(params.holders().lookupOrThrow(BMIdentifiers.RegistryKeys.LIVING_UPGRADES).get(BMTags.Living.TOOLTIP_ORDER).orElseThrow(), output::accept); }) .build() ); @@ -89,7 +89,7 @@ private static void addSigils(HolderLookup.Provider registries, Consumer new ItemStack(BMItems.UPGRADE_TOME)) .title(Component.translatable("item_group.bloodmagic.trainers")) .displayItems((params, output) -> { - addAll(params.holders().lookupOrThrow(BMRegistries.Keys.LIVING_UPGRADES).get(BMTags.Living.TRAINERS).orElseThrow(), output::accept); + addAll(params.holders().lookupOrThrow(BMIdentifiers.RegistryKeys.LIVING_UPGRADES).get(BMTags.Living.TRAINERS).orElseThrow(), output::accept); }) .build() ); diff --git a/src/main/java/wayoftime/bloodmagic/common/damagesource/BMDamageSources.java b/src/main/java/wayoftime/bloodmagic/common/damagesource/BMDamageSources.java deleted file mode 100644 index 0b970b2f37..0000000000 --- a/src/main/java/wayoftime/bloodmagic/common/damagesource/BMDamageSources.java +++ /dev/null @@ -1,15 +0,0 @@ -package wayoftime.bloodmagic.common.damagesource; - -import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.damagesource.DamageType; -import wayoftime.bloodmagic.BloodMagic; - -public class BMDamageSources { - public static final ResourceKey SACRIFICE = key("sacrifice"); // used by soul network to forcibly receive needed LP. TODO Potentially by Dagger of Sacrifice? - public static final ResourceKey SELF_SACRIFICE = key("self_sacrifice"); - - private static ResourceKey key(String path) { - return ResourceKey.create(Registries.DAMAGE_TYPE, BloodMagic.rl(path)); - } -} diff --git a/src/main/java/wayoftime/bloodmagic/common/datacomponent/BMDataComponents.java b/src/main/java/wayoftime/bloodmagic/common/datacomponent/BMDataComponents.java index 3965f255e3..7f902e3fda 100644 --- a/src/main/java/wayoftime/bloodmagic/common/datacomponent/BMDataComponents.java +++ b/src/main/java/wayoftime/bloodmagic/common/datacomponent/BMDataComponents.java @@ -1,6 +1,5 @@ package wayoftime.bloodmagic.common.datacomponent; -import com.mojang.datafixers.util.Unit; import com.mojang.serialization.Codec; import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap; import net.minecraft.core.Holder; @@ -10,18 +9,17 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.RegistryFixedCodec; import net.minecraft.resources.ResourceKey; -import net.minecraft.tags.TagKey; import net.minecraft.util.Unit; -import net.minecraft.world.item.Item; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.fluids.SimpleFluidContent; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.LivingStats; import wayoftime.bloodmagic.api.sigil.SigilEffect; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.BMRegistries; import java.util.function.Function; @@ -45,7 +43,7 @@ public class BMDataComponents { public static final DeferredHolder, DataComponentType> FLUID_CONTENT = DATA_COMPONENTS.registerComponentType("fluid_content", builder -> builder.persistent(SimpleFluidContent.CODEC).networkSynchronized(SimpleFluidContent.STREAM_CODEC)); public static final DeferredHolder, DataComponentType> ENERGY_CONTENT = DATA_COMPONENTS.registerComponentType("energy_content", builder -> builder.persistent(Codec.INT).networkSynchronized(ByteBufCodecs.INT)); - public static final Codec>> UPGRADE_HOLDER_CODEC = Codec.unboundedMap(RegistryFixedCodec.create(BMRegistries.Keys.LIVING_UPGRADES), Codec.FLOAT).xmap(Object2FloatOpenHashMap::new, Function.identity()); + public static final Codec>> UPGRADE_HOLDER_CODEC = Codec.unboundedMap(RegistryFixedCodec.create(BMIdentifiers.RegistryKeys.LIVING_UPGRADES), Codec.FLOAT).xmap(Object2FloatOpenHashMap::new, Function.identity()); public static final DeferredHolder, DataComponentType> LIMITS = DATA_COMPONENTS.registerComponentType("limits", builder -> builder.persistent(UpgradeLimits.CODEC)); public static final DeferredHolder, DataComponentType> UPGRADES = DATA_COMPONENTS.registerComponentType("upgrades", builder -> builder.persistent(LivingStats.CODEC)); public static final DeferredHolder, DataComponentType> IS_EVOLVED = DATA_COMPONENTS.registerComponentType("is_evolved", builder -> builder.persistent(Codec.BOOL).networkSynchronized(ByteBufCodecs.BOOL)); diff --git a/src/main/java/wayoftime/bloodmagic/common/datacomponent/SoulNetwork.java b/src/main/java/wayoftime/bloodmagic/common/datacomponent/SoulNetwork.java index 66de1dc6f9..f91c40c47f 100644 --- a/src/main/java/wayoftime/bloodmagic/common/datacomponent/SoulNetwork.java +++ b/src/main/java/wayoftime/bloodmagic/common/datacomponent/SoulNetwork.java @@ -7,9 +7,9 @@ import net.minecraft.nbt.NbtOps; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.common.world.BMSavedData; -import wayoftime.bloodmagic.common.damagesource.BMDamageSources; -import wayoftime.bloodmagic.util.SoulTicket; +import wayoftime.bloodmagic.api.soulnetwork.SoulTicket; import java.util.UUID; @@ -106,7 +106,7 @@ public void hurtPlayer(Player user, float syphon) { int dmg = Math.ceilDiv((int) syphon, 100); user.invulnerableTime = 0; Level level = user.level(); - user.hurt(level.damageSources().source(BMDamageSources.SACRIFICE, user), dmg); + user.hurt(level.damageSources().source(BMIdentifiers.DamageTypes.SACRIFICE, user), dmg); } } } diff --git a/src/main/java/wayoftime/bloodmagic/common/datamap/BloodRune.java b/src/main/java/wayoftime/bloodmagic/common/datamap/BloodRune.java index 9970f50d72..621ed8d7da 100644 --- a/src/main/java/wayoftime/bloodmagic/common/datamap/BloodRune.java +++ b/src/main/java/wayoftime/bloodmagic/common/datamap/BloodRune.java @@ -2,8 +2,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.util.StringRepresentable; -import wayoftime.bloodmagic.util.EnumRuneType; +import wayoftime.bloodmagic.api.altar.EnumRuneType; public record BloodRune(EnumRuneType type, int amount) { public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/datamap/LivingArmorData.java b/src/main/java/wayoftime/bloodmagic/common/datamap/LivingArmorData.java index 9ebcd0cd2d..36b7468363 100644 --- a/src/main/java/wayoftime/bloodmagic/common/datamap/LivingArmorData.java +++ b/src/main/java/wayoftime/bloodmagic/common/datamap/LivingArmorData.java @@ -5,13 +5,13 @@ import net.minecraft.core.registries.Registries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; +import wayoftime.bloodmagic.api.BMIdentifiers; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.BMRegistries; public record LivingArmorData(TagKey requiredSet, TagKey startingUpgrades, TagKey blacklist) { public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( TagKey.codec(Registries.ITEM).fieldOf("required_set").forGetter(LivingArmorData::requiredSet), - TagKey.codec(BMRegistries.Keys.LIVING_UPGRADES).fieldOf("starting_upgrades").forGetter(LivingArmorData::startingUpgrades), - TagKey.codec(BMRegistries.Keys.LIVING_UPGRADES).fieldOf("blacklist").forGetter(LivingArmorData::blacklist) + TagKey.codec(BMIdentifiers.RegistryKeys.LIVING_UPGRADES).fieldOf("starting_upgrades").forGetter(LivingArmorData::startingUpgrades), + TagKey.codec(BMIdentifiers.RegistryKeys.LIVING_UPGRADES).fieldOf("blacklist").forGetter(LivingArmorData::blacklist) ).apply(builder, LivingArmorData::new)); } diff --git a/src/main/java/wayoftime/bloodmagic/common/event/CommonEventHandler.java b/src/main/java/wayoftime/bloodmagic/common/event/CommonEventHandler.java index ba5b955b30..19581ede67 100644 --- a/src/main/java/wayoftime/bloodmagic/common/event/CommonEventHandler.java +++ b/src/main/java/wayoftime/bloodmagic/common/event/CommonEventHandler.java @@ -11,7 +11,7 @@ import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.Binding; import java.util.Objects; diff --git a/src/main/java/wayoftime/bloodmagic/common/item/BloodOrbItem.java b/src/main/java/wayoftime/bloodmagic/common/item/BloodOrbItem.java index 66ae01adb5..d889e21790 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/BloodOrbItem.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/BloodOrbItem.java @@ -11,11 +11,11 @@ import net.neoforged.neoforge.common.util.FakePlayer; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.Binding; import wayoftime.bloodmagic.common.datacomponent.SoulNetwork; import wayoftime.bloodmagic.common.datamap.BMDataMaps; -import wayoftime.bloodmagic.util.SoulTicket; -import wayoftime.bloodmagic.util.helper.SoulNetworkHelper; +import wayoftime.bloodmagic.api.soulnetwork.SoulTicket; +import wayoftime.bloodmagic.api.helper.SoulNetworkHelper; public class BloodOrbItem extends Item { diff --git a/src/main/java/wayoftime/bloodmagic/common/item/SigilItem.java b/src/main/java/wayoftime/bloodmagic/common/item/SigilItem.java index 0df4747acc..8fd9ca140b 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/SigilItem.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/SigilItem.java @@ -20,10 +20,10 @@ import wayoftime.bloodmagic.api.BMIdentifiers.Sigils; import wayoftime.bloodmagic.api.sigil.SigilEffect; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.Binding; import wayoftime.bloodmagic.common.datacomponent.SoulNetwork; -import wayoftime.bloodmagic.util.SoulTicket; -import wayoftime.bloodmagic.util.helper.SoulNetworkHelper; +import wayoftime.bloodmagic.api.soulnetwork.SoulTicket; +import wayoftime.bloodmagic.api.helper.SoulNetworkHelper; import java.util.List; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingEffectComponents.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingEffectComponents.java index 6872f78730..37212f4913 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/LivingEffectComponents.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/LivingEffectComponents.java @@ -8,13 +8,15 @@ import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingValueEffect; import wayoftime.bloodmagic.common.living.effects.*; -import wayoftime.bloodmagic.common.registry.BMRegistries; import java.util.List; public class LivingEffectComponents { - public static final DeferredRegister.DataComponents LIVING_EFFECT_COMPONENTS = DeferredRegister.createDataComponents(BMRegistries.Keys.LIVING_EFFECT_COMPONENTS, BloodMagic.MODID); + public static final DeferredRegister.DataComponents LIVING_EFFECT_COMPONENTS = DeferredRegister.createDataComponents(BMIdentifiers.RegistryKeys.LIVING_EFFECT_COMPONENTS, BloodMagic.MODID); public static final Codec> COMPONENT_CODEC = Codec.lazyInitialized(() -> LIVING_EFFECT_COMPONENTS.getRegistry().get().byNameCodec()); public static final Codec CODEC = DataComponentMap.makeCodec(COMPONENT_CODEC); diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffect.java deleted file mode 100644 index be12c663d9..0000000000 --- a/src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffect.java +++ /dev/null @@ -1,45 +0,0 @@ -package wayoftime.bloodmagic.common.living; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; -import net.minecraft.world.entity.Entity; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.registries.DeferredRegister; -import wayoftime.bloodmagic.BloodMagic; -import wayoftime.bloodmagic.common.living.effects.*; -import wayoftime.bloodmagic.common.registry.BMRegistries; - -import java.util.function.Function; -import java.util.function.Supplier; - -public interface LivingEntityEffect { - DeferredRegister> ENTITY_EFFECT_TYPE = DeferredRegister.create(BMRegistries.Keys.ENTITY_EFFECT_TYPE, BloodMagic.MODID); - Codec CODEC = Codec.lazyInitialized(() -> ENTITY_EFFECT_TYPE - .getRegistry() - .get() - .byNameCodec() - .dispatch(LivingEntityEffect::codec, Function.identity()) - ); - - Supplier> COOLDOWN = ENTITY_EFFECT_TYPE.register("cooldown", () -> CooldownEffect.CODEC); - Supplier> RESET_COOLDOWN = ENTITY_EFFECT_TYPE.register("reset_cooldown", () -> ResetCooldownEffect.CODEC); - Supplier> MOVEMENT_MODIFIER = ENTITY_EFFECT_TYPE.register("movement_modifier", () -> MovementModifier.CODEC); - Supplier> ADD_MOB_EFFECT = ENTITY_EFFECT_TYPE.register("add_mob_effect", () -> AddMobEffect.CODEC); - Supplier> REMOVE_MOB_EFFECT = ENTITY_EFFECT_TYPE.register("remove_mob_effect", () -> RemoveMobEffect.CODEC); - Supplier> RANDOM_ARMOUR_DAMAGE = ENTITY_EFFECT_TYPE.register("random_armour_damage", () -> RandomArmourDamageEffect.CODEC); - Supplier> EXHAUST = ENTITY_EFFECT_TYPE.register("exhaust", () -> CauseExhaustionEffect.CODEC); - - Supplier> ENTITY_BASED_EXP = ENTITY_EFFECT_TYPE.register("living_exp", () -> EntityBasedExp.CODEC); - Supplier> DISTANCE_EXP = ENTITY_EFFECT_TYPE.register("distance_living_exp", () -> DistanceExpGain.CODEC); - Supplier> EATING_EXP = ENTITY_EFFECT_TYPE.register("eating_living_exp", () -> EatingExpEffect.CODEC); - Supplier> REPAIR_EXP = ENTITY_EFFECT_TYPE.register("repairing_living_exp", () -> ItemDamageBasedExpGain.CODEC); - - static void register(IEventBus modBus) { - ENTITY_EFFECT_TYPE.makeRegistry(builder -> {}); - ENTITY_EFFECT_TYPE.register(modBus); - } - - void apply(int upgradeLevel, Entity entity); - - MapCodec codec(); -} diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffects.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffects.java new file mode 100644 index 0000000000..00ccd8e71c --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/common/living/LivingEntityEffects.java @@ -0,0 +1,34 @@ +package wayoftime.bloodmagic.common.living; + +import com.mojang.serialization.MapCodec; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; +import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; +import wayoftime.bloodmagic.common.living.effects.*; + +import java.util.function.Supplier; + +public class LivingEntityEffects { + public static final DeferredRegister> ENTITY_EFFECT_TYPE = DeferredRegister.create(BMIdentifiers.RegistryKeys.ENTITY_EFFECT_TYPE, BloodMagic.MODID); + + public static final Supplier> COOLDOWN = ENTITY_EFFECT_TYPE.register("cooldown", () -> CooldownEffect.CODEC); + public static final Supplier> RESET_COOLDOWN = ENTITY_EFFECT_TYPE.register("reset_cooldown", () -> ResetCooldownEffect.CODEC); + public static final Supplier> MOVEMENT_MODIFIER = ENTITY_EFFECT_TYPE.register("movement_modifier", () -> MovementModifier.CODEC); + public static final Supplier> ADD_MOB_EFFECT = ENTITY_EFFECT_TYPE.register("add_mob_effect", () -> AddMobEffect.CODEC); + public static final Supplier> REMOVE_MOB_EFFECT = ENTITY_EFFECT_TYPE.register("remove_mob_effect", () -> RemoveMobEffect.CODEC); + public static final Supplier> RANDOM_ARMOUR_DAMAGE = ENTITY_EFFECT_TYPE.register("random_armour_damage", () -> RandomArmourDamageEffect.CODEC); + public static final Supplier> EXHAUST = ENTITY_EFFECT_TYPE.register("exhaust", () -> CauseExhaustionEffect.CODEC); + + public static final Supplier> ENTITY_BASED_EXP = ENTITY_EFFECT_TYPE.register("living_exp", () -> EntityBasedExp.CODEC); + public static final Supplier> DISTANCE_EXP = ENTITY_EFFECT_TYPE.register("distance_living_exp", () -> DistanceExpGain.CODEC); + public static final Supplier> EATING_EXP = ENTITY_EFFECT_TYPE.register("eating_living_exp", () -> EatingExpEffect.CODEC); + public static final Supplier> REPAIR_EXP = ENTITY_EFFECT_TYPE.register("repairing_living_exp", () -> ItemDamageBasedExpGain.CODEC); + + public static void register(IEventBus modBus) { + ENTITY_EFFECT_TYPE.makeRegistry(builder -> {}); + ENTITY_EFFECT_TYPE.register(modBus); + } + +} diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingEventHandler.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingEventHandler.java index 606d996bb9..a643d1eb88 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/LivingEventHandler.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/LivingEventHandler.java @@ -1,7 +1,6 @@ package wayoftime.bloodmagic.common.living; import net.minecraft.core.component.DataComponents; -import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.damagesource.DamageSource; @@ -12,10 +11,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.UseAnim; import net.minecraft.world.item.component.ItemAttributeModifiers; -import net.minecraft.world.item.component.ItemLore; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.common.damagesource.DamageContainer; @@ -28,10 +25,7 @@ import net.neoforged.neoforge.event.tick.PlayerTickEvent; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.item.BMItems; -import wayoftime.bloodmagic.common.tag.BMTags; - -import java.util.List; +import wayoftime.bloodmagic.api.BMTags; @EventBusSubscriber(modid = BloodMagic.MODID) public class LivingEventHandler { diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingHelper.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingHelper.java index e23f0ddcce..e9a413b767 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/LivingHelper.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/LivingHelper.java @@ -23,16 +23,16 @@ import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableFloat; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.datacomponent.LivingStats; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.LivingStats; import wayoftime.bloodmagic.common.datacomponent.UpgradeLimits; import wayoftime.bloodmagic.common.datacomponent.UpgradeTome; import wayoftime.bloodmagic.common.datamap.BMDataMaps; import wayoftime.bloodmagic.common.datamap.LivingArmorData; import wayoftime.bloodmagic.common.event.LivingArmorEvent; import wayoftime.bloodmagic.api.item.UpgradeHolderBase; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import wayoftime.bloodmagic.util.ChatUtil; import java.util.Map; @@ -317,7 +317,7 @@ public static void setDefaultLiving(ItemStack livingPlate, HolderLookup.Provider if (data == null) { return; } - HolderSet startingSet = holders.lookupOrThrow(BMRegistries.Keys.LIVING_UPGRADES).get(data.startingUpgrades()).orElseThrow(); + HolderSet startingSet = holders.lookupOrThrow(BMIdentifiers.RegistryKeys.LIVING_UPGRADES).get(data.startingUpgrades()).orElseThrow(); livingPlate.set(BMDataComponents.UPGRADES, new LivingStats(fromHolderSet(startingSet))); livingPlate.set(BMDataComponents.IS_EVOLVED, false); } diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingUpgrade.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingUpgrade.java index 88d050f290..66112c6345 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/LivingUpgrade.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/LivingUpgrade.java @@ -26,9 +26,10 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import org.apache.commons.lang3.mutable.MutableFloat; import org.apache.logging.log4j.util.TriConsumer; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.living.LivingValueEffect; import wayoftime.bloodmagic.common.living.effects.AttributeEffect; import wayoftime.bloodmagic.common.living.effects.ConditionalEffect; -import wayoftime.bloodmagic.common.registry.BMRegistries; import java.util.*; import java.util.function.Consumer; @@ -45,13 +46,13 @@ public record LivingUpgrade(Levels levels, DataComponentMap effects) { Codec.unit(DataComponentMap.EMPTY).fieldOf("effects").forGetter(LivingUpgrade::effects) ).apply(builder, LivingUpgrade::new)); - public static final StreamCodec> HOLDER_STREAM_CODEC = ByteBufCodecs.holderRegistry(BMRegistries.Keys.LIVING_UPGRADES); + public static final StreamCodec> HOLDER_STREAM_CODEC = ByteBufCodecs.holderRegistry(BMIdentifiers.RegistryKeys.LIVING_UPGRADES); public static String descriptionId(ResourceKey key) { return Util.makeDescriptionId("living_upgrade", key.location()); } - public static final Codec> HOLDER_CODEC = RegistryFixedCodec.create(BMRegistries.Keys.LIVING_UPGRADES); + public static final Codec> HOLDER_CODEC = RegistryFixedCodec.create(BMIdentifiers.RegistryKeys.LIVING_UPGRADES); public void modifyKnockback(Integer level, LivingEntity victim, DamageSource source, MutableFloat mutablefloat) { modifyFilteredDamageValue(LivingEffectComponents.KNOCKBACK.get(), level, victim, source, mutablefloat); diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffect.java deleted file mode 100644 index 7eaea81d13..0000000000 --- a/src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffect.java +++ /dev/null @@ -1,39 +0,0 @@ -package wayoftime.bloodmagic.common.living; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; -import net.minecraft.world.level.storage.loot.LootContext; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.registries.DeferredRegister; -import wayoftime.bloodmagic.BloodMagic; -import wayoftime.bloodmagic.common.living.effects.*; -import wayoftime.bloodmagic.common.registry.BMRegistries; - -import java.util.function.Function; -import java.util.function.Supplier; - -public interface LivingValueEffect { - DeferredRegister> VALUE_BASED_EFFECT_TYPE = DeferredRegister.create(BMRegistries.Keys.VALUE_BASED_EFFECT_TYPE, BloodMagic.MODID); - Codec CODEC = Codec.lazyInitialized(() -> VALUE_BASED_EFFECT_TYPE - .getRegistry() - .get() - .byNameCodec() - .dispatch(LivingValueEffect::codec, Function.identity()) - ); - - Supplier> DELEGATE = VALUE_BASED_EFFECT_TYPE.register("delegate", () -> DelegateEffect.CODEC); - Supplier> MULTIPLY_REDUCTION = VALUE_BASED_EFFECT_TYPE.register("multiply_reduce", () -> MultiplyReduceValue.CODEC); - Supplier> MULTIPLY = VALUE_BASED_EFFECT_TYPE.register("multiply_increase", () -> MultiplyIncreaseValue.CODEC); - Supplier> ADD = VALUE_BASED_EFFECT_TYPE.register("add_value", () -> AddValue.CODEC); - - Supplier> VALUE_BASED_EXP = VALUE_BASED_EFFECT_TYPE.register("living_exp", () -> ValueBasedExp.CODEC); - - static void register(IEventBus modBus) { - VALUE_BASED_EFFECT_TYPE.makeRegistry(builder -> {}); - VALUE_BASED_EFFECT_TYPE.register(modBus); - } - - float process(int level, LootContext lootContext, float value); - - MapCodec codec(); -} diff --git a/src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffects.java b/src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffects.java new file mode 100644 index 0000000000..11967cbab0 --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/common/living/LivingValueEffects.java @@ -0,0 +1,28 @@ +package wayoftime.bloodmagic.common.living; + +import com.mojang.serialization.MapCodec; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; +import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.living.LivingValueEffect; +import wayoftime.bloodmagic.common.living.effects.*; + +import java.util.function.Supplier; + +public class LivingValueEffects { + public static final DeferredRegister> VALUE_BASED_EFFECT_TYPE = DeferredRegister.create(BMIdentifiers.RegistryKeys.VALUE_BASED_EFFECT_TYPE, BloodMagic.MODID); + + public static final Supplier> DELEGATE = VALUE_BASED_EFFECT_TYPE.register("delegate", () -> DelegateEffect.CODEC); + public static final Supplier> MULTIPLY_REDUCTION = VALUE_BASED_EFFECT_TYPE.register("multiply_reduce", () -> MultiplyReduceValue.CODEC); + public static final Supplier> MULTIPLY = VALUE_BASED_EFFECT_TYPE.register("multiply_increase", () -> MultiplyIncreaseValue.CODEC); + public static final Supplier> ADD = VALUE_BASED_EFFECT_TYPE.register("add_value", () -> AddValue.CODEC); + + public static final Supplier> VALUE_BASED_EXP = VALUE_BASED_EFFECT_TYPE.register("living_exp", () -> ValueBasedExp.CODEC); + + public static void register(IEventBus modBus) { + VALUE_BASED_EFFECT_TYPE.makeRegistry(builder -> {}); + VALUE_BASED_EFFECT_TYPE.register(modBus); + } + +} diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/AddMobEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/AddMobEffect.java index 4699befe08..17e359b0a7 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/AddMobEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/AddMobEffect.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.enchantment.LevelBasedValue; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; public record AddMobEffect(Holder mobEffect, LevelBasedValue amplifier, LevelBasedValue duration) implements LivingEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/AddValue.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/AddValue.java index 7affa8b2c7..9bf694a5fc 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/AddValue.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/AddValue.java @@ -4,7 +4,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.world.item.enchantment.LevelBasedValue; import net.minecraft.world.level.storage.loot.LootContext; -import wayoftime.bloodmagic.common.living.LivingValueEffect; +import wayoftime.bloodmagic.api.living.LivingValueEffect; public record AddValue(LevelBasedValue amounts) implements LivingValueEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/CauseExhaustionEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/CauseExhaustionEffect.java index b7d3272102..5d6f32e5a0 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/CauseExhaustionEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/CauseExhaustionEffect.java @@ -5,7 +5,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.enchantment.LevelBasedValue; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; public record CauseExhaustionEffect(LevelBasedValue amounts) implements LivingEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/CooldownEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/CooldownEffect.java index 31f722df86..d8a86b3309 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/CooldownEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/CooldownEffect.java @@ -5,7 +5,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import wayoftime.bloodmagic.common.dataattachment.BMDataAttachments; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import java.util.Map; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/DelegateEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/DelegateEffect.java index d2246db78f..dc202a6443 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/DelegateEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/DelegateEffect.java @@ -4,8 +4,8 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; -import wayoftime.bloodmagic.common.living.LivingValueEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingValueEffect; public record DelegateEffect(LivingEntityEffect effect) implements LivingValueEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/DistanceExpGain.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/DistanceExpGain.java index e43e40d358..8588b9ae55 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/DistanceExpGain.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/DistanceExpGain.java @@ -9,11 +9,10 @@ import net.minecraft.world.entity.player.Player; import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.common.dataattachment.BMDataAttachments; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import java.util.HashMap; import java.util.Map; public record DistanceExpGain(Holder upgrade, Movement movement) implements LivingEntityEffect { diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/EatingExpEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/EatingExpEffect.java index dd89b2f86f..402856c201 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/EatingExpEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/EatingExpEffect.java @@ -5,8 +5,7 @@ import net.minecraft.core.Holder; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import wayoftime.bloodmagic.BloodMagic; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/EntityBasedExp.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/EntityBasedExp.java index 01d2168798..911c3463ec 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/EntityBasedExp.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/EntityBasedExp.java @@ -5,7 +5,7 @@ import net.minecraft.core.Holder; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/ItemDamageBasedExpGain.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/ItemDamageBasedExpGain.java index ae26ce22b5..84d94582bf 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/ItemDamageBasedExpGain.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/ItemDamageBasedExpGain.java @@ -7,7 +7,7 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/MovementModifier.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/MovementModifier.java index d282e9edb6..9e6de74ef1 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/MovementModifier.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/MovementModifier.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.item.enchantment.LevelBasedValue; import net.minecraft.world.phys.Vec3; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; public record MovementModifier(LevelBasedValue amounts) implements LivingEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyIncreaseValue.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyIncreaseValue.java index 22532267a7..946849d75c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyIncreaseValue.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyIncreaseValue.java @@ -4,7 +4,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.world.item.enchantment.LevelBasedValue; import net.minecraft.world.level.storage.loot.LootContext; -import wayoftime.bloodmagic.common.living.LivingValueEffect; +import wayoftime.bloodmagic.api.living.LivingValueEffect; public record MultiplyIncreaseValue(LevelBasedValue amounts) implements LivingValueEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyReduceValue.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyReduceValue.java index 4c41a7095f..c4ecab2615 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyReduceValue.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/MultiplyReduceValue.java @@ -5,7 +5,7 @@ import net.minecraft.world.item.enchantment.LevelBasedValue; import net.minecraft.world.level.storage.loot.LootContext; import wayoftime.bloodmagic.BloodMagic; -import wayoftime.bloodmagic.common.living.LivingValueEffect; +import wayoftime.bloodmagic.api.living.LivingValueEffect; public record MultiplyReduceValue(LevelBasedValue amounts) implements LivingValueEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/RandomArmourDamageEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/RandomArmourDamageEffect.java index ee90cf764f..7d84f3ea68 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/RandomArmourDamageEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/RandomArmourDamageEffect.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.LevelBasedValue; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/RemoveMobEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/RemoveMobEffect.java index 8292b87dc0..be6cb1f27b 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/RemoveMobEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/RemoveMobEffect.java @@ -9,7 +9,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.enchantment.LevelBasedValue; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; public record RemoveMobEffect(Holder mobEffect, LevelBasedValue amplifier) implements LivingEntityEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/ResetCooldownEffect.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/ResetCooldownEffect.java index 9d886628bc..83e62a873b 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/ResetCooldownEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/ResetCooldownEffect.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.item.enchantment.LevelBasedValue; import wayoftime.bloodmagic.common.dataattachment.BMDataAttachments; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.api.living.LivingEntityEffect; import java.util.Map; import java.util.Optional; diff --git a/src/main/java/wayoftime/bloodmagic/common/living/effects/ValueBasedExp.java b/src/main/java/wayoftime/bloodmagic/common/living/effects/ValueBasedExp.java index 37e6e993ef..40c87587bc 100644 --- a/src/main/java/wayoftime/bloodmagic/common/living/effects/ValueBasedExp.java +++ b/src/main/java/wayoftime/bloodmagic/common/living/effects/ValueBasedExp.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import wayoftime.bloodmagic.common.living.LivingHelper; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.living.LivingValueEffect; +import wayoftime.bloodmagic.api.living.LivingValueEffect; public record ValueBasedExp(Holder upgrade, boolean victim) implements LivingValueEffect { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(builder -> builder.group( diff --git a/src/main/java/wayoftime/bloodmagic/common/menu/LivingStationMenu.java b/src/main/java/wayoftime/bloodmagic/common/menu/LivingStationMenu.java index 0bf25492de..4e27f083ff 100644 --- a/src/main/java/wayoftime/bloodmagic/common/menu/LivingStationMenu.java +++ b/src/main/java/wayoftime/bloodmagic/common/menu/LivingStationMenu.java @@ -1,7 +1,6 @@ package wayoftime.bloodmagic.common.menu; import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -12,11 +11,10 @@ import net.neoforged.neoforge.items.ItemStackHandler; import net.neoforged.neoforge.items.SlotItemHandler; import wayoftime.bloodmagic.common.block.BMBlocks; -import wayoftime.bloodmagic.common.blockentity.LivingStationTile; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; import wayoftime.bloodmagic.common.datacomponent.UpgradeTome; import wayoftime.bloodmagic.common.item.BMItems; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; public class LivingStationMenu extends AbstractContainerMenu { diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/forge/ForgeRecipe.java b/src/main/java/wayoftime/bloodmagic/common/recipe/forge/ForgeRecipe.java index 3f689078d0..807f0a3f54 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/forge/ForgeRecipe.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/forge/ForgeRecipe.java @@ -8,7 +8,7 @@ import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; import wayoftime.bloodmagic.common.datacomponent.EnumWillType; import wayoftime.bloodmagic.common.recipe.BMRecipes; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.BMTags; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/wayoftime/bloodmagic/common/registry/BMRegistries.java b/src/main/java/wayoftime/bloodmagic/common/registry/BMRegistries.java index 38866ced45..7ab9e04377 100644 --- a/src/main/java/wayoftime/bloodmagic/common/registry/BMRegistries.java +++ b/src/main/java/wayoftime/bloodmagic/common/registry/BMRegistries.java @@ -1,45 +1,30 @@ package wayoftime.bloodmagic.common.registry; -import com.mojang.serialization.MapCodec; -import net.minecraft.core.Registry; -import net.minecraft.core.component.DataComponentType; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DataPackRegistryEvent; -import wayoftime.bloodmagic.BloodMagic; import wayoftime.bloodmagic.api.BMIdentifiers.RegistryKeys; +import wayoftime.bloodmagic.api.altar.AltarTier; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; import wayoftime.bloodmagic.api.sigil.SigilEffect; import wayoftime.bloodmagic.common.living.LivingEffectComponents; -import wayoftime.bloodmagic.common.living.LivingEntityEffect; +import wayoftime.bloodmagic.common.living.LivingEntityEffects; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.living.LivingValueEffect; -import wayoftime.bloodmagic.common.ritual.imperfect.ImperfectRitualEffect; +import wayoftime.bloodmagic.common.living.LivingValueEffects; +import wayoftime.bloodmagic.common.ritual.imperfect.ImperfectRitualEffects; import wayoftime.bloodmagic.common.sigil.SigilEffects; public class BMRegistries { - public static class Keys { - public static final ResourceKey> ALTAR_TIER_KEY = ResourceKey.createRegistryKey(bm("altar_tier")); - - public static final ResourceKey> LIVING_UPGRADES = ResourceKey.createRegistryKey(bm("living_upgrades")); - public static final ResourceKey>> LIVING_EFFECT_COMPONENTS = ResourceKey.createRegistryKey(bm("living_effect_component")); - public static final ResourceKey>> VALUE_BASED_EFFECT_TYPE = ResourceKey.createRegistryKey(bm("value_based_effect_type")); - public static final ResourceKey>> ENTITY_EFFECT_TYPE = ResourceKey.createRegistryKey(bm("entity_effect_type")); - - public static final ResourceKey> IMPERFECT_RITUALS = ResourceKey.createRegistryKey(bm("imperfect_rituals")); - public static final ResourceKey>> IMPERFECT_RITUAL_EFFECT_TYPE = ResourceKey.createRegistryKey(bm("imperfect_ritual_effect_types")); - } private static void registerPack(DataPackRegistryEvent.NewRegistry event) { - event.dataPackRegistry(Keys.ALTAR_TIER_KEY, AltarTier.CODEC); + event.dataPackRegistry(RegistryKeys.ALTAR_TIER_KEY, AltarTier.CODEC); event.dataPackRegistry( - Keys.LIVING_UPGRADES, + RegistryKeys.LIVING_UPGRADES, LivingUpgrade.CODEC, LivingUpgrade.CLIENT_CODEC, builder -> builder.sync(true) ); event.dataPackRegistry( - Keys.IMPERFECT_RITUALS, + RegistryKeys.IMPERFECT_RITUALS, ImperfectRitualEffect.CODEC, ImperfectRitualEffect.CODEC, builder -> builder.sync(true) @@ -56,13 +41,9 @@ public static void register(IEventBus modBus) { modBus.addListener(BMRegistries::registerPack); LivingEffectComponents.register(modBus); - LivingValueEffect.register(modBus); - LivingEntityEffect.register(modBus); - ImperfectRitualEffect.register(modBus); + LivingValueEffects.register(modBus); + LivingEntityEffects.register(modBus); + ImperfectRitualEffects.register(modBus); SigilEffects.register(modBus); } - - private static ResourceLocation bm(String path) { - return ResourceLocation.fromNamespaceAndPath(BloodMagic.MODID, path); - } } diff --git a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ApplyPotionEffect.java b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ApplyPotionEffect.java index 5a4f08d8ef..ba37ee6a30 100644 --- a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ApplyPotionEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ApplyPotionEffect.java @@ -10,6 +10,7 @@ import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.player.Player; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; import java.util.Optional; diff --git a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffect.java b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffect.java deleted file mode 100644 index 6e43c04f24..0000000000 --- a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffect.java +++ /dev/null @@ -1,40 +0,0 @@ -package wayoftime.bloodmagic.common.ritual.imperfect; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.player.Player; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.registries.DeferredRegister; -import wayoftime.bloodmagic.BloodMagic; -import wayoftime.bloodmagic.common.registry.BMRegistries; - -import java.util.function.Function; -import java.util.function.Supplier; - -// TODO should probably define cost here and have it be part of this codec, but not sure how to do that -public interface ImperfectRitualEffect { - DeferredRegister> IMPERFECT_RITUAL_EFFECT_TYPE = DeferredRegister.create(BMRegistries.Keys.IMPERFECT_RITUAL_EFFECT_TYPE, BloodMagic.MODID); - Codec CODEC = Codec.lazyInitialized(() -> IMPERFECT_RITUAL_EFFECT_TYPE - .getRegistry() - .get() - .byNameCodec() - .dispatch(ImperfectRitualEffect::codec, Function.identity()) - ); - - Supplier> SET_TIME_EFFECT = IMPERFECT_RITUAL_EFFECT_TYPE.register("set_time", () -> SetTimeEffect.CODEC); - Supplier> APPLY_POTION_EFFECT = IMPERFECT_RITUAL_EFFECT_TYPE.register("apply_potion", () -> ApplyPotionEffect.CODEC); - Supplier> SPAWN_MOB_EFFECT = IMPERFECT_RITUAL_EFFECT_TYPE.register("spawn_mob", () -> SpawnMobEffect.CODEC); - - static void register(IEventBus modBus) { - IMPERFECT_RITUAL_EFFECT_TYPE.makeRegistry(builder -> {}); - IMPERFECT_RITUAL_EFFECT_TYPE.register(modBus); - } - - int getCost(); - - void perform(Player player, ServerLevel level, BlockPos ritualPos); - - MapCodec codec(); -} diff --git a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffects.java b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffects.java new file mode 100644 index 0000000000..93c51efb3d --- /dev/null +++ b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/ImperfectRitualEffects.java @@ -0,0 +1,24 @@ +package wayoftime.bloodmagic.common.ritual.imperfect; + +import com.mojang.serialization.MapCodec; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; +import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; + +import java.util.function.Supplier; + +public class ImperfectRitualEffects { + public static final DeferredRegister> IMPERFECT_RITUAL_EFFECT_TYPE = DeferredRegister.create(BMIdentifiers.RegistryKeys.IMPERFECT_RITUAL_EFFECT_TYPE, BloodMagic.MODID); + + public static final Supplier> SET_TIME_EFFECT = IMPERFECT_RITUAL_EFFECT_TYPE.register("set_time", () -> SetTimeEffect.CODEC); + public static final Supplier> APPLY_POTION_EFFECT = IMPERFECT_RITUAL_EFFECT_TYPE.register("apply_potion", () -> ApplyPotionEffect.CODEC); + public static final Supplier> SPAWN_MOB_EFFECT = IMPERFECT_RITUAL_EFFECT_TYPE.register("spawn_mob", () -> SpawnMobEffect.CODEC); + + public static void register(IEventBus modBus) { + IMPERFECT_RITUAL_EFFECT_TYPE.makeRegistry(builder -> {}); + IMPERFECT_RITUAL_EFFECT_TYPE.register(modBus); + } + +} diff --git a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SetTimeEffect.java b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SetTimeEffect.java index 90b199336d..2fa9e0d1f8 100644 --- a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SetTimeEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SetTimeEffect.java @@ -6,6 +6,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Player; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; public record SetTimeEffect(int cost, int dayTime) implements ImperfectRitualEffect { diff --git a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SpawnMobEffect.java b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SpawnMobEffect.java index 4139bb016a..2d4c8521ac 100644 --- a/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SpawnMobEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/ritual/imperfect/SpawnMobEffect.java @@ -18,6 +18,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.player.Player; +import wayoftime.bloodmagic.api.ritual.ImperfectRitualEffect; import java.util.List; import java.util.Optional; diff --git a/src/main/java/wayoftime/bloodmagic/common/sigil/DivinationEffect.java b/src/main/java/wayoftime/bloodmagic/common/sigil/DivinationEffect.java index 9427477f26..a44ab3ac71 100644 --- a/src/main/java/wayoftime/bloodmagic/common/sigil/DivinationEffect.java +++ b/src/main/java/wayoftime/bloodmagic/common/sigil/DivinationEffect.java @@ -13,9 +13,9 @@ import wayoftime.bloodmagic.api.sigil.SigilEffect; import wayoftime.bloodmagic.common.blockentity.BloodAltarTile; import wayoftime.bloodmagic.common.datacomponent.BMDataComponents; -import wayoftime.bloodmagic.common.datacomponent.Binding; +import wayoftime.bloodmagic.api.datacomponent.Binding; import wayoftime.bloodmagic.util.ChatUtil; -import wayoftime.bloodmagic.util.helper.SoulNetworkHelper; +import wayoftime.bloodmagic.api.helper.SoulNetworkHelper; import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public int useOnBlock(ItemStack sigil, Player player, UseOnContext context) { if (be instanceof BloodAltarTile altar) { List send = new ArrayList<>(); - send.add(translateAltar("tier", Component.translatable("altar.bloodmagic.tier_" + altar.tier))); + send.add(translateAltar("tier", Component.translatable("altar.bloodmagic.tier_" + altar.getTier()))); send.add(translateAltar("essence", altar.getFluidInTank(0))); send.add(translateAltar("max_essence", altar.getMainCapacity())); if (isAdvanced) { diff --git a/src/main/java/wayoftime/bloodmagic/common/tag/TagsCache.java b/src/main/java/wayoftime/bloodmagic/common/tag/TagsCache.java index 4902ddcb53..7b8a27eb71 100644 --- a/src/main/java/wayoftime/bloodmagic/common/tag/TagsCache.java +++ b/src/main/java/wayoftime/bloodmagic/common/tag/TagsCache.java @@ -8,8 +8,9 @@ import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.TagsUpdatedEvent; import wayoftime.bloodmagic.BloodMagic; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.BMTags; import wayoftime.bloodmagic.common.living.LivingUpgrade; -import wayoftime.bloodmagic.common.registry.BMRegistries; import java.util.function.Consumer; @@ -44,12 +45,12 @@ public static void onTagsUpdated(TagsUpdatedEvent event) { RegistryAccess access = event.getRegistryAccess(); datapackHelper( access, - BMRegistries.Keys.LIVING_UPGRADES, + BMIdentifiers.RegistryKeys.LIVING_UPGRADES, registry -> TOOLTIP_ORDER = registry.getOrCreateTag(BMTags.Living.TOOLTIP_ORDER) ); datapackHelper( access, - BMRegistries.Keys.LIVING_UPGRADES, + BMIdentifiers.RegistryKeys.LIVING_UPGRADES, registry -> UPGRADE_SCRAPPABLE = registry.getOrCreateTag(BMTags.Living.IS_SCRAPPABLE) ); } diff --git a/src/main/java/wayoftime/bloodmagic/util/AltarUtil.java b/src/main/java/wayoftime/bloodmagic/util/AltarUtil.java index 26942cda85..2c2d6bac60 100644 --- a/src/main/java/wayoftime/bloodmagic/util/AltarUtil.java +++ b/src/main/java/wayoftime/bloodmagic/util/AltarUtil.java @@ -17,13 +17,13 @@ import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.server.ServerStartedEvent; import net.neoforged.neoforge.event.server.ServerStoppedEvent; +import wayoftime.bloodmagic.api.BMIdentifiers; +import wayoftime.bloodmagic.api.altar.EnumRuneType; import wayoftime.bloodmagic.common.block.BMBlocks; import wayoftime.bloodmagic.common.caps.BMCaps; -import wayoftime.bloodmagic.common.caps.IRunePowers; -import wayoftime.bloodmagic.common.damagesource.BMDamageSources; -import wayoftime.bloodmagic.common.registry.AltarTier; -import wayoftime.bloodmagic.common.registry.BMRegistries; -import wayoftime.bloodmagic.common.tag.BMTags; +import wayoftime.bloodmagic.api.capability.IRunePowers; +import wayoftime.bloodmagic.api.altar.AltarTier; +import wayoftime.bloodmagic.api.BMTags; import java.util.*; @@ -33,7 +33,7 @@ public class AltarUtil { static List TIERS = null; @SubscribeEvent public static void onServerStarted(ServerStartedEvent event) { - TIERS = event.getServer().registryAccess().registry(BMRegistries.Keys.ALTAR_TIER_KEY).orElseThrow().stream() + TIERS = event.getServer().registryAccess().registry(BMIdentifiers.RegistryKeys.ALTAR_TIER_KEY).orElseThrow().stream() .sorted() .toList(); } @@ -60,7 +60,7 @@ public static BlockPos findAltar(Level level, BlockPos pos, int radius) { public static DamageSource sacrificeDamage(Player causer) { DamageSources sources = causer.level().damageSources(); - return sources.source(BMDamageSources.SELF_SACRIFICE, causer); + return sources.source(BMIdentifiers.DamageTypes.SELF_SACRIFICE, causer); } public static int getTier(Level level, BlockPos altarPos) {