78 lines
2.7 KiB
Java
78 lines
2.7 KiB
Java
package net.minecraft.advancements;
|
|
|
|
import com.google.gson.JsonDeserializationContext;
|
|
import com.google.gson.JsonObject;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
public interface ICriterionTrigger<T extends ICriterionInstance>
|
|
{
|
|
ResourceLocation getId();
|
|
|
|
void addListener(PlayerAdvancements playerAdvancementsIn, ICriterionTrigger.Listener<T> listener);
|
|
|
|
void removeListener(PlayerAdvancements playerAdvancementsIn, ICriterionTrigger.Listener<T> listener);
|
|
|
|
void removeAllListeners(PlayerAdvancements playerAdvancementsIn);
|
|
|
|
/**
|
|
* Deserialize a ICriterionInstance of this trigger from the data in the JSON.
|
|
*/
|
|
T deserializeInstance(JsonObject json, JsonDeserializationContext context);
|
|
|
|
public static class Listener<T extends ICriterionInstance>
|
|
{
|
|
private final T criterionInstance;
|
|
private final Advancement advancement;
|
|
private final String criterionName;
|
|
|
|
public Listener(T criterionInstanceIn, Advancement advancementIn, String criterionNameIn)
|
|
{
|
|
this.criterionInstance = criterionInstanceIn;
|
|
this.advancement = advancementIn;
|
|
this.criterionName = criterionNameIn;
|
|
}
|
|
|
|
public T getCriterionInstance()
|
|
{
|
|
return this.criterionInstance;
|
|
}
|
|
|
|
public void grantCriterion(PlayerAdvancements playerAdvancementsIn)
|
|
{
|
|
playerAdvancementsIn.grantCriterion(this.advancement, this.criterionName);
|
|
}
|
|
|
|
public boolean equals(Object p_equals_1_)
|
|
{
|
|
if (this == p_equals_1_)
|
|
{
|
|
return true;
|
|
}
|
|
else if (p_equals_1_ != null && this.getClass() == p_equals_1_.getClass())
|
|
{
|
|
ICriterionTrigger.Listener<?> listener = (ICriterionTrigger.Listener)p_equals_1_;
|
|
|
|
if (!this.criterionInstance.equals(listener.criterionInstance))
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
return !this.advancement.equals(listener.advancement) ? false : this.criterionName.equals(listener.criterionName);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public int hashCode()
|
|
{
|
|
int i = this.criterionInstance.hashCode();
|
|
i = 31 * i + this.advancement.hashCode();
|
|
i = 31 * i + this.criterionName.hashCode();
|
|
return i;
|
|
}
|
|
}
|
|
} |