Skip to content

Commit

Permalink
Add advancement for using mist
Browse files Browse the repository at this point in the history
  • Loading branch information
williambl committed May 20, 2022
1 parent 809d5bf commit 6b5bb04
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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,
Expand Down
23 changes: 12 additions & 11 deletions src/main/kotlin/com/williambl/haema/criteria/CriteriaModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
27 changes: 27 additions & 0 deletions src/main/kotlin/com/williambl/haema/criteria/UseMistCriterion.kt
Original file line number Diff line number Diff line change
@@ -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<UseMistCriterion.Conditions>() {
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)
}
2 changes: 2 additions & 0 deletions src/main/resources/assets/haema/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
24 changes: 24 additions & 0 deletions src/main/resources/data/haema/advancements/use_mist.json
Original file line number Diff line number Diff line change
@@ -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"
}

0 comments on commit 6b5bb04

Please sign in to comment.