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