rework on shapes. Labels are showing up, but lines don't.

This commit is contained in:
gnembon committed 2021-03-16 15:31:58 -03:00
1 parent e19ae0ef0f
commit 1bd6dcbf12
6 files changed
+89 -63

No files matched your search

+3 -3
View File
@@ -5,9 +5,9 @@ org.gradle.jvmargs=-Xmx1G
# check these on https://fabricmc.net/use # check these on https://fabricmc.net/use
# or better: https://modmuss50.me/fabric.html # or better: https://modmuss50.me/fabric.html
minecraft_version=21w10a minecraft_version=21w10a
yarn_mappings=21w10a+build.1 yarn_mappings=21w10a+build.15
loader_version=0.11.2 loader_version=0.11.3
fabric_version=0.32.1+1.17 fabric_version=0.32.2+1.17
# Mod Properties # Mod Properties
mod_version = 1.4.29 mod_version = 1.4.29
@@ -468,7 +468,7 @@ public class ScriptCommand
{ {
ServerCommandSource source = context.getSource(); ServerCommandSource source = context.getSource();
CarpetScriptHost host = getHost(context); CarpetScriptHost host = getHost(context);
BlockBox area = BlockBox.method_34390(a, b); BlockBox area = BlockBox.create(a, b);
CarpetExpression cexpr = new CarpetExpression(host.main, expr, source, origin); CarpetExpression cexpr = new CarpetExpression(host.main, expr, source, origin);
int int_1 = area.getBlockCountX() * area.getBlockCountY() * area.getBlockCountZ(); int int_1 = area.getBlockCountX() * area.getBlockCountY() * area.getBlockCountZ();
if (int_1 > CarpetSettings.fillLimit) if (int_1 > CarpetSettings.fillLimit)
@@ -517,7 +517,7 @@ public class ScriptCommand
{ {
ServerCommandSource source = context.getSource(); ServerCommandSource source = context.getSource();
CarpetScriptHost host = getHost(context); CarpetScriptHost host = getHost(context);
BlockBox area = BlockBox.method_34390(a, b); // create BlockBox area = BlockBox.create(a, b);
CarpetExpression cexpr = new CarpetExpression(host.main, expr, source, origin); CarpetExpression cexpr = new CarpetExpression(host.main, expr, source, origin);
int int_1 = area.getBlockCountX() * area.getBlockCountY() * area.getBlockCountZ(); int int_1 = area.getBlockCountX() * area.getBlockCountY() * area.getBlockCountZ();
if (int_1 > CarpetSettings.fillLimit) if (int_1 > CarpetSettings.fillLimit)
@@ -26,7 +26,7 @@ public abstract class PistonBlockEntity_playerHandlingMixin
@Shadow public abstract Direction getMovementDirection(); @Shadow public abstract Direction getMovementDirection();
@Inject(method = "method_23672", at = @At("HEAD"), cancellable = true) @Inject(method = "moveEntity", at = @At("HEAD"), cancellable = true)
private static void dontPushSpectators(Direction direction, Entity entity, double d, Direction direction2, CallbackInfo ci) private static void dontPushSpectators(Direction direction, Entity entity, double d, Direction direction2, CallbackInfo ci)
{ {
if (CarpetSettings.creativeNoClip && entity instanceof PlayerEntity && (((PlayerEntity) entity).isCreative()) && ((PlayerEntity) entity).getAbilities().flying) ci.cancel(); if (CarpetSettings.creativeNoClip && entity instanceof PlayerEntity && (((PlayerEntity) entity).isCreative()) && ((PlayerEntity) entity).getAbilities().flying) ci.cancel();
@@ -22,8 +22,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(WorldRenderer.class) @Mixin(WorldRenderer.class)
public class WorldRenderer_scarpetRenderMixin public class WorldRenderer_scarpetRenderMixin
{ {
@Shadow private /*@Nullable*/ ShaderEffect transparencyShader;
@Inject(method = "<init>", at = @At("RETURN")) @Inject(method = "<init>", at = @At("RETURN"))
private void addRenderers(MinecraftClient client, BufferBuilderStorage bufferBuilders, CallbackInfo ci) private void addRenderers(MinecraftClient client, BufferBuilderStorage bufferBuilders, CallbackInfo ci)
{ {
@@ -32,37 +30,23 @@ public class WorldRenderer_scarpetRenderMixin
@Inject(method = "render", at = @At( @Inject(method = "render", at = @At(
value = "INVOKE", value = "INVOKE",
target = "Lnet/minecraft/client/render/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/render/Camera;)V", target = "Lnet/minecraft/client/render/BufferBuilderStorage;getEffectVertexConsumers()Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;", shift = At.Shift.BEFORE
shift = At.Shift.AFTER //target = "Lnet/minecraft/client/render/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/render/Camera;)V", shift = At.Shift.AFTER
//target = "Lnet/minecraft/client/render/BackgroundRenderer;method_23792()V", shift = At.Shift.AFTER
//target = "Lnet/minecraft/client/render/BufferBuilderStorage;getEntityVertexConsumers()Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;", shift = At.Shift.AFTER
//target = "Lnet/minecraft/client/render/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/render/Camera;)V", shift = At.Shift.AFTER // before return
)) ))
private void renderScarpetThings(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f matrix4f, CallbackInfo ci) private void renderScarpetThings(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f matrix4f, CallbackInfo ci)
{ {
// in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff. // in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff.
if (!FabricAPIHooks.WORLD_RENDER_EVENTS && CarpetClient.shapes != null && transparencyShader == null) // we might actually not need to play with render hooks here.
if (!FabricAPIHooks.WORLD_RENDER_EVENTS && CarpetClient.shapes != null )
{ {
matrices.push(); matrices.push();
//RenderSystem.pushMatrix(); ??
CarpetClient.shapes.render(matrices, camera, tickDelta); CarpetClient.shapes.render(matrices, camera, tickDelta);
//RenderSystem.popMatrix(); ??
matrices.pop(); matrices.pop();
} RenderSystem.applyModelViewMatrix();
}
@Inject(method = "render", at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/render/debug/DebugRenderer;render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;DDD)V",
shift = At.Shift.AFTER
))
private void renderScarpetThingsFabulously(MatrixStack matrices, float tickDelta, long limitTime, boolean renderBlockOutline, Camera camera, GameRenderer gameRenderer, LightmapTextureManager lightmapTextureManager, Matrix4f matrix4f, CallbackInfo ci)
{
// with fabulous graphics - stuff doesn't work this way for some reason - need to render with chunk lines.
if (!FabricAPIHooks.WORLD_RENDER_EVENTS && CarpetClient.shapes != null && transparencyShader != null)
{
matrices.push();
//RenderSystem.pushMatrix();
CarpetClient.shapes.render(matrices, camera, tickDelta);
//RenderSystem.popMatrix();
matrices.pop();
} }
} }
} }
@@ -10,19 +10,20 @@ import net.minecraft.client.render.Camera;
import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.debug.DebugRenderer;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.AffineTransformation;
import net.minecraft.client.world.ClientWorld; import net.minecraft.client.world.ClientWorld;
import net.minecraft.client.render.VertexFormats; import net.minecraft.client.render.VertexFormats;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag; import net.minecraft.nbt.ListTag;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Matrix4f; import net.minecraft.util.math.Matrix4f;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.Vec3f;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.World; import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -31,6 +32,7 @@ import java.util.function.BiFunction;
public class ShapesRenderer public class ShapesRenderer
{ {
private final Map<RegistryKey<World>, Long2ObjectOpenHashMap<RenderedShape<? extends ShapeDispatcher.ExpiringShape>>> shapes; private final Map<RegistryKey<World>, Long2ObjectOpenHashMap<RenderedShape<? extends ShapeDispatcher.ExpiringShape>>> shapes;
private final Map<RegistryKey<World>, Long2ObjectOpenHashMap<RenderedShape<? extends ShapeDispatcher.ExpiringShape>>> labels;
private MinecraftClient client; private MinecraftClient client;
private Map<String, BiFunction<MinecraftClient, ShapeDispatcher.ExpiringShape, RenderedShape<? extends ShapeDispatcher.ExpiringShape >>> renderedShapes private Map<String, BiFunction<MinecraftClient, ShapeDispatcher.ExpiringShape, RenderedShape<? extends ShapeDispatcher.ExpiringShape >>> renderedShapes
@@ -47,6 +49,7 @@ public class ShapesRenderer
{ {
this.client = minecraftClient; this.client = minecraftClient;
shapes = new HashMap<>(); shapes = new HashMap<>();
labels = new HashMap<>();
} }
public void render(MatrixStack matrices, Camera camera, float partialTick) public void render(MatrixStack matrices, Camera camera, float partialTick)
@@ -54,18 +57,22 @@ public class ShapesRenderer
//Camera camera = this.client.gameRenderer.getCamera(); //Camera camera = this.client.gameRenderer.getCamera();
ClientWorld iWorld = this.client.world; ClientWorld iWorld = this.client.world;
RegistryKey<World> dimensionType = iWorld.getRegistryKey(); RegistryKey<World> dimensionType = iWorld.getRegistryKey();
if (shapes.get(dimensionType) == null || shapes.get(dimensionType).isEmpty()) return; if ((shapes.get(dimensionType) == null || shapes.get(dimensionType).isEmpty()) &&
(labels.get(dimensionType) == null || labels.get(dimensionType).isEmpty())) return;
long currentTime = client.world.getTime(); long currentTime = client.world.getTime();
RenderSystem.disableTexture(); RenderSystem.disableTexture();
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
RenderSystem.depthFunc(515); RenderSystem.depthFunc(515);
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc(); RenderSystem.defaultBlendFunc();
//RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ZERO); //RenderSystem.blendFuncSeparate(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE, GlStateManager.SrcFactor.ONE, GlStateManager.DstFactor.ZERO);
//RenderSystem.shadeModel(7425); //RenderSystem.shadeModel(7425);
//////////RenderSystem.shadeModel(GL11.GL_FLAT); //////////RenderSystem.shadeModel(GL11.GL_FLAT);
//////////RenderSystem.enableAlphaTest(); //////////RenderSystem.enableAlphaTest();
//GL11.glEnable(GL11.GL_ALPHA_TEST);
//////////RenderSystem.alphaFunc(GL11.GL_GREATER, 0.003f); //////////RenderSystem.alphaFunc(GL11.GL_GREATER, 0.003f);
//GL11.glAlphaFunc(GL11.GL_GREATER, 0.003f);
RenderSystem.disableCull(); RenderSystem.disableCull();
//////////RenderSystem.disableLighting(); //////////RenderSystem.disableLighting();
RenderSystem.depthMask(false); RenderSystem.depthMask(false);
@@ -83,16 +90,19 @@ public class ShapesRenderer
double cameraY = camera.getPos().y; double cameraY = camera.getPos().y;
double cameraZ = camera.getPos().z; double cameraZ = camera.getPos().z;
synchronized (shapes) if (shapes.size() != 0) { synchronized (shapes) {
{
shapes.get(dimensionType).long2ObjectEntrySet().removeIf( shapes.get(dimensionType).long2ObjectEntrySet().removeIf(
entry -> entry.getValue().isExpired(currentTime) entry -> entry.getValue().isExpired(currentTime)
); );
matrices.push();
matrices.method_34425(matrices.peek().getModel());
RenderSystem.applyModelViewMatrix();
shapes.get(dimensionType).values().forEach( shapes.get(dimensionType).values().forEach(
s -> s ->
{ {
if ( !s.lastCall() && s.shouldRender(dimensionType)) if (s.shouldRender(dimensionType))
s.renderFaces(tessellator, bufferBuilder, cameraX, cameraY, cameraZ, partialTick); s.renderFaces(tessellator, bufferBuilder, cameraX, cameraY, cameraZ, partialTick);
} }
); );
@@ -100,21 +110,29 @@ public class ShapesRenderer
shapes.get(dimensionType).values().forEach( shapes.get(dimensionType).values().forEach(
s -> { s -> {
if ( !s.lastCall() && s.shouldRender(dimensionType)) if (s.shouldRender(dimensionType))
s.renderLines(matrices, tessellator, bufferBuilder, cameraX, cameraY, cameraZ, partialTick); s.renderLines(matrices, tessellator, bufferBuilder, cameraX, cameraY, cameraZ, partialTick);
} }
); );
matrices.pop();
RenderSystem.applyModelViewMatrix();
}}
if (labels.size() != 0) { synchronized (labels)
{
labels.get(dimensionType).long2ObjectEntrySet().removeIf(
entry -> entry.getValue().isExpired(currentTime)
);
//texts //texts
// maybe we can move it laster to lines and makes sure we don't overpass and don't have blinky transparency problems // maybe we can move it laster to lines and makes sure we don't overpass and don't have blinky transparency problems
shapes.get(dimensionType).values().forEach( labels.get(dimensionType).values().forEach(
s -> s ->
{ {
if ( s.lastCall() && s.shouldRender(dimensionType)) if (s.shouldRender(dimensionType))
s.renderLines(matrices, tessellator, bufferBuilder, cameraX, cameraY, cameraZ, partialTick); s.renderLines(matrices, tessellator, bufferBuilder, cameraX, cameraY, cameraZ, partialTick);
} }
); );
} }}
RenderSystem.enableCull(); RenderSystem.enableCull();
RenderSystem.depthMask(true); RenderSystem.depthMask(true);
RenderSystem.lineWidth(1.0F); RenderSystem.lineWidth(1.0F);
@@ -147,16 +165,18 @@ public class ShapesRenderer
RenderedShape<?> rshape = shapeFactory.apply(client, shape); RenderedShape<?> rshape = shapeFactory.apply(client, shape);
RegistryKey<World> dim = shape.shapeDimension; RegistryKey<World> dim = shape.shapeDimension;
long key = rshape.key(); long key = rshape.key();
synchronized (shapes) Map<RegistryKey<World>, Long2ObjectOpenHashMap<RenderedShape<? extends ShapeDispatcher.ExpiringShape>>> container =
rshape.stageDeux()?labels:shapes;
synchronized (container)
{ {
RenderedShape<?> existing = shapes.computeIfAbsent(dim, d -> new Long2ObjectOpenHashMap<>()).get(key); RenderedShape<?> existing = container.computeIfAbsent(dim, d -> new Long2ObjectOpenHashMap<>()).get(key);
if (existing != null) if (existing != null)
{ // promoting previous shape { // promoting previous shape
existing.promoteWith(rshape); existing.promoteWith(rshape);
} }
else else
{ {
shapes.get(dim).put(key, rshape); container.get(dim).put(key, rshape);
} }
} }
} }
@@ -167,6 +187,10 @@ public class ShapesRenderer
{ {
shapes.values().forEach(Long2ObjectOpenHashMap::clear); shapes.values().forEach(Long2ObjectOpenHashMap::clear);
} }
synchronized (labels)
{
labels.values().forEach(Long2ObjectOpenHashMap::clear);
}
} }
public void renewShapes() public void renewShapes()
@@ -177,6 +201,12 @@ public class ShapesRenderer
shape.expiryTick++; shape.expiryTick++;
})); }));
} }
synchronized (labels)
{
labels.values().forEach(el -> el.values().forEach(shape -> {
shape.expiryTick++;
}));
}
} }
public abstract static class RenderedShape<T extends ShapeDispatcher.ExpiringShape> public abstract static class RenderedShape<T extends ShapeDispatcher.ExpiringShape>
@@ -211,7 +241,7 @@ public class ShapesRenderer
if (client.world.getEntityById(shape.followEntity) == null) return false; if (client.world.getEntityById(shape.followEntity) == null) return false;
return true; return true;
} }
public boolean lastCall() public boolean stageDeux()
{ {
return false; return false;
} }
@@ -233,7 +263,6 @@ public class ShapesRenderer
@Override @Override
public void renderLines(MatrixStack matrices, Tessellator tessellator, BufferBuilder builder, double cx, double cy, double cz, float partialTick) public void renderLines(MatrixStack matrices, Tessellator tessellator, BufferBuilder builder, double cx, double cy, double cz, float partialTick)
{ {
/*
if (shape.a == 0.0) return; if (shape.a == 0.0) return;
Vec3d v1 = shape.relativiseRender(client.world, shape.pos, partialTick); Vec3d v1 = shape.relativiseRender(client.world, shape.pos, partialTick);
Camera camera1 = client.gameRenderer.getCamera(); Camera camera1 = client.gameRenderer.getCamera();
@@ -250,11 +279,12 @@ public class ShapesRenderer
//RenderSystem.translatef((float)(v1.x - d), (float)(v1.y - e), (float)(v1.z - f)); //RenderSystem.translatef((float)(v1.x - d), (float)(v1.y - e), (float)(v1.z - f));
matrices.translate(v1.x - d,v1.y - e,v1.z - f); matrices.translate(v1.x - d,v1.y - e,v1.z - f);
//RenderSystem.normal3f(0.0F, 1.0F, 0.0F); //RenderSystem.normal3f(0.0F, 1.0F, 0.0F);
//matrices. // not needed
if (shape.facing == null) if (shape.facing == null)
{ {
matrices.multiply(camera1.getRotation()); matrices.method_34425(new Matrix4f(camera1.getRotation()));
// or better matrices.multiply(camera1.getRotation());
//RenderSystem.multMatrix(new Matrix4f(camera1.getRotation())); //RenderSystem.multMatrix(new Matrix4f(camera1.getRotation()));
} }
else else
@@ -264,31 +294,40 @@ public class ShapesRenderer
case NORTH: case NORTH:
break; break;
case SOUTH: case SOUTH:
matrices. matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(180));
RenderSystem.rotatef(180.0f, 0.0f, 1.0f, 0.0f); //RenderSystem.rotatef(180.0f, 0.0f, 1.0f, 0.0f);
break; break;
case EAST: case EAST:
RenderSystem.rotatef(270.0f, 0.0f, 1.0f, 0.0f); matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(270));
//RenderSystem.rotatef(270.0f, 0.0f, 1.0f, 0.0f);
break; break;
case WEST: case WEST:
RenderSystem.rotatef(90.0f, 0.0f, 1.0f, 0.0f); matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion(90));
//RenderSystem.rotatef(90.0f, 0.0f, 1.0f, 0.0f);
break; break;
case UP: case UP:
RenderSystem.rotatef(90.0f, 1.0f, 0.0f, 0.0f); matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(90));
//RenderSystem.rotatef(90.0f, 1.0f, 0.0f, 0.0f);
break; break;
case DOWN: case DOWN:
RenderSystem.rotatef(-90.0f, 1.0f, 0.0f, 0.0f); matrices.multiply(Vec3f.POSITIVE_X.getDegreesQuaternion(-90));
//RenderSystem.rotatef(-90.0f, 1.0f, 0.0f, 0.0f);
break; break;
} }
} }
RenderSystem.scalef(shape.size* 0.0025f, -shape.size*0.0025f, shape.size*0.0025f); matrices.scale(shape.size* 0.0025f, -shape.size*0.0025f, shape.size*0.0025f);
//RenderSystem.scalef(shape.size* 0.0025f, -shape.size*0.0025f, shape.size*0.0025f);
if (shape.tilt!=0.0f) if (shape.tilt!=0.0f)
{ {
RenderSystem.rotatef(shape.tilt, 0.0f, 0.0f, 1.0f); matrices.multiply(Vec3f.POSITIVE_Z.getDegreesQuaternion(shape.tilt));
//RenderSystem.rotatef(shape.tilt, 0.0f, 0.0f, 1.0f);
} }
RenderSystem.translatef(-10*shape.indent, -10*shape.height-9, (float) (-10*renderEpsilon)-10*shape.raise); matrices.translate(-10*shape.indent, -10*shape.height-9, (-10*renderEpsilon)-10*shape.raise);
//RenderSystem.translatef(-10*shape.indent, -10*shape.height-9, (float) (-10*renderEpsilon)-10*shape.raise);
//if (visibleThroughWalls) RenderSystem.disableDepthTest(); //if (visibleThroughWalls) RenderSystem.disableDepthTest();
RenderSystem.scalef(-1.0F, 1.0F, 1.0F); //RenderSystem.scalef(-1.0F, 1.0F, 1.0F);
matrices.scale(-1, 1, 1);
//RenderSystem.applyModelViewMatrix(); // passed matrix directly to textRenderer.draw
float text_x = 0; float text_x = 0;
if (shape.align == 0) if (shape.align == 0)
@@ -300,20 +339,23 @@ public class ShapesRenderer
text_x = (float)(-textRenderer.getWidth(shape.value.getString())); text_x = (float)(-textRenderer.getWidth(shape.value.getString()));
} }
VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(Tessellator.getInstance().getBuffer()); VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(Tessellator.getInstance().getBuffer());
textRenderer.draw(shape.value, text_x, 0.0F, shape.textcolor, false, AffineTransformation.identity().getMatrix(), immediate, false, shape.textbck, 15728880); textRenderer.draw(shape.value, text_x, 0.0F, shape.textcolor, false, matrices.peek().getModel(), /*AffineTransformation.identity().getMatrix(),*/ immediate, false, shape.textbck, 15728880);
//textRenderer.draw(shape.value, text_x, 0.0F, shape.textcolor, false, AffineTransformation.identity().getMatrix(), immediate, false, shape.textbck, 15728880);
immediate.draw(); immediate.draw();
RenderSystem.popMatrix(); matrices.pop();
RenderSystem.applyModelViewMatrix();
//RenderSystem.popMatrix();
RenderSystem.enableCull(); RenderSystem.enableCull();
//RenderSystem.enableDepthTest(); //RenderSystem.enableDepthTest();
//RenderSystem.depthFunc(515); //RenderSystem.depthFunc(515);
//RenderSystem.enableAlphaTest(); //RenderSystem.enableAlphaTest();
//RenderSystem.alphaFunc(GL11.GL_GREATER, 0.003f); //RenderSystem.alphaFunc(GL11.GL_GREATER, 0.003f);
*/
} }
@Override @Override
public boolean lastCall() public boolean stageDeux()
{ {
return true; return true;
} }
@@ -348,6 +390,7 @@ public class ShapesRenderer
Vec3d v1 = shape.relativiseRender(client.world, shape.from, partialTick); Vec3d v1 = shape.relativiseRender(client.world, shape.from, partialTick);
Vec3d v2 = shape.relativiseRender(client.world, shape.to, partialTick); Vec3d v2 = shape.relativiseRender(client.world, shape.to, partialTick);
RenderSystem.lineWidth(shape.lineWidth); RenderSystem.lineWidth(shape.lineWidth);
//DebugRenderer.drawBox(new Box(v1.x, v1.y, v1.z, v2.x, v2.y, v2.z), 0.5f, 0.5f, 0.5f, 0.5f);//shape.r, shape.g, shape.b, shape.a);
drawBoxWireGLLines(tessellator, bufferBuilder, drawBoxWireGLLines(tessellator, bufferBuilder,
(float)(v1.x-cx-renderEpsilon), (float)(v1.y-cy-renderEpsilon), (float)(v1.z-cz-renderEpsilon), (float)(v1.x-cx-renderEpsilon), (float)(v1.y-cy-renderEpsilon), (float)(v1.z-cz-renderEpsilon),
(float)(v2.x-cx+renderEpsilon), (float)(v2.y-cy+renderEpsilon), (float)(v2.z-cz+renderEpsilon), (float)(v2.x-cx+renderEpsilon), (float)(v2.y-cy+renderEpsilon), (float)(v2.z-cz+renderEpsilon),
@@ -20,10 +20,9 @@ public class FabricAPIHooks {
WorldRenderEvents.BEFORE_DEBUG_RENDER.register(context -> { WorldRenderEvents.BEFORE_DEBUG_RENDER.register(context -> {
if (CarpetClient.shapes != null) { if (CarpetClient.shapes != null) {
context.matrixStack().push(); context.matrixStack().push();
//RenderSystem.pushMatrix();
CarpetClient.shapes.render(context.matrixStack(), context.camera(), context.tickDelta()); CarpetClient.shapes.render(context.matrixStack(), context.camera(), context.tickDelta());
//RenderSystem.popMatrix();
context.matrixStack().pop(); context.matrixStack().pop();
RenderSystem.applyModelViewMatrix();
} }
}); });
} }