[TASK] Fixed rendering modifier lines and areas. Rendering block previews no longer crashes (renders black).

This commit is contained in:
Christian Knaapen
2021-09-26 12:48:36 +02:00
parent 3930844208
commit 4b1997e44f
3 changed files with 29 additions and 20 deletions

View File

@@ -2,6 +2,7 @@ package nl.requios.effortlessbuilding.render;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.VertexFormat;
import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderStateShard;
import net.minecraft.client.renderer.RenderType;
@@ -29,8 +30,12 @@ public class BuildRenderTypes extends RenderType {
//LINES
renderState = CompositeState.builder()
.setLineState(LINE)
.setShaderState(RenderStateShard.RENDERTYPE_LINES_SHADER)
.setLayeringState(VIEW_OFFSET_Z_LAYERING)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
.setTextureState(RenderStateShard.NO_TEXTURE)
.setDepthTestState(RenderStateShard.NO_DEPTH_TEST)
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
.setWriteMaskState(COLOR_DEPTH_WRITE)
.setCullState(RenderStateShard.NO_CULL)
.createCompositeState(false);
@@ -40,8 +45,12 @@ public class BuildRenderTypes extends RenderType {
//PLANES
renderState = CompositeState.builder()
.setLineState(LINE)
.setShaderState(RenderStateShard.RENDERTYPE_LINES_SHADER)
.setLayeringState(VIEW_OFFSET_Z_LAYERING)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
.setTextureState(RenderStateShard.NO_TEXTURE)
.setDepthTestState(RenderStateShard.NO_DEPTH_TEST)
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
.setWriteMaskState(COLOR_WRITE)
.setCullState(RenderStateShard.NO_CULL)
.createCompositeState(false);
@@ -79,12 +88,13 @@ public class BuildRenderTypes extends RenderType {
}, ShaderHandler::releaseShader);
RenderType.CompositeState renderState = RenderType.CompositeState.builder()
.setShaderState(RenderStateShard.RENDERTYPE_TRANSLUCENT_SHADER)
.setTextureState(new RenderStateShard.TextureStateShard(ShaderHandler.shaderMaskTextureLocation, false, false))
.setTexturingState(MY_TEXTURING)
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
//TODO 1.17
// .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED)
// .setAlphaState(DEFAULT_ALPHA)
// .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED)
// .setAlphaState(DEFAULT_ALPHA)
.setCullState(new RenderStateShard.CullStateShard(true))
.setLightmapState(new RenderStateShard.LightmapStateShard(false))
.setOverlayState(new RenderStateShard.OverlayStateShard(false))

View File

@@ -21,7 +21,7 @@ public class ModifierRenderer {
protected static final Color colorZ = new Color(52, 247, 255);
protected static final Color colorRadial = new Color(52, 247, 255);
protected static final int lineAlpha = 200;
protected static final int planeAlpha = 75;
protected static final int planeAlpha = 50;
protected static final Vec3 epsilon = new Vec3(0.001, 0.001, 0.001); //prevents z-fighting
public static void render(PoseStack matrixStack, MultiBufferSource.BufferSource renderTypeBuffer, ModifierSettingsManager.ModifierSettings modifierSettings) {

View File

@@ -21,6 +21,7 @@ import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.model.data.EmptyModelData;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@@ -53,8 +54,6 @@ public class RenderHandler {
PoseStack matrixStack = event.getMatrixStack();
BufferBuilder bufferBuilder = Tesselator.getInstance().getBuilder();
MultiBufferSource.BufferSource renderTypeBuffer = MultiBufferSource.immediate(bufferBuilder);
if (renderTypeBuffer == null)
return;
Player player = Minecraft.getInstance().player;
ModeSettingsManager.ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player);
@@ -193,8 +192,8 @@ public class RenderHandler {
try {
BakedModel model = dispatcher.getBlockModel(blockState);
dispatcher.getModelRenderer().renderModel(matrixStack.last(), buffer,
blockState, model, 1f, 1f, 1f, 0, OverlayTexture.NO_OVERLAY);
dispatcher.getModelRenderer().renderModel(matrixStack.last(), buffer, blockState, model,
1f, 1f, 1f, 0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
// blockRendererDispatcher.getBlockModelRenderer().renderModel(world, blockRendererDispatcher.getModelForState(blockState),
// blockState, logicPos, matrixStack, renderTypeBuffer.getBuffer(renderType), true, new Random(), blockState.getPositionRandom(logicPos), i);
} catch (NullPointerException e) {