42 lines
1.6 KiB
Java
42 lines
1.6 KiB
Java
package net.minecraft.client.gui.font.providers;
|
|
|
|
import com.mojang.blaze3d.font.GlyphProvider;
|
|
import com.mojang.datafixers.util.Either;
|
|
import com.mojang.serialization.Codec;
|
|
import com.mojang.serialization.MapCodec;
|
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
|
import java.io.IOException;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.gui.font.FontOption;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.server.packs.resources.ResourceManager;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public interface GlyphProviderDefinition {
|
|
MapCodec<GlyphProviderDefinition> MAP_CODEC = GlyphProviderType.CODEC.dispatchMap(GlyphProviderDefinition::type, GlyphProviderType::mapCodec);
|
|
|
|
GlyphProviderType type();
|
|
|
|
Either<GlyphProviderDefinition.Loader, GlyphProviderDefinition.Reference> unpack();
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public record Conditional(GlyphProviderDefinition definition, FontOption.Filter filter) {
|
|
public static final Codec<GlyphProviderDefinition.Conditional> CODEC = RecordCodecBuilder.create(
|
|
instance -> instance.group(
|
|
GlyphProviderDefinition.MAP_CODEC.forGetter(GlyphProviderDefinition.Conditional::definition),
|
|
FontOption.Filter.CODEC.optionalFieldOf("filter", FontOption.Filter.ALWAYS_PASS).forGetter(GlyphProviderDefinition.Conditional::filter)
|
|
)
|
|
.apply(instance, GlyphProviderDefinition.Conditional::new)
|
|
);
|
|
}
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public interface Loader {
|
|
GlyphProvider load(ResourceManager resourceManager) throws IOException;
|
|
}
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public record Reference(ResourceLocation id) {
|
|
}
|
|
}
|