minecraft-source/src/net/minecraft/advancements/CriterionTrigger.java

59 lines
2.0 KiB
Java

package net.minecraft.advancements;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import net.minecraft.server.PlayerAdvancements;
import net.minecraft.resources.ResourceLocation;
public interface CriterionTrigger<T extends CriterionTriggerInstance> {
ResourceLocation getId();
void addPlayerListener(final PlayerAdvancements sv, final Listener<T> a);
void removePlayerListener(final PlayerAdvancements sv, final Listener<T> a);
void removePlayerListeners(final PlayerAdvancements sv);
T createInstance(final JsonObject jsonObject, final JsonDeserializationContext jsonDeserializationContext);
public static class Listener<T extends CriterionTriggerInstance> {
private final T trigger;
private final Advancement advancement;
private final String criterion;
public Listener(final T ac, final Advancement u, final String string) {
this.trigger = ac;
this.advancement = u;
this.criterion = string;
}
public T getTriggerInstance() {
return this.trigger;
}
public void run(final PlayerAdvancements sv) {
sv.award(this.advancement, this.criterion);
}
@Override
public boolean equals(final Object object) {
if (this == object) {
return true;
}
if (object == null || this.getClass() != object.getClass()) {
return false;
}
final Listener<?> a3 = object;
return this.trigger.equals(a3.trigger) && this.advancement.equals(a3.advancement) && this.criterion.equals(a3.criterion);
}
@Override
public int hashCode() {
int integer2 = this.trigger.hashCode();
integer2 = 31 * integer2 + this.advancement.hashCode();
integer2 = 31 * integer2 + this.criterion.hashCode();
return integer2;
}
}
}