From f909211292d4a329fd4f0f02503098084ec8c73a Mon Sep 17 00:00:00 2001 From: BlazeMCworld Date: Mon, 31 Oct 2022 19:22:34 +0100 Subject: [PATCH 1/3] add tracers for /search --- .../recode/feature/rendering/CodeSearch.kt | 52 +++++++++++++++++++ .../feature/rendering/SignRenderDistance.kt | 6 +-- .../render/MBlockEntityRenderDispatcher.java | 2 +- .../recode/mod/config/impl/ScreenGroup.java | 1 + .../homchom/recode/render/RenderEvents.kt | 8 ++- 5 files changed, 63 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt b/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt index cdece939..c9813440 100644 --- a/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt +++ b/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt @@ -1,12 +1,15 @@ package io.github.homchom.recode.feature.rendering +import com.mojang.blaze3d.vertex.BufferBuilder import io.github.homchom.recode.feature.feature import io.github.homchom.recode.mc import io.github.homchom.recode.mod.features.commands.CodeSearcher import io.github.homchom.recode.render.OutlineBlockEntityEvent +import io.github.homchom.recode.render.RenderBlockEntityEvent import io.github.homchom.recode.sys.networking.LegacyState import io.github.homchom.recode.sys.player.DFInfo import io.github.homchom.recode.ui.rgba +import net.minecraft.client.renderer.RenderType import net.minecraft.world.level.block.entity.SignBlockEntity import kotlin.math.sqrt @@ -28,5 +31,54 @@ val FCodeSearch = feature("Code Search") { } result } + + RenderBlockEntityEvent.listen { info, result -> + if (info.block is SignBlockEntity + && DFInfo.currentState.getMode() == LegacyState.Mode.DEV + && mc.player!!.isCreative + && CodeSearcher.isSignMatch(info.block) + ) { + info.poseStack.pushPose() + + try { + val builder = info.bufferSource.getBuffer(RenderType.lines()) as BufferBuilder + + builder.vertex( + info.poseStack.last().pose(), + 0.5f, 0.5f, 0.5f + ) + builder.color(0f, 1f, 0f, 1f) + builder.normal(0f, 0f, 0f) + builder.endVertex() + + val cameraPos = mc.gameRenderer.mainCamera.position + .subtract( + info.block.blockPos.x.toDouble(), + info.block.blockPos.y.toDouble(), + info.block.blockPos.z.toDouble() + ) + .add( + mc.gameRenderer.mainCamera.lookVector.x().toDouble(), + mc.gameRenderer.mainCamera.lookVector.y().toDouble(), + mc.gameRenderer.mainCamera.lookVector.z().toDouble(), + ) + + builder.vertex( + info.poseStack.last().pose(), + cameraPos.x.toFloat(), + cameraPos.y.toFloat(), + cameraPos.z.toFloat() + ) + builder.color(0f, 0f, 1f, 1f) + builder.normal(0f, 0f, 0f) + builder.endVertex() + + } catch (e: Exception) { + e.printStackTrace() + } + info.poseStack.popPose() + } + result + } } } \ No newline at end of file diff --git a/src/main/java/io/github/homchom/recode/feature/rendering/SignRenderDistance.kt b/src/main/java/io/github/homchom/recode/feature/rendering/SignRenderDistance.kt index 31efff06..816f2c66 100644 --- a/src/main/java/io/github/homchom/recode/feature/rendering/SignRenderDistance.kt +++ b/src/main/java/io/github/homchom/recode/feature/rendering/SignRenderDistance.kt @@ -8,11 +8,11 @@ import net.minecraft.world.level.block.entity.SignBlockEntity val FSignRenderDistance = feature("Sign Render Distance") { onLoad { - RenderBlockEntityEvent.listen { blockEntity, render -> - if (blockEntity is SignBlockEntity) { + RenderBlockEntityEvent.listen { info, render -> + if (info.block is SignBlockEntity) { val cameraPos = mc.cameraEntity!!.blockPosition() val distance = Config.getInteger("signRenderDistance").toDouble() - if (!blockEntity.getBlockPos().closerThan(cameraPos, distance)) { + if (!info.block.getBlockPos().closerThan(cameraPos, distance)) { return@listen false } } diff --git a/src/main/java/io/github/homchom/recode/mixin/render/MBlockEntityRenderDispatcher.java b/src/main/java/io/github/homchom/recode/mixin/render/MBlockEntityRenderDispatcher.java index 196b5ef1..22ef16e6 100644 --- a/src/main/java/io/github/homchom/recode/mixin/render/MBlockEntityRenderDispatcher.java +++ b/src/main/java/io/github/homchom/recode/mixin/render/MBlockEntityRenderDispatcher.java @@ -16,7 +16,7 @@ public class MBlockEntityRenderDispatcher { public void renderBlockEntities( BlockEntity blockEntity, float f, PoseStack poseStack, MultiBufferSource multiBufferSource, CallbackInfo ci) { - if (!RenderBlockEntityEvent.INSTANCE.invoke(blockEntity, true)) { + if (!RenderBlockEntityEvent.INSTANCE.invoke(new RenderBlockInfo(blockEntity, poseStack, multiBufferSource), true)) { ci.cancel(); } } diff --git a/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java b/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java index 8e2f425f..17864590 100644 --- a/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java +++ b/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java @@ -33,6 +33,7 @@ public void initialize() { code.register(new BooleanSetting("showCodeblockDescription", true)); code.register(new BooleanSetting("showParameterErrors", true)); code.register(new BooleanSetting("previewHeadSkins", true)); + code.register(new BooleanSetting("codeSearchTracers", true)); this.register(code); } } diff --git a/src/main/java/io/github/homchom/recode/render/RenderEvents.kt b/src/main/java/io/github/homchom/recode/render/RenderEvents.kt index 4d4282ca..05c8cfad 100644 --- a/src/main/java/io/github/homchom/recode/render/RenderEvents.kt +++ b/src/main/java/io/github/homchom/recode/render/RenderEvents.kt @@ -1,10 +1,12 @@ package io.github.homchom.recode.render +import com.mojang.blaze3d.vertex.PoseStack import io.github.homchom.recode.event.* import io.github.homchom.recode.ui.RGBAColor import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents.BeforeBlockOutline +import net.minecraft.client.renderer.MultiBufferSource import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.phys.HitResult @@ -19,9 +21,11 @@ object BeforeOutlineBlockEvent : data class BlockOutlineContext(val worldRenderContext: WorldRenderContext, val hitResult: HitResult?) +data class RenderBlockInfo(val block: BlockEntity, val poseStack: PoseStack, val bufferSource: MultiBufferSource) + object RenderBlockEntityEvent : - CustomEvent by createEvent(), - ValidatedEvent + CustomEvent by createEvent(), + ValidatedEvent object OutlineBlockEntityEvent : CustomEvent by DependentEvent(createEvent(), CustomOutlineProcessor) From 0d3290bac70dcaf44adb3385cd2f0266cf2dd9fb Mon Sep 17 00:00:00 2001 From: BlazeMCworld Date: Tue, 1 Nov 2022 13:17:25 +0100 Subject: [PATCH 2/3] code search tracer changes -add lang file -add pulse setting --- .../recode/feature/rendering/CodeSearch.kt | 46 ++++++++++++++----- .../recode/mod/config/impl/ScreenGroup.java | 6 ++- .../resources/assets/recode/lang/en_us.json | 6 +++ 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt b/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt index c9813440..0024aa7a 100644 --- a/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt +++ b/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt @@ -3,6 +3,7 @@ package io.github.homchom.recode.feature.rendering import com.mojang.blaze3d.vertex.BufferBuilder import io.github.homchom.recode.feature.feature import io.github.homchom.recode.mc +import io.github.homchom.recode.mod.config.Config import io.github.homchom.recode.mod.features.commands.CodeSearcher import io.github.homchom.recode.render.OutlineBlockEntityEvent import io.github.homchom.recode.render.RenderBlockEntityEvent @@ -11,6 +12,7 @@ import io.github.homchom.recode.sys.player.DFInfo import io.github.homchom.recode.ui.rgba import net.minecraft.client.renderer.RenderType import net.minecraft.world.level.block.entity.SignBlockEntity +import net.minecraft.world.phys.Vec3 import kotlin.math.sqrt val FCodeSearch = feature("Code Search") { @@ -37,21 +39,30 @@ val FCodeSearch = feature("Code Search") { && DFInfo.currentState.getMode() == LegacyState.Mode.DEV && mc.player!!.isCreative && CodeSearcher.isSignMatch(info.block) + && Config.getBoolean("codeSearchTracers") ) { info.poseStack.pushPose() try { val builder = info.bufferSource.getBuffer(RenderType.lines()) as BufferBuilder - builder.vertex( - info.poseStack.last().pose(), - 0.5f, 0.5f, 0.5f - ) - builder.color(0f, 1f, 0f, 1f) - builder.normal(0f, 0f, 0f) - builder.endVertex() + var pulseStart = 0f + var pulseEnd = 1f + + if (Config.getBoolean("codeSearchPulse")) { + var pulseProgress = (((mc.level!!.gameTime % 40).toFloat() + mc.deltaFrameTime) % 40) / 20 + + if (pulseProgress > 1) { + pulseProgress = 2 - pulseProgress + } + + pulseStart = pulseProgress * 0.8f + pulseEnd = pulseProgress * 0.8f + 0.2f + } - val cameraPos = mc.gameRenderer.mainCamera.position + val startPos = Vec3(0.5, 0.5, 0.5) + + val endPos = mc.gameRenderer.mainCamera.position .subtract( info.block.blockPos.x.toDouble(), info.block.blockPos.y.toDouble(), @@ -63,11 +74,24 @@ val FCodeSearch = feature("Code Search") { mc.gameRenderer.mainCamera.lookVector.z().toDouble(), ) + val lineStart = startPos.lerp(endPos, pulseStart.toDouble()) + val lineEnd = startPos.lerp(endPos, pulseEnd.toDouble()) + + builder.vertex( + info.poseStack.last().pose(), + lineStart.x.toFloat(), + lineStart.y.toFloat(), + lineStart.z.toFloat() + ) + builder.color(0f, 1f, 0f, 1f) + builder.normal(0f, 0f, 0f) + builder.endVertex() + builder.vertex( info.poseStack.last().pose(), - cameraPos.x.toFloat(), - cameraPos.y.toFloat(), - cameraPos.z.toFloat() + lineEnd.x.toFloat(), + lineEnd.y.toFloat(), + lineEnd.z.toFloat() ) builder.color(0f, 0f, 1f, 1f) builder.normal(0f, 0f, 0f) diff --git a/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java b/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java index 17864590..e0af3af0 100644 --- a/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java +++ b/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java @@ -33,7 +33,11 @@ public void initialize() { code.register(new BooleanSetting("showCodeblockDescription", true)); code.register(new BooleanSetting("showParameterErrors", true)); code.register(new BooleanSetting("previewHeadSkins", true)); - code.register(new BooleanSetting("codeSearchTracers", true)); this.register(code); + + ConfigSubGroup codeSearch = new ConfigSubGroup("code_search"); + codeSearch.register(new BooleanSetting("codeSearchTracers", false)); + codeSearch.register(new BooleanSetting("codeSearchPulse", false)); + this.register(codeSearch); } } diff --git a/src/main/resources/assets/recode/lang/en_us.json b/src/main/resources/assets/recode/lang/en_us.json index 6b2030be..c0318984 100644 --- a/src/main/resources/assets/recode/lang/en_us.json +++ b/src/main/resources/assets/recode/lang/en_us.json @@ -56,6 +56,12 @@ "config.recode.option.cpuOnScreen": "Show LagSlayer on Screen", "config.recode.option.cpuOnScreen.tooltip": "Display the LagSlayer CPU bar on the screen\ndirectly instead of the action bar.", + "config.recode.subcategory.screen_code_search": "Code Search", + "config.recode.subcategory.screen_code_search.tooltip": "Settings related to /search.", + "config.recode.option.codeSearchTracers": "Code Search Tracers", + "config.recode.option.codeSearchTracers.tooltip": "Show Tracers (Lines) towards the /search results.", + "config.recode.option.codeSearchPulse": "Code Search Pulse", + "config.recode.option.codeSearchPulse.tooltip": "Animate the Tracers for the code search.", "config.recode.subcategory.commands_automsg": "Auto /msg", "config.recode.subcategory.commands_automsg.tooltip": "Will set a conversation with someone when\ndoing /msg , any message sent in chat\nwill automatically be sent to that person only.", From 5c921898f8dc5aec540aad6312740a1e08889a64 Mon Sep 17 00:00:00 2001 From: BlazeMCworld Date: Tue, 1 Nov 2022 16:41:27 +0100 Subject: [PATCH 3/3] code search tracer direction setting --- .../github/homchom/recode/feature/rendering/CodeSearch.kt | 8 ++++++-- .../homchom/recode/mod/config/impl/ScreenGroup.java | 1 + src/main/resources/assets/recode/lang/en_us.json | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt b/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt index 0024aa7a..1840ab63 100644 --- a/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt +++ b/src/main/java/io/github/homchom/recode/feature/rendering/CodeSearch.kt @@ -52,8 +52,12 @@ val FCodeSearch = feature("Code Search") { if (Config.getBoolean("codeSearchPulse")) { var pulseProgress = (((mc.level!!.gameTime % 40).toFloat() + mc.deltaFrameTime) % 40) / 20 - if (pulseProgress > 1) { - pulseProgress = 2 - pulseProgress + if (Config.getBoolean("codeSearchTwoWayPulse")) { + if (pulseProgress > 1) { + pulseProgress = 2 - pulseProgress + } + } else { + pulseProgress = 1 - (pulseProgress % 1) } pulseStart = pulseProgress * 0.8f diff --git a/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java b/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java index e0af3af0..1d700a98 100644 --- a/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java +++ b/src/main/java/io/github/homchom/recode/mod/config/impl/ScreenGroup.java @@ -38,6 +38,7 @@ public void initialize() { ConfigSubGroup codeSearch = new ConfigSubGroup("code_search"); codeSearch.register(new BooleanSetting("codeSearchTracers", false)); codeSearch.register(new BooleanSetting("codeSearchPulse", false)); + codeSearch.register(new BooleanSetting("codeSearchTwoWayPulse", false)); this.register(codeSearch); } } diff --git a/src/main/resources/assets/recode/lang/en_us.json b/src/main/resources/assets/recode/lang/en_us.json index c0318984..2e019ec7 100644 --- a/src/main/resources/assets/recode/lang/en_us.json +++ b/src/main/resources/assets/recode/lang/en_us.json @@ -62,6 +62,8 @@ "config.recode.option.codeSearchTracers.tooltip": "Show Tracers (Lines) towards the /search results.", "config.recode.option.codeSearchPulse": "Code Search Pulse", "config.recode.option.codeSearchPulse.tooltip": "Animate the Tracers for the code search.", + "config.recode.option.codeSearchTwoWayPulse": "Code Search Two Way Pulse", + "config.recode.option.codeSearchTwoWayPulse.tooltip": "Animate the Pulse in a towards/away pattern\ninstead of always towards.", "config.recode.subcategory.commands_automsg": "Auto /msg", "config.recode.subcategory.commands_automsg.tooltip": "Will set a conversation with someone when\ndoing /msg , any message sent in chat\nwill automatically be sent to that person only.",