package net.minecraft.client.gui.font; import com.mojang.serialization.Codec; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import net.minecraft.util.StringRepresentable; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public enum FontOption implements StringRepresentable { UNIFORM("uniform"), JAPANESE_VARIANTS("jp"); public static final Codec CODEC = StringRepresentable.fromEnum(FontOption::values); private final String name; private FontOption(final String p_334824_) { this.name = p_334824_; } @Override public String getSerializedName() { return this.name; } @OnlyIn(Dist.CLIENT) public static class Filter { private final Map values; public static final Codec CODEC = Codec.unboundedMap(FontOption.CODEC, Codec.BOOL) .xmap(FontOption.Filter::new, p_329501_ -> p_329501_.values); public static final FontOption.Filter ALWAYS_PASS = new FontOption.Filter(Map.of()); public Filter(Map p_332258_) { this.values = p_332258_; } public boolean apply(Set p_334823_) { for (Entry entry : this.values.entrySet()) { if (p_334823_.contains(entry.getKey()) != entry.getValue()) { return false; } } return true; } public FontOption.Filter merge(FontOption.Filter p_331605_) { Map map = new HashMap<>(p_331605_.values); map.putAll(this.values); return new FontOption.Filter(Map.copyOf(map)); } } }