24 lines
862 B
Java
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);
|
|
}
|
|
}
|
|
}
|