добейте выживших (триггеры)
This commit is contained in:
parent
16b28a1d2d
commit
b7a8f6db14
@ -1,14 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.triggers
|
||||
|
||||
import com.google.gson.JsonObject
|
||||
import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance
|
||||
import net.minecraft.advancements.critereon.DamagePredicate
|
||||
import net.minecraft.advancements.critereon.DamageSourcePredicate
|
||||
import net.minecraft.advancements.critereon.DeserializationContext
|
||||
import net.minecraft.advancements.critereon.EntityPredicate
|
||||
import net.minecraft.advancements.critereon.MinMaxBounds
|
||||
import net.minecraft.advancements.critereon.SerializationContext
|
||||
import net.minecraft.advancements.critereon.SimpleCriterionTrigger
|
||||
import net.minecraft.advancements.critereon.*
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.damagesource.DamageSource
|
||||
@ -24,11 +17,11 @@ abstract class HurtTrigger : SimpleCriterionTrigger<HurtTrigger.Instance>() {
|
||||
|
||||
override fun createInstance(
|
||||
p_66248_: JsonObject,
|
||||
p_66249_: EntityPredicate.Composite,
|
||||
p_286603_: ContextAwarePredicate,
|
||||
p_66250_: DeserializationContext
|
||||
): Instance {
|
||||
return Instance(
|
||||
EntityPredicate.Composite.fromJson(p_66248_, "entity_predicate", p_66250_),
|
||||
EntityPredicate.fromJson(p_66248_, "entity_predicate", p_66250_),
|
||||
(p_66248_["damage"] as? JsonObject)?.let(DamagePredicate::fromJson) ?: DamagePredicate.ANY
|
||||
)
|
||||
}
|
||||
@ -42,7 +35,7 @@ abstract class HurtTrigger : SimpleCriterionTrigger<HurtTrigger.Instance>() {
|
||||
}
|
||||
|
||||
inner class Instance(
|
||||
val predicate: EntityPredicate.Composite = EntityPredicate.Composite.ANY,
|
||||
val predicate: ContextAwarePredicate = ContextAwarePredicate.ANY,
|
||||
val damagePredicate: DamagePredicate = DamagePredicate(
|
||||
MinMaxBounds.Doubles.atLeast(1.0),
|
||||
MinMaxBounds.Doubles.atLeast(1.0),
|
||||
@ -50,7 +43,7 @@ abstract class HurtTrigger : SimpleCriterionTrigger<HurtTrigger.Instance>() {
|
||||
null,
|
||||
DamageSourcePredicate.ANY
|
||||
)
|
||||
) : AbstractCriterionTriggerInstance(ID, EntityPredicate.Composite.ANY) {
|
||||
) : AbstractCriterionTriggerInstance(ID, ContextAwarePredicate.ANY) {
|
||||
override fun serializeToJson(pConditions: SerializationContext): JsonObject {
|
||||
return super.serializeToJson(pConditions).also {
|
||||
it["entity_predicate"] = predicate.toJson(pConditions)
|
||||
|
@ -4,11 +4,7 @@ import com.google.common.collect.ImmutableList
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonObject
|
||||
import com.google.gson.JsonSyntaxException
|
||||
import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance
|
||||
import net.minecraft.advancements.critereon.DeserializationContext
|
||||
import net.minecraft.advancements.critereon.EntityPredicate
|
||||
import net.minecraft.advancements.critereon.SerializationContext
|
||||
import net.minecraft.advancements.critereon.SimpleCriterionTrigger
|
||||
import net.minecraft.advancements.critereon.*
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.entity.monster.ElderGuardian
|
||||
@ -29,9 +25,9 @@ object KillAsAndroidTrigger : SimpleCriterionTrigger<KillAsAndroidTrigger.Instan
|
||||
return ID
|
||||
}
|
||||
|
||||
override fun createInstance(pJson: JsonObject, pPlayer: EntityPredicate.Composite, pContext: DeserializationContext): Instance {
|
||||
override fun createInstance(pJson: JsonObject, pPlayer: ContextAwarePredicate, pContext: DeserializationContext): Instance {
|
||||
return Instance(
|
||||
predicate = EntityPredicate.Composite.fromJson(pJson, "predicate", pContext),
|
||||
predicate = EntityPredicate.fromJson(pJson, "predicate", pContext),
|
||||
playerPredicate = pPlayer,
|
||||
featurePredicate = (pJson["feature_predicate"] as? JsonObject)?.let(PredicateType::from) ?: throw JsonSyntaxException("Invalid 'feature_predicate': ${pJson["feature_predicate"]}")
|
||||
)
|
||||
@ -168,9 +164,9 @@ object KillAsAndroidTrigger : SimpleCriterionTrigger<KillAsAndroidTrigger.Instan
|
||||
}
|
||||
|
||||
class Instance(
|
||||
val predicate: EntityPredicate.Composite = EntityPredicate.Composite.ANY,
|
||||
val predicate: ContextAwarePredicate = ContextAwarePredicate.ANY,
|
||||
val featurePredicate: FeaturePredicate = Always,
|
||||
playerPredicate: EntityPredicate.Composite = EntityPredicate.Composite.ANY,
|
||||
playerPredicate: ContextAwarePredicate = ContextAwarePredicate.ANY,
|
||||
) : AbstractCriterionTriggerInstance(ID, playerPredicate) {
|
||||
override fun serializeToJson(pConditions: SerializationContext): JsonObject {
|
||||
return super.serializeToJson(pConditions).also {
|
||||
@ -182,7 +178,7 @@ object KillAsAndroidTrigger : SimpleCriterionTrigger<KillAsAndroidTrigger.Instan
|
||||
|
||||
fun onKill(event: LivingDeathEvent) {
|
||||
if (event.entity is ElderGuardian) {
|
||||
val killer = event.entity.combatTracker.killer
|
||||
val killer = event.source.entity
|
||||
|
||||
if (killer is ServerPlayer) {
|
||||
val data = killer.matteryPlayer ?: return
|
||||
|
Loading…
Reference in New Issue
Block a user