minecraft-src/net/minecraft/advancements/CriterionTrigger.java
2025-07-04 01:41:11 +03:00

24 lines
862 B
Java

package net.minecraft.advancements;
import com.mojang.serialization.Codec;
import net.minecraft.server.PlayerAdvancements;
public interface CriterionTrigger<T extends CriterionTriggerInstance> {
void addPlayerListener(PlayerAdvancements playerAdvancements, CriterionTrigger.Listener<T> listener);
void removePlayerListener(PlayerAdvancements playerAdvancements, CriterionTrigger.Listener<T> listener);
void removePlayerListeners(PlayerAdvancements playerAdvancements);
Codec<T> codec();
default Criterion<T> createCriterion(T triggerInstance) {
return new Criterion<>(this, triggerInstance);
}
public record Listener<T extends CriterionTriggerInstance>(T trigger, AdvancementHolder advancement, String criterion) {
public void run(PlayerAdvancements playerAdvancements) {
playerAdvancements.award(this.advancement, this.criterion);
}
}
}