fabric-rendering-v1-16.2.0+bee81f016f.jar
Download file
package net.fabricmc.fabric.impl.client.rendering;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.rendering.v1.SpecialGuiElementRegistry;
import net.minecraft.class_11233;
import net.minecraft.class_11234;
import net.minecraft.class_11235;
import net.minecraft.class_11236;
import net.minecraft.class_11237;
import net.minecraft.class_11238;
import net.minecraft.class_11239;
import net.minecraft.class_11250;
import net.minecraft.class_11251;
import net.minecraft.class_11252;
import net.minecraft.class_11253;
import net.minecraft.class_11254;
import net.minecraft.class_11255;
import net.minecraft.class_11256;
import net.minecraft.class_11659;
import net.minecraft.class_310;
import net.minecraft.class_4597;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.VisibleForTesting;
@Environment(EnvType.CLIENT)
public final class SpecialGuiElementRegistryImpl {
private static final List<SpecialGuiElementRegistry.Factory> FACTORIES = new ArrayList();
private static final Map<Class<? extends class_11256>, SpecialGuiElementRegistry.Factory> REGISTERED_FACTORIES = new HashMap();
private static boolean frozen;
private SpecialGuiElementRegistryImpl() {
}
public static void register(SpecialGuiElementRegistry.Factory factory) {
if (frozen) {
throw new IllegalStateException("Too late to register, GuiRenderer has already been initialized.");
} else {
FACTORIES.add(factory);
}
}
public static void onReady(class_310 client, class_4597.class_4598 immediate, class_11659 orderedRenderCommandQueue, Map<Class<? extends class_11256>, class_11239<?>> specialElementRenderers) {
frozen = true;
registerVanillaFactories();
ContextImpl context = new ContextImpl(client, immediate, orderedRenderCommandQueue);
for(SpecialGuiElementRegistry.Factory factory : FACTORIES) {
class_11239<?> elementRenderer = factory.createSpecialRenderer(context);
specialElementRenderers.put(elementRenderer.method_70903(), elementRenderer);
REGISTERED_FACTORIES.put(elementRenderer.method_70903(), factory);
}
}
public static <S extends class_11256> @Nullable("null for render states registered outside FAPI") class_11239<S> createNewRenderer(S state, class_310 client, class_4597.class_4598 immediate, class_11659 orderedRenderCommandQueue) {
SpecialGuiElementRegistry.Factory factory = (SpecialGuiElementRegistry.Factory)REGISTERED_FACTORIES.get(state.getClass());
return factory == null ? null : factory.createSpecialRenderer(new ContextImpl(client, immediate, orderedRenderCommandQueue));
}
private static void registerVanillaFactories() {
REGISTERED_FACTORIES.put(class_11252.class, (SpecialGuiElementRegistry.Factory)(context) -> new class_11235(context.vertexConsumers(), context.client().method_1561()));
REGISTERED_FACTORIES.put(class_11255.class, (SpecialGuiElementRegistry.Factory)(context) -> new class_11238(context.vertexConsumers()));
REGISTERED_FACTORIES.put(class_11251.class, (SpecialGuiElementRegistry.Factory)(context) -> new class_11234(context.vertexConsumers()));
REGISTERED_FACTORIES.put(class_11250.class, (SpecialGuiElementRegistry.Factory)(context) -> new class_11233(context.vertexConsumers(), context.client().method_72703()));
REGISTERED_FACTORIES.put(class_11254.class, (SpecialGuiElementRegistry.Factory)(context) -> new class_11237(context.vertexConsumers(), context.client().method_72703()));
REGISTERED_FACTORIES.put(class_11253.class, (SpecialGuiElementRegistry.Factory)(context) -> new class_11236(context.vertexConsumers()));
}
@VisibleForTesting
public static Collection<Class<? extends class_11256>> getRegisteredFactoryStateClasses() {
return REGISTERED_FACTORIES.keySet();
}
@Environment(EnvType.CLIENT)
static record ContextImpl(class_310 client, class_4597.class_4598 vertexConsumers, class_11659 orderedRenderCommandQueue) implements SpecialGuiElementRegistry.Context {
}
}
Download file