package net.minecraft.server; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; import javax.annotation.Nullable; public class CriterionConditionFluid { public static final CriterionConditionFluid a = new CriterionConditionFluid((Tag) null, (FluidType) null, CriterionTriggerProperties.a); @Nullable private final Tag<FluidType> b; @Nullable private final FluidType c; private final CriterionTriggerProperties d; public CriterionConditionFluid(@Nullable Tag<FluidType> tag, @Nullable FluidType fluidtype, CriterionTriggerProperties criteriontriggerproperties) { this.b = tag; this.c = fluidtype; this.d = criteriontriggerproperties; } public boolean a(WorldServer worldserver, BlockPosition blockposition) { if (this == CriterionConditionFluid.a) { return true; } else if (!worldserver.n(blockposition)) { return false; } else { Fluid fluid = worldserver.getFluid(blockposition); FluidType fluidtype = fluid.getType(); return this.b != null && !this.b.isTagged(fluidtype) ? false : (this.c != null && fluidtype != this.c ? false : this.d.a(fluid)); } } public static CriterionConditionFluid a(@Nullable JsonElement jsonelement) { if (jsonelement != null && !jsonelement.isJsonNull()) { JsonObject jsonobject = ChatDeserializer.m(jsonelement, "fluid"); FluidType fluidtype = null; if (jsonobject.has("fluid")) { MinecraftKey minecraftkey = new MinecraftKey(ChatDeserializer.h(jsonobject, "fluid")); fluidtype = (FluidType) IRegistry.FLUID.get(minecraftkey); } Tag<FluidType> tag = null; if (jsonobject.has("tag")) { MinecraftKey minecraftkey1 = new MinecraftKey(ChatDeserializer.h(jsonobject, "tag")); tag = TagsFluid.a().a(minecraftkey1); if (tag == null) { throw new JsonSyntaxException("Unknown fluid tag '" + minecraftkey1 + "'"); } } CriterionTriggerProperties criteriontriggerproperties = CriterionTriggerProperties.a(jsonobject.get("state")); return new CriterionConditionFluid(tag, fluidtype, criteriontriggerproperties); } else { return CriterionConditionFluid.a; } } public JsonElement a() { if (this == CriterionConditionFluid.a) { return JsonNull.INSTANCE; } else { JsonObject jsonobject = new JsonObject(); if (this.c != null) { jsonobject.addProperty("fluid", IRegistry.FLUID.getKey(this.c).toString()); } if (this.b != null) { jsonobject.addProperty("tag", this.b.c().toString()); } jsonobject.add("state", this.d.a()); return jsonobject; } } }