diff --git a/src/main/kotlin/com/williambl/haema/ability/component/mist_form/EntityMistFormAbilityComponent.kt b/src/main/kotlin/com/williambl/haema/ability/component/mist_form/EntityMistFormAbilityComponent.kt index db8b4a25..d4de75ab 100644 --- a/src/main/kotlin/com/williambl/haema/ability/component/mist_form/EntityMistFormAbilityComponent.kt +++ b/src/main/kotlin/com/williambl/haema/ability/component/mist_form/EntityMistFormAbilityComponent.kt @@ -1,6 +1,7 @@ package com.williambl.haema.ability.component.mist_form import com.williambl.haema.ability.AbilityModule +import com.williambl.haema.criteria.UseMistCriterion import com.williambl.haema.effect.EffectsModule import com.williambl.haema.effect.MistFormEffect import com.williambl.haema.id @@ -45,6 +46,10 @@ class EntityMistFormAbilityComponent(val entity: LivingEntity): MistFormAbilityC scaleTickDelay = 3 } if (isInMistForm) { + if (entity is ServerPlayerEntity) { + UseMistCriterion.trigger(entity) + } + PlayerLookup.tracking(entity).forEach { p -> ServerPlayNetworking.send( p, diff --git a/src/main/kotlin/com/williambl/haema/criteria/CriteriaModule.kt b/src/main/kotlin/com/williambl/haema/criteria/CriteriaModule.kt index bf8a2bc8..ae94db1e 100644 --- a/src/main/kotlin/com/williambl/haema/criteria/CriteriaModule.kt +++ b/src/main/kotlin/com/williambl/haema/criteria/CriteriaModule.kt @@ -4,40 +4,41 @@ import com.williambl.haema.api.AbilityChangeEvent import com.williambl.haema.api.BloodDrinkingEvents import com.williambl.haema.api.VampireConversionEvents import net.fabricmc.api.ModInitializer -import net.fabricmc.fabric.api.`object`.builder.v1.advancement.CriterionRegistry +import net.minecraft.advancement.criterion.Criteria import net.minecraft.server.network.ServerPlayerEntity object CriteriaModule: ModInitializer { override fun onInitialize() { - CriterionRegistry.register(VampireConversionCriterion) + Criteria.register(VampireConversionCriterion) VampireConversionEvents.CONVERT.register { player -> if (player is ServerPlayerEntity) VampireConversionCriterion.trigger(player) } - CriterionRegistry.register(VampireDeconversionCriterion) + Criteria.register(VampireDeconversionCriterion) VampireConversionEvents.DECONVERT.register { player -> if (player is ServerPlayerEntity) VampireDeconversionCriterion.trigger(player) } - CriterionRegistry.register(DrinkBloodCriterion) + Criteria.register(DrinkBloodCriterion) BloodDrinkingEvents.ON_BLOOD_DRINK.register { drinker, target, _ -> if (drinker is ServerPlayerEntity) DrinkBloodCriterion.trigger(drinker, target) } - CriterionRegistry.register(AbilityChangeCriterion) + Criteria.register(AbilityChangeCriterion) AbilityChangeEvent.EVENT.register { vampire, ability, level -> if (vampire is ServerPlayerEntity) AbilityChangeCriterion.trigger(vampire, ability, level) } - CriterionRegistry.register(UseDashCriterion) - CriterionRegistry.register(UseInvisibilityCriterion) - CriterionRegistry.register(VampireConversionFailureCriterion) - CriterionRegistry.register(StoreBloodCriterion) - CriterionRegistry.register(VampireHunterTriggerCriterion) - CriterionRegistry.register(UseRitualCriterion) + Criteria.register(UseDashCriterion) + Criteria.register(UseInvisibilityCriterion) + Criteria.register(VampireConversionFailureCriterion) + Criteria.register(StoreBloodCriterion) + Criteria.register(VampireHunterTriggerCriterion) + Criteria.register(UseRitualCriterion) + Criteria.register(UseMistCriterion) } } \ No newline at end of file diff --git a/src/main/kotlin/com/williambl/haema/criteria/UseMistCriterion.kt b/src/main/kotlin/com/williambl/haema/criteria/UseMistCriterion.kt new file mode 100644 index 00000000..891efba0 --- /dev/null +++ b/src/main/kotlin/com/williambl/haema/criteria/UseMistCriterion.kt @@ -0,0 +1,27 @@ +package com.williambl.haema.criteria + +import com.google.gson.JsonObject +import com.williambl.haema.id +import net.minecraft.advancement.criterion.AbstractCriterion +import net.minecraft.advancement.criterion.AbstractCriterionConditions +import net.minecraft.predicate.entity.AdvancementEntityPredicateDeserializer +import net.minecraft.predicate.entity.EntityPredicate +import net.minecraft.server.network.ServerPlayerEntity +import net.minecraft.util.Identifier + +object UseMistCriterion: AbstractCriterion() { + private val id = id("use_mist") + override fun getId(): Identifier = id + + override fun conditionsFromJson( + obj: JsonObject, + playerPredicate: EntityPredicate.Extended, + predicateDeserializer: AdvancementEntityPredicateDeserializer + ): Conditions = Conditions(playerPredicate) + + fun trigger(player: ServerPlayerEntity) { + this.trigger(player) { true } + } + + class Conditions(playerPredicate: EntityPredicate.Extended): AbstractCriterionConditions(id, playerPredicate) +} \ No newline at end of file diff --git a/src/main/resources/assets/haema/lang/en_us.json b/src/main/resources/assets/haema/lang/en_us.json index 2f6178ca..3e14b468 100644 --- a/src/main/resources/assets/haema/lang/en_us.json +++ b/src/main/resources/assets/haema/lang/en_us.json @@ -236,6 +236,8 @@ "advancement.haema.use_invis.description": "Use vampire invisibility", "advancement.haema.use_ritual_table": "Ancient Rites", "advancement.haema.use_ritual_table.description": "Perform a Ritual", + "advancement.haema.use_mist": "The fog is coming", + "advancement.haema.use_mist.description": "Use mist form", "ritual.action.add_level": "+%d ability points", "ritual.action.change_abilities": "Customise abilities", diff --git a/src/main/resources/data/haema/advancements/use_mist.json b/src/main/resources/data/haema/advancements/use_mist.json new file mode 100644 index 00000000..d6f9545a --- /dev/null +++ b/src/main/resources/data/haema/advancements/use_mist.json @@ -0,0 +1,24 @@ +{ + "__comment": "Made with TheDestruc7i0n's advancements generator: https://advancements.thedestruc7i0n.ca", + "display": { + "title": { + "translate": "advancement.haema.use_mist" + }, + "description": { + "translate": "advancement.haema.use_mist.description" + }, + "icon": { + "item": "minecraft:cobweb" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "usevampireinvis": { + "trigger": "haema:use_mist" + } + }, + "parent": "haema:use_ritual_table" +} \ No newline at end of file