Skip to content

Commit

Permalink
Improve base core render, restructure code
Browse files Browse the repository at this point in the history
  • Loading branch information
IONayrus committed Jan 26, 2025
1 parent 815b917 commit e3be6a7
Show file tree
Hide file tree
Showing 11 changed files with 311 additions and 157 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ mod_name=Note Block Master
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=GNU GPLv3
# The mod version. See https://semver.org/
mod_version=0.7.6
mod_version=0.7.6.1
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import net.nayrus.noteblockmaster.network.data.ComposeData;
import net.nayrus.noteblockmaster.render.ANBInfoRender;
import net.nayrus.noteblockmaster.render.CoreRender;
import net.nayrus.noteblockmaster.render.RenderUtils;
import net.nayrus.noteblockmaster.render.utils.RenderUtils;
import net.nayrus.noteblockmaster.screen.ComposerScreen;
import net.nayrus.noteblockmaster.setup.NBMTags;
import net.nayrus.noteblockmaster.setup.Registry;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.Vec3;
import net.nayrus.noteblockmaster.block.AdvancedNoteBlock;
import net.nayrus.noteblockmaster.render.utils.GeometryBuilder;
import net.nayrus.noteblockmaster.render.utils.RenderUtils;
import net.nayrus.noteblockmaster.setup.Registry;
import net.nayrus.noteblockmaster.setup.config.ClientConfig;
import net.nayrus.noteblockmaster.utils.Utils;
Expand Down Expand Up @@ -60,7 +62,7 @@ public static void renderColoredCone(MultiBufferSource.BufferSource buffer, Pose
Matrix4f positionMatrix = matrix.last().pose();

int resolution = ClientConfig.LOW_RESOLUTION_RENDER.get() ? 4 : (Math.max(24 - (int) RenderUtils.distanceVecToBlock(RenderUtils.CURRENT_CAM_POS, pos) * 2, 8));
RenderUtils.renderFlippedCone(positionMatrix, buffer.getBuffer(NBMRenderType.SEE_THROUGH_TRIANGLES), color, scale, alpha, resolution);
GeometryBuilder.buildFlippedCone(positionMatrix, buffer.getBuffer(NBMRenderType.SEE_THROUGH_TRIANGLES), color, scale, alpha, resolution);

matrix.popPose();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import net.minecraft.world.phys.Vec3;
import net.nayrus.noteblockmaster.block.TuningCore;
import net.nayrus.noteblockmaster.network.payload.TickSchedule;
import net.nayrus.noteblockmaster.render.utils.GeometryBuilder;
import net.nayrus.noteblockmaster.render.utils.RenderUtils;
import net.nayrus.noteblockmaster.setup.Registry;
import net.nayrus.noteblockmaster.setup.config.ClientConfig;
import net.nayrus.noteblockmaster.utils.Utils;
Expand Down Expand Up @@ -96,10 +98,10 @@ public static void renderTorus(MultiBufferSource.BufferSource buffer, PoseStack
if(!ClientConfig.LOW_RESOLUTION_RENDER.get()) {
float offset = Utils.getRotationToX(pos.getCenter().subtract(RenderUtils.CURRENT_CAM_POS));
int resolution = (Math.max(32 - (int) RenderUtils.distanceVecToBlock(RenderUtils.CURRENT_CAM_POS, pos) * 4, 16));
RenderUtils.buildHalfTorus(positionMatrix, buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), color, scale, radius, innerRadius,
GeometryBuilder.buildHalfTorus(positionMatrix, buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), color, scale, radius, innerRadius,
stage == AFTER_WEATHER ? offset : (offset + Utils.PI), alpha, resolution % 2 == 0 ? resolution : resolution - 1);
}else{
RenderUtils.buildTorus(positionMatrix, buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), color, scale, radius, innerRadius, alpha, 4);
GeometryBuilder.buildTorus(positionMatrix, buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), color, scale, radius, innerRadius, alpha, 4);
}

matrix.popPose();
Expand Down
138 changes: 0 additions & 138 deletions src/main/java/net/nayrus/noteblockmaster/render/RenderUtils.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
package net.nayrus.noteblockmaster.render.item;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import net.minecraft.Util;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.nayrus.noteblockmaster.render.utils.CircularColorGradient;
import net.nayrus.noteblockmaster.render.utils.GeometryBuilder;
import net.nayrus.noteblockmaster.render.NBMRenderType;
import net.nayrus.noteblockmaster.render.RenderUtils;
import net.nayrus.noteblockmaster.render.utils.RenderUtils;
import net.nayrus.noteblockmaster.utils.Utils;
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;

import java.awt.*;
Expand All @@ -21,41 +26,64 @@ public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, Pos

@Override
public void renderItemInGUI(ItemStack stack, PoseStack matrix, MultiBufferSource buffer, int packedLight, int packedOverlay) {
renderBaseRings(matrix, buffer, 0.5F, 0.7F, packedLight);
renderBaseRings(matrix, buffer, 0.5F, 0.7F, packedLight, 32);
}

@Override
public void renderItemOnGround(ItemStack stack, PoseStack matrix, MultiBufferSource buffer, int packedLight, int packedOverlay) {
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight);
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight, 16);
}

@Override
public void renderItemFirstPerson(ItemStack stack, PoseStack matrix, MultiBufferSource buffer, int packedLight, int packedOverlay, InteractionHand hand) {
matrix.translate(0.0,0,-0.2);
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight);
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight, 64);
}

@Override
public void renderItemThirdPerson(ItemStack stack, PoseStack matrix, MultiBufferSource buffer, int packedLight, int packedOverlay, InteractionHand hand) {
matrix.translate(0.0,0,-0.25);
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight);
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight, 32);
}

@Override
public void renderItemInFrame(ItemStack stack, PoseStack matrix, MultiBufferSource buffer, int packedLight, int packedOverlay) {
renderBaseRings(matrix, buffer, 0.33F, 0.7F, packedLight);
renderBaseRings(matrix, buffer, 0.5F, 0.7F, packedLight, 32);
}

@Override
public void renderItemOnHead(ItemStack stack, PoseStack matrix, MultiBufferSource buffer, int packedLight, int packedOverlay) {
renderBaseRings(matrix, buffer, 0.5F, 0.7F, packedLight);
renderBaseRings(matrix, buffer, 0.5F, 0.7F, packedLight, 32);
}

public static void renderBaseRings(PoseStack matrix, MultiBufferSource buffer, float scale, float alpha, int packedLight){
public static void renderBaseRings(PoseStack matrix, MultiBufferSource buffer, float scale, float alpha, int packedLight, int resolution){
Color ender = new Color(52,153,136, (int)(255 * alpha));
Color blazeO = RenderUtils.applyAlpha(Color.ORANGE, alpha);
CircularColorGradient innerGradient = new CircularColorGradient.Builder()
.addColor(1.7F, ender)
.addColor(2.0F, RenderUtils.shiftColor(ender, Color.GREEN, 0.2F))
.addColor(2.1F, ender)
.build();
CircularColorGradient middleGradient = new CircularColorGradient.Builder()
.addColor(0, RenderUtils.applyAlpha(Color.LIGHT_GRAY, alpha))
.addColor(Utils.PI, RenderUtils.applyAlpha(Color.DARK_GRAY, alpha))
.build();
CircularColorGradient outerGradient = new CircularColorGradient.Builder()
.addColor(0, blazeO)
.addColor(0.2F, RenderUtils.applyAlpha(RenderUtils.shiftColor(blazeO, Color.RED, 0.3F), alpha))
.addColor(0.35F, blazeO)
.build();
matrix.pushPose();
RenderUtils.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), new Color(52,153,136), scale, 0.5F, 0.03F, alpha, 32);
RenderUtils.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), Color.LIGHT_GRAY, scale, 0.6F, 0.07F, alpha, 32);
RenderUtils.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), Color.ORANGE, scale, 0.7F, 0.03F, alpha, 32);
matrix.rotateAround(Axis.YP.rotation(Util.getMillis()/600F), 0.5F,0,-0.5F);
GeometryBuilder.buildTorusWithGradient(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), scale, 0.45F, 0.035F, 0, resolution, innerGradient);
matrix.popPose();
matrix.pushPose();
matrix.rotateAround(Axis.YP.rotation(Util.getMillis()/-3000F), 0.5F,0,-0.5F);
GeometryBuilder.buildTorusWithGradient(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), scale, 0.6F, 0.12F, 0, resolution, middleGradient);
matrix.popPose();
matrix.pushPose();
matrix.rotateAround(Axis.YP.rotation(Util.getMillis()/-700F), 0.5F,0,-0.5F);
GeometryBuilder.buildTorusWithGradient(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), scale, 0.75F, 0.035F, 0, resolution, outerGradient);
matrix.popPose();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemStack;
import net.nayrus.noteblockmaster.render.utils.GeometryBuilder;
import net.nayrus.noteblockmaster.render.NBMRenderType;
import net.nayrus.noteblockmaster.render.RenderUtils;
import net.nayrus.noteblockmaster.render.utils.RenderUtils;
import net.nayrus.noteblockmaster.setup.Registry;
import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions;

Expand Down Expand Up @@ -52,13 +53,13 @@ public void renderRotatingRings(PoseStack matrix, MultiBufferSource buffer, Colo
matrix.pushPose();
matrix.rotateAround(Axis.YP.rotation(Util.getMillis()/1500F),0.5F,0F,-0.5F);
matrix.rotateAround(Axis.XP.rotation(Util.getMillis()/700F),0F,0.5F,-0.5F);
RenderUtils.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), baseColor, scale, 0.7F, 0.08F, alpha, 32);
GeometryBuilder.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), baseColor, scale, 0.7F, 0.08F, alpha, 32);
matrix.popPose();
matrix.pushPose();
matrix.rotateAround(Axis.XP.rotation(Util.getMillis()/8000F),0F,0.5F,-0.5F);
//matrix.rotateAround(Axis.YP.rotation(Util.getMillis()/8000F),0.5F,0F,-0.5F);
matrix.rotateAround(Axis.ZP.rotation(Util.getMillis()/300F),0.5F,0.5F,0F);
RenderUtils.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), baseColor, scale, 0.5F, 0.08F, alpha, 32);
GeometryBuilder.buildTorus(matrix.last().pose(), buffer.getBuffer(NBMRenderType.TRANSLUCENT_QUADS), baseColor, scale, 0.5F, 0.08F, alpha, 32);
matrix.popPose();
}

Expand Down
Loading

0 comments on commit e3be6a7

Please sign in to comment.