minecraft-src/net/minecraft/client/gui/font/FontOption.java
2025-07-04 01:41:11 +03:00

55 lines
1.5 KiB
Java

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.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.util.StringRepresentable;
@Environment(EnvType.CLIENT)
public enum FontOption implements StringRepresentable {
UNIFORM("uniform"),
JAPANESE_VARIANTS("jp");
public static final Codec<FontOption> CODEC = StringRepresentable.fromEnum(FontOption::values);
private final String name;
private FontOption(final String name) {
this.name = name;
}
@Override
public String getSerializedName() {
return this.name;
}
@Environment(EnvType.CLIENT)
public static class Filter {
private final Map<FontOption, Boolean> values;
public static final Codec<FontOption.Filter> CODEC = Codec.unboundedMap(FontOption.CODEC, Codec.BOOL).xmap(FontOption.Filter::new, filter -> filter.values);
public static final FontOption.Filter ALWAYS_PASS = new FontOption.Filter(Map.of());
public Filter(Map<FontOption, Boolean> values) {
this.values = values;
}
public boolean apply(Set<FontOption> options) {
for (Entry<FontOption, Boolean> entry : this.values.entrySet()) {
if (options.contains(entry.getKey()) != (Boolean)entry.getValue()) {
return false;
}
}
return true;
}
public FontOption.Filter merge(FontOption.Filter filter) {
Map<FontOption, Boolean> map = new HashMap(filter.values);
map.putAll(this.values);
return new FontOption.Filter(Map.copyOf(map));
}
}
}