minecraft-source/src/net/minecraft/advancements/critereon/EntityEquipmentPredicate.java

78 lines
3.8 KiB
Java

package net.minecraft.advancements.critereon;
import net.minecraft.world.entity.raid.Raid;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.item.Items;
import com.google.gson.JsonNull;
import com.google.gson.JsonObject;
import net.minecraft.util.GsonHelper;
import com.google.gson.JsonElement;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity;
import javax.annotation.Nullable;
import net.minecraft.world.entity.Entity;
public class EntityEquipmentPredicate {
public static final EntityEquipmentPredicate ANY;
public static final EntityEquipmentPredicate CAPTAIN;
private final ItemPredicate head;
private final ItemPredicate chest;
private final ItemPredicate legs;
private final ItemPredicate feet;
private final ItemPredicate mainhand;
private final ItemPredicate offhand;
public EntityEquipmentPredicate(final ItemPredicate bj1, final ItemPredicate bj2, final ItemPredicate bj3, final ItemPredicate bj4, final ItemPredicate bj5, final ItemPredicate bj6) {
this.head = bj1;
this.chest = bj2;
this.legs = bj3;
this.feet = bj4;
this.mainhand = bj5;
this.offhand = bj6;
}
public boolean matches(@Nullable final Entity akq) {
if (this == EntityEquipmentPredicate.ANY) {
return true;
}
if (!(akq instanceof LivingEntity)) {
return false;
}
final LivingEntity akz3 = (LivingEntity)akq;
return this.head.matches(akz3.getItemBySlot(EquipmentSlot.HEAD)) && this.chest.matches(akz3.getItemBySlot(EquipmentSlot.CHEST)) && this.legs.matches(akz3.getItemBySlot(EquipmentSlot.LEGS)) && this.feet.matches(akz3.getItemBySlot(EquipmentSlot.FEET)) && this.mainhand.matches(akz3.getItemBySlot(EquipmentSlot.MAINHAND)) && this.offhand.matches(akz3.getItemBySlot(EquipmentSlot.OFFHAND));
}
public static EntityEquipmentPredicate fromJson(@Nullable final JsonElement jsonElement) {
if (jsonElement == null || jsonElement.isJsonNull()) {
return EntityEquipmentPredicate.ANY;
}
final JsonObject jsonObject2 = GsonHelper.convertToJsonObject(jsonElement, "equipment");
final ItemPredicate bj3 = ItemPredicate.fromJson(jsonObject2.get("head"));
final ItemPredicate bj4 = ItemPredicate.fromJson(jsonObject2.get("chest"));
final ItemPredicate bj5 = ItemPredicate.fromJson(jsonObject2.get("legs"));
final ItemPredicate bj6 = ItemPredicate.fromJson(jsonObject2.get("feet"));
final ItemPredicate bj7 = ItemPredicate.fromJson(jsonObject2.get("mainhand"));
final ItemPredicate bj8 = ItemPredicate.fromJson(jsonObject2.get("offhand"));
return new EntityEquipmentPredicate(bj3, bj4, bj5, bj6, bj7, bj8);
}
public JsonElement serializeToJson() {
if (this == EntityEquipmentPredicate.ANY) {
return JsonNull.INSTANCE;
}
final JsonObject jsonObject2 = new JsonObject();
jsonObject2.add("head", this.head.serializeToJson());
jsonObject2.add("chest", this.chest.serializeToJson());
jsonObject2.add("legs", this.legs.serializeToJson());
jsonObject2.add("feet", this.feet.serializeToJson());
jsonObject2.add("mainhand", this.mainhand.serializeToJson());
jsonObject2.add("offhand", this.offhand.serializeToJson());
return jsonObject2;
}
static {
ANY = new EntityEquipmentPredicate(ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY);
CAPTAIN = new EntityEquipmentPredicate(ItemPredicate.Builder.item().of(Items.WHITE_BANNER).hasNbt(Raid.getLeaderBannerInstance().getTag()).build(), ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY, ItemPredicate.ANY);
}
}