|
1 | 1 | package dev.compactmods.gander.render.baked; |
2 | 2 |
|
3 | 3 | import java.lang.ref.WeakReference; |
4 | | -import java.util.Map; |
| 4 | +import java.util.HashSet; |
| 5 | +import java.util.Set; |
5 | 6 |
|
6 | 7 | import org.joml.Vector3f; |
7 | 8 |
|
| 9 | +import com.mojang.blaze3d.vertex.BufferBuilder; |
| 10 | +import com.mojang.blaze3d.vertex.DefaultVertexFormat; |
| 11 | +import com.mojang.blaze3d.vertex.PoseStack; |
| 12 | +import com.mojang.blaze3d.vertex.VertexBuffer; |
| 13 | +import com.mojang.blaze3d.vertex.VertexFormat; |
| 14 | +import com.mojang.blaze3d.vertex.VertexSorting; |
| 15 | + |
| 16 | +import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap; |
| 17 | +import net.minecraft.client.Minecraft; |
8 | 18 | import net.minecraft.client.renderer.ChunkBufferBuilderPack; |
9 | 19 | import net.minecraft.client.renderer.RenderType; |
| 20 | +import net.minecraft.client.renderer.block.BlockRenderDispatcher; |
| 21 | +import net.minecraft.client.renderer.block.ModelBlockRenderer; |
| 22 | +import net.minecraft.client.renderer.chunk.RenderRegionCache; |
| 23 | +import net.minecraft.client.renderer.texture.OverlayTexture; |
| 24 | +import net.minecraft.client.resources.model.BakedModel; |
| 25 | +import net.minecraft.core.BlockPos; |
| 26 | +import net.minecraft.util.RandomSource; |
10 | 27 | import net.minecraft.world.level.Level; |
| 28 | +import net.minecraft.world.level.block.RenderShape; |
| 29 | +import net.minecraft.world.level.block.entity.BlockEntity; |
| 30 | +import net.minecraft.world.level.block.state.BlockState; |
11 | 31 | import net.minecraft.world.level.levelgen.structure.BoundingBox; |
| 32 | +import net.minecraft.world.level.material.FluidState; |
| 33 | +import net.minecraftforge.client.model.data.ModelData; |
12 | 34 |
|
13 | 35 | public class LevelBakery { |
14 | 36 |
|
15 | 37 | public static BakedLevel bakeVertices(Level level, BoundingBox blockBoundaries, Vector3f cameraPosition) { |
16 | 38 |
|
17 | | - /*final Set<RenderType> visitedBlockRenderTypes = new HashSet<>(); |
| 39 | + final Set<RenderType> visitedBlockRenderTypes = new HashSet<>(); |
18 | 40 | final Set<RenderType> visitedFluidRenderTypes = new HashSet<>(); |
19 | 41 | final RenderRegionCache regionCache = new RenderRegionCache(); |
20 | 42 | final ChunkBufferBuilderPack blockPack = new ChunkBufferBuilderPack(); |
@@ -66,30 +88,30 @@ public static BakedLevel bakeVertices(Level level, BoundingBox blockBoundaries, |
66 | 88 | }); |
67 | 89 | } |
68 | 90 |
|
69 | | - if (!fluidState.isEmpty()) { |
| 91 | + /*if (!fluidState.isEmpty()) { |
70 | 92 | final var fluidRenderType = ItemBlockRenderTypes.getRenderLayer(fluidState); |
71 | 93 | var typedVC = fluidPack.builder(fluidRenderType); |
72 | 94 | if (visitedFluidRenderTypes.add(fluidRenderType)) { |
73 | 95 | typedVC.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); |
74 | 96 | } |
75 | 97 |
|
76 | | - dispatcher.getLiquidBlockRenderer().tesselate(level, pos, new FluidVertexConsumer(typedVC, pose, pos), state, fluidState); |
77 | | - } |
| 98 | + // dispatcher.getLiquidBlockRenderer().tesselate(level, pos, new FluidVertexConsumer(typedVC, pose, pos), state, fluidState); |
| 99 | + }*/ |
78 | 100 |
|
79 | 101 | pose.popPose(); |
80 | 102 | ModelBlockRenderer.clearCache(); |
81 | 103 | }); |
82 | 104 |
|
83 | | - final var additionalRenderers = ClientHooks.gatherAdditionalRenderers(BlockPos.ZERO, level); |
| 105 | + // final var additionalRenderers = ClientHooks.gatherAdditionalRenderers(BlockPos.ZERO, level); |
84 | 106 |
|
85 | 107 | // TODO - Hook for multiplatform? |
86 | | - net.neoforged.neoforge.client.ClientHooks.addAdditionalGeometry(additionalRenderers, (type) -> { |
| 108 | + /*net.neoforged.neoforge.client.ClientHooks.addAdditionalGeometry(additionalRenderers, (type) -> { |
87 | 109 | BufferBuilder builder = blockPack.builder(type); |
88 | 110 | if (visitedBlockRenderTypes.add(type)) { |
89 | 111 | builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.BLOCK); |
90 | 112 | } |
91 | 113 | return builder; |
92 | | - }, createRegion(regionCache, additionalRenderers, level, blockBoundaries), pose); |
| 114 | + }, createRegion(regionCache, additionalRenderers, level, blockBoundaries), pose);*/ |
93 | 115 |
|
94 | 116 | BufferBuilder.SortState blockTransparencyState = null; |
95 | 117 | if (visitedBlockRenderTypes.contains(RenderType.translucent())) { |
@@ -133,11 +155,7 @@ public static BakedLevel bakeVertices(Level level, BoundingBox blockBoundaries, |
133 | 155 | } |
134 | 156 | }); |
135 | 157 |
|
136 | | - return new BakedLevel(new WeakReference<>(level), blockPack, fluidPack, blockGeometry, fluidGeometry, blockTransparencyState, fluidTransparencyState, blockBoundaries);*/ |
137 | | - |
138 | | - var blockBuilders = new ChunkBufferBuilderPack(); |
139 | | - var fluidBuilders = new ChunkBufferBuilderPack(); |
140 | | - return new BakedLevel(new WeakReference<>(level), blockBuilders, fluidBuilders, Map.of(), Map.of(), blockBuilders.builder(RenderType.cutout()).getSortState(), fluidBuilders.builder(RenderType.translucent()).getSortState(), BoundingBox.infinite()); |
| 158 | + return new BakedLevel(new WeakReference<>(level), blockPack, fluidPack, blockGeometry, fluidGeometry, blockTransparencyState, fluidTransparencyState, blockBoundaries); |
141 | 159 | } |
142 | 160 |
|
143 | 161 | /*private static RenderChunkRegion createRegion(RenderRegionCache cache, List<AddSectionGeometryEvent.AdditionalSectionRenderer> additionalRenderers, Level level, BoundingBox bounds) { |
|
0 commit comments