[TASK] Fixed rendering modifier lines and areas. Rendering block previews no longer crashes (renders black).
This commit is contained in:
@@ -2,6 +2,7 @@ package nl.requios.effortlessbuilding.render;
|
|||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||||
|
import net.minecraft.Util;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.RenderStateShard;
|
import net.minecraft.client.renderer.RenderStateShard;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
@@ -29,8 +30,12 @@ public class BuildRenderTypes extends RenderType {
|
|||||||
//LINES
|
//LINES
|
||||||
renderState = CompositeState.builder()
|
renderState = CompositeState.builder()
|
||||||
.setLineState(LINE)
|
.setLineState(LINE)
|
||||||
|
.setShaderState(RenderStateShard.RENDERTYPE_LINES_SHADER)
|
||||||
.setLayeringState(VIEW_OFFSET_Z_LAYERING)
|
.setLayeringState(VIEW_OFFSET_Z_LAYERING)
|
||||||
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
|
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
|
||||||
|
.setTextureState(RenderStateShard.NO_TEXTURE)
|
||||||
|
.setDepthTestState(RenderStateShard.NO_DEPTH_TEST)
|
||||||
|
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
|
||||||
.setWriteMaskState(COLOR_DEPTH_WRITE)
|
.setWriteMaskState(COLOR_DEPTH_WRITE)
|
||||||
.setCullState(RenderStateShard.NO_CULL)
|
.setCullState(RenderStateShard.NO_CULL)
|
||||||
.createCompositeState(false);
|
.createCompositeState(false);
|
||||||
@@ -39,12 +44,16 @@ public class BuildRenderTypes extends RenderType {
|
|||||||
|
|
||||||
//PLANES
|
//PLANES
|
||||||
renderState = CompositeState.builder()
|
renderState = CompositeState.builder()
|
||||||
.setLineState(LINE)
|
.setLineState(LINE)
|
||||||
.setLayeringState(VIEW_OFFSET_Z_LAYERING)
|
.setShaderState(RenderStateShard.RENDERTYPE_LINES_SHADER)
|
||||||
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
|
.setLayeringState(VIEW_OFFSET_Z_LAYERING)
|
||||||
.setWriteMaskState(COLOR_WRITE)
|
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
|
||||||
.setCullState(RenderStateShard.NO_CULL)
|
.setTextureState(RenderStateShard.NO_TEXTURE)
|
||||||
.createCompositeState(false);
|
.setDepthTestState(RenderStateShard.NO_DEPTH_TEST)
|
||||||
|
.setLightmapState(RenderStateShard.NO_LIGHTMAP)
|
||||||
|
.setWriteMaskState(COLOR_WRITE)
|
||||||
|
.setCullState(RenderStateShard.NO_CULL)
|
||||||
|
.createCompositeState(false);
|
||||||
PLANES = RenderType.create("eb_planes",
|
PLANES = RenderType.create("eb_planes",
|
||||||
DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.TRIANGLE_STRIP, INITIAL_BUFFER_SIZE, false, false, renderState);
|
DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.TRIANGLE_STRIP, INITIAL_BUFFER_SIZE, false, false, renderState);
|
||||||
}
|
}
|
||||||
@@ -79,16 +88,17 @@ public class BuildRenderTypes extends RenderType {
|
|||||||
}, ShaderHandler::releaseShader);
|
}, ShaderHandler::releaseShader);
|
||||||
|
|
||||||
RenderType.CompositeState renderState = RenderType.CompositeState.builder()
|
RenderType.CompositeState renderState = RenderType.CompositeState.builder()
|
||||||
.setTextureState(new RenderStateShard.TextureStateShard(ShaderHandler.shaderMaskTextureLocation, false, false))
|
.setShaderState(RenderStateShard.RENDERTYPE_TRANSLUCENT_SHADER)
|
||||||
.setTexturingState(MY_TEXTURING)
|
.setTextureState(new RenderStateShard.TextureStateShard(ShaderHandler.shaderMaskTextureLocation, false, false))
|
||||||
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
|
.setTexturingState(MY_TEXTURING)
|
||||||
|
.setTransparencyState(TRANSLUCENT_TRANSPARENCY)
|
||||||
//TODO 1.17
|
//TODO 1.17
|
||||||
// .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED)
|
// .setDiffuseLightingState(DIFFUSE_LIGHTING_DISABLED)
|
||||||
// .setAlphaState(DEFAULT_ALPHA)
|
// .setAlphaState(DEFAULT_ALPHA)
|
||||||
.setCullState(new RenderStateShard.CullStateShard(true))
|
.setCullState(new RenderStateShard.CullStateShard(true))
|
||||||
.setLightmapState(new RenderStateShard.LightmapStateShard(false))
|
.setLightmapState(new RenderStateShard.LightmapStateShard(false))
|
||||||
.setOverlayState(new RenderStateShard.OverlayStateShard(false))
|
.setOverlayState(new RenderStateShard.OverlayStateShard(false))
|
||||||
.createCompositeState(true);
|
.createCompositeState(true);
|
||||||
//Unique name for every combination, otherwise it will reuse the previous one
|
//Unique name for every combination, otherwise it will reuse the previous one
|
||||||
String name = "eb_block_previews_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red;
|
String name = "eb_block_previews_" + dissolve + "_" + blockPos + "_" + firstPos + "_" + secondPos + "_" + red;
|
||||||
return RenderType.create(name,
|
return RenderType.create(name,
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class ModifierRenderer {
|
|||||||
protected static final Color colorZ = new Color(52, 247, 255);
|
protected static final Color colorZ = new Color(52, 247, 255);
|
||||||
protected static final Color colorRadial = 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 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
|
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) {
|
public static void render(PoseStack matrixStack, MultiBufferSource.BufferSource renderTypeBuffer, ModifierSettingsManager.ModifierSettings modifierSettings) {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import net.minecraft.world.phys.Vec3;
|
|||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||||
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
import net.minecraftforge.client.event.RenderWorldLastEvent;
|
||||||
|
import net.minecraftforge.client.model.data.EmptyModelData;
|
||||||
import net.minecraftforge.eventbus.api.EventPriority;
|
import net.minecraftforge.eventbus.api.EventPriority;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
@@ -53,8 +54,6 @@ public class RenderHandler {
|
|||||||
PoseStack matrixStack = event.getMatrixStack();
|
PoseStack matrixStack = event.getMatrixStack();
|
||||||
BufferBuilder bufferBuilder = Tesselator.getInstance().getBuilder();
|
BufferBuilder bufferBuilder = Tesselator.getInstance().getBuilder();
|
||||||
MultiBufferSource.BufferSource renderTypeBuffer = MultiBufferSource.immediate(bufferBuilder);
|
MultiBufferSource.BufferSource renderTypeBuffer = MultiBufferSource.immediate(bufferBuilder);
|
||||||
if (renderTypeBuffer == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Player player = Minecraft.getInstance().player;
|
Player player = Minecraft.getInstance().player;
|
||||||
ModeSettingsManager.ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player);
|
ModeSettingsManager.ModeSettings modeSettings = ModeSettingsManager.getModeSettings(player);
|
||||||
@@ -193,8 +192,8 @@ public class RenderHandler {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
BakedModel model = dispatcher.getBlockModel(blockState);
|
BakedModel model = dispatcher.getBlockModel(blockState);
|
||||||
dispatcher.getModelRenderer().renderModel(matrixStack.last(), buffer,
|
dispatcher.getModelRenderer().renderModel(matrixStack.last(), buffer, blockState, model,
|
||||||
blockState, model, 1f, 1f, 1f, 0, OverlayTexture.NO_OVERLAY);
|
1f, 1f, 1f, 0, OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE);
|
||||||
// blockRendererDispatcher.getBlockModelRenderer().renderModel(world, blockRendererDispatcher.getModelForState(blockState),
|
// blockRendererDispatcher.getBlockModelRenderer().renderModel(world, blockRendererDispatcher.getModelForState(blockState),
|
||||||
// blockState, logicPos, matrixStack, renderTypeBuffer.getBuffer(renderType), true, new Random(), blockState.getPositionRandom(logicPos), i);
|
// blockState, logicPos, matrixStack, renderTypeBuffer.getBuffer(renderType), true, new Random(), blockState.getPositionRandom(logicPos), i);
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user