VulkanShader_1.21.10-0.0.4-alpha.jar

Download file
    package net.vulkanmod.render.chunk.build.thread;

import java.util.Arrays;
import java.util.EnumMap;
import java.util.Map;
import java.util.function.Function;
import net.minecraft.class_290;
import net.vulkanmod.render.PipelineManager;
import net.vulkanmod.render.vertex.CustomVertexFormat;
import net.vulkanmod.render.vertex.TerrainBuilder;
import net.vulkanmod.render.vertex.TerrainRenderType;
import net.vulkanmod.render.vertex.VertexBuilder;

public class ThreadBuilderPack {
   private static Function<TerrainRenderType, TerrainBuilder> terrainBuilderConstructor;
   private final Map<TerrainRenderType, TerrainBuilder> builders;

   public static void defaultTerrainBuilderConstructor() {
      terrainBuilderConstructor = (renderType) -> {
         int size = TerrainRenderType.getLayer(renderType).method_72021() / class_290.field_1590.getVertexSize();
         boolean compressedFormat = PipelineManager.terrainVertexFormat == CustomVertexFormat.COMPRESSED_TERRAIN;
         VertexBuilder vertexBuilder = (VertexBuilder)(compressedFormat ? new VertexBuilder.CompressedVertexBuilder() : new VertexBuilder.DefaultVertexBuilder());
         return new TerrainBuilder(size, vertexBuilder);
      };
   }

   public static void setTerrainBuilderConstructor(Function<TerrainRenderType, TerrainBuilder> constructor) {
      terrainBuilderConstructor = constructor;
   }

   public ThreadBuilderPack() {
      EnumMap<TerrainRenderType, TerrainBuilder> map = new EnumMap(TerrainRenderType.class);
      Arrays.stream(TerrainRenderType.values()).forEach((terrainRenderType) -> map.put(terrainRenderType, (TerrainBuilder)terrainBuilderConstructor.apply(terrainRenderType)));
      this.builders = map;
   }

   public TerrainBuilder builder(TerrainRenderType renderType) {
      return (TerrainBuilder)this.builders.get(renderType);
   }

   public void freeAll() {
      this.builders.values().forEach(TerrainBuilder::free);
   }
}
    
Download file