From 53e0574b63dda1dd22f5bb82f14a9e1f5c9321df Mon Sep 17 00:00:00 2001 From: Vasco Lavos Date: Sat, 6 Jan 2024 18:42:33 +0000 Subject: [PATCH] Redesign reacharound hud --- .../module/ReacharoundPlacingModule.java | 75 ++++++++++-------- .../gui/reacharound_overlay_horizontal.png | Bin 0 -> 1616 bytes .../gui/reacharound_overlay_vertical.png | Bin 0 -> 1608 bytes 3 files changed, 42 insertions(+), 33 deletions(-) create mode 100644 src/main/resources/assets/quark/textures/gui/reacharound_overlay_horizontal.png create mode 100644 src/main/resources/assets/quark/textures/gui/reacharound_overlay_vertical.png diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/ReacharoundPlacingModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/ReacharoundPlacingModule.java index 1bfe44e630..495492c3a6 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/ReacharoundPlacingModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/ReacharoundPlacingModule.java @@ -1,7 +1,24 @@ package org.violetmoon.quark.content.tweaks.module; +import java.util.List; + +import org.apache.commons.lang3.tuple.Pair; +import org.violetmoon.quark.base.Quark; +import org.violetmoon.quark.base.config.Config; +import org.violetmoon.zeta.client.event.play.ZClientTick; +import org.violetmoon.zeta.client.event.play.ZRenderGuiOverlay; +import org.violetmoon.zeta.event.bus.LoadEvent; +import org.violetmoon.zeta.event.bus.PlayEvent; +import org.violetmoon.zeta.event.bus.ZPhase; +import org.violetmoon.zeta.event.load.ZCommonSetup; +import org.violetmoon.zeta.event.play.entity.player.ZRightClickItem; +import org.violetmoon.zeta.module.ZetaLoadModule; +import org.violetmoon.zeta.module.ZetaModule; + import com.google.common.collect.Lists; +import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.Window; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; @@ -31,26 +48,12 @@ import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; -import org.apache.commons.lang3.tuple.Pair; - -import org.violetmoon.quark.base.Quark; -import org.violetmoon.quark.base.config.Config; -import org.violetmoon.quark.base.config.type.inputtable.RGBColorConfig; -import org.violetmoon.zeta.client.event.play.ZClientTick; -import org.violetmoon.zeta.client.event.play.ZRenderGuiOverlay; -import org.violetmoon.zeta.event.bus.LoadEvent; -import org.violetmoon.zeta.event.bus.PlayEvent; -import org.violetmoon.zeta.event.bus.ZPhase; -import org.violetmoon.zeta.event.load.ZCommonSetup; -import org.violetmoon.zeta.event.play.entity.player.ZRightClickItem; -import org.violetmoon.zeta.module.ZetaLoadModule; -import org.violetmoon.zeta.module.ZetaModule; - -import java.util.List; - @ZetaLoadModule(category = "tweaks") public class ReacharoundPlacingModule extends ZetaModule { + public static final ResourceLocation OVERLAY_HORIZONTAL = new ResourceLocation(Quark.MOD_ID, "textures/gui/reacharound_overlay_horizontal.png"); + public static final ResourceLocation OVERLAY_VERTICAL = new ResourceLocation(Quark.MOD_ID, "textures/gui/reacharound_overlay_vertical.png"); + @Config @Config.Min(0) @Config.Max(1) @@ -60,12 +63,7 @@ public class ReacharoundPlacingModule extends ZetaModule { public List whitelist = Lists.newArrayList(); @Config public List blacklist = Lists.newArrayList(); - @Config - public String display = "[ ]"; - @Config - public String displayHorizontal = "< >"; - @Config - public RGBColorConfig color = RGBColorConfig.forColor(1, 1, 1); + protected ReacharoundTarget currentTarget; protected int ticksDisplayed; @@ -199,7 +197,7 @@ protected record ReacharoundTarget(BlockPos pos, Direction dir, InteractionHand public static class Client extends ReacharoundPlacingModule { @PlayEvent - public void onRender(ZRenderGuiOverlay.Crosshair event) { + public void onRender(ZRenderGuiOverlay.Crosshair.Post event) { GuiGraphics guiGraphics = event.getGuiGraphics(); Minecraft mc = Minecraft.getInstance(); @@ -207,23 +205,34 @@ public void onRender(ZRenderGuiOverlay.Crosshair event) { if(mc.options.hideGui) return; + + HitResult result = mc.hitResult; + if(result instanceof BlockHitResult bhr) { + BlockPos hitPos = bhr.getBlockPos(); + BlockState stateAt = player.level().getBlockState(hitPos); + if(!stateAt.isAir()) + return; + } + if(player != null && currentTarget != null) { Window res = event.getWindow(); PoseStack matrix = event.getGuiGraphics().pose(); - String text = (currentTarget.dir.getAxis() == Axis.Y ? display : displayHorizontal); - matrix.pushPose(); - matrix.translate(res.getGuiScaledWidth() / 2F, res.getGuiScaledHeight() / 2f - 4, 0); + boolean vertical = (currentTarget.dir.getAxis() == Axis.Y); + ResourceLocation texture = (vertical ? OVERLAY_VERTICAL : OVERLAY_HORIZONTAL); + + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - float scale = Math.min(5, ticksDisplayed + event.getPartialTick()) / 5F; - scale *= scale; - int opacity = ((int) (255 * scale)) << 24; + matrix.pushPose(); + int x = res.getGuiScaledWidth() / 2 - 7; + int y = res.getGuiScaledHeight() / 2 - 7; + guiGraphics.blit(texture, x, y, 0, 0, 16, 16, 16, 16); - matrix.scale(scale, 1F, 1F); - matrix.translate(-mc.font.width(text) / 2f, 0, 0); - guiGraphics.drawString(mc.font, text, 0, 0, color.getColor() | opacity, false); matrix.popPose(); + + RenderSystem.defaultBlendFunc(); + } } diff --git a/src/main/resources/assets/quark/textures/gui/reacharound_overlay_horizontal.png b/src/main/resources/assets/quark/textures/gui/reacharound_overlay_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ef55b111516aecccdc22c81060624a1c24f662 GIT binary patch literal 1616 zcmcIkPl()99F7!4yB39l)PfjZ6dNMGK2GZS`_mnPYr z**z_KC>8YPrFivJ(YqehLr>zxi=qfU3JN{cqjdYrOeU7H?e=0I$xHIR@Av)w*aneY8*olsCdvc~RtCwpuo(n(4@G zx24&pYS?edx~jQ~>L{9lRn1dv&uYu{fgoDWdfr-ap^gPlJ{pu|<|)c(G-{2EmdN{x z=DNV4E4q#Wfs38ABx9Twr)CTRFK8ZTWh_#;VkD8+Dt!b>rzs>^Lz@ePy+CQCBCMa+;CGjlBW}KM}>#Ad5 z-86OV7@Cek9p&aIP#`bO=!>>Yy53*LO7%)bL6Pd*5Vbw4-+-7Ek9h*BivMr_? zw&k`X;9=D3i98`N7;!@ST*=ZtlK)e)D25^r1%o0R)%XHCWU(9<(5s#Lhgj!V>(wxp zCsXDTS`D|4Xw_BDQ2jbSpn6ZHb4oiJa3DRn+fzg#dgX}Ze4!6TK6H?jN9iue_TyDQ zS^@lbeZT$raoorA}IV14#G z`18e1u+Virq5tmh&mVbx?>hS9qu-=|_I`MI_1EXW|Kh|=XYM8K0=kubv-jHD$B*1I yuDlR@N%nq{-oJP2jZc4^`}5;#8}iS;NYb0P=U(A|um4qferIVV`0D(X5AOqugZ@?k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/quark/textures/gui/reacharound_overlay_vertical.png b/src/main/resources/assets/quark/textures/gui/reacharound_overlay_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..b072aeee4d2127aee611bd0f7306d972080f61ae GIT binary patch literal 1608 zcmcIkO>f*p7&eVSq-iB2q^fFFF`7~dL}&eNudSLWWCOdR4pF+Ifdep}8Sh$IdyMU5 zH#r5kv_kv=#E~@-{cx))ZF<3y?XmsL^FHr~pSxR|@0~w; z>8zqC=X>4GHr!vS&zE0<>udiUQ@AbX-H%E|S$VZSUr@gN?xLc+crWSiR6F5KpUJdE zxr{_>lIDO`lpCv)oU&a}p-2ppEWm&L{0l}25Aba})WUpS43q9*A#NRR_SxYs^Eh68 z8{L@rK#+=xqDeZ+N`DgIDX$Of`n8JD6jJR5c&!eIcET;RE(?L|mP43swUO(!bjQ+6 z=Q=Vp-BY!;s+&a9ea-Q07tIe0(Fz{>+nsmkvEV7d!>Y=CRUMDVt+CmX#X!|P4>%0f zFbE(>d5~3fLbCGef}tZyRwQ|q$PCqtG?IH&fI;ajg*0zyvvOW0D405-xvICcI;90L z44(~6(*|8u8~YGtuJ=UZvVV{Zbz78juV7+hUu4zQMKI2qz4=}-nr6zGDn=p&SP8=P zCR9F@l`MzyDS0%Xn{0A_y%4mLMPJI%qETB57Gyxy=#AS+#^tztvsN_UAUd=X0X8(l zf_@Rr>FaIZG<-|{c!mmL1URkesW{1#_}~;&82Y`etZ2qWuM=QU(Ml5TQ`>PpPqc~0 zY))v~a){?flz4U|VlNgkr}|V4?C(gnSJ$iFKbuo78E`Zu@nfc$G~yA_9oHd|VYzS- zlnBFgBb{otrLhIu2SozE3LQPpTC3u~sJlkQ9nU4YY1t$;ERRH{*Cw_RyGC1&Bi)KI z;>?d_ky03pB&7qP=Gg$FM{3sPNEV^wP-L?nUtotUx=9JWI+*_ux5Vf3)hI#JDf20- zhdaQm?yBH;{yI6Kde5hGMmrt~AU(O;GejxlYD^2UHh?0ZI!Nl%beDAh*{Ywf=l_rD zc`@0LW&;8KsNy;gwRVzOE7T{uH2wCN>nz}4W%aW0PGb?MsCUHssy-;a*BZg$VzTe-OW_rps^@9Q5v{Ppsk`%3SNJLJNTXD(ci l?w|Sk`yI4=ZfQw*>yMQyKfV6vr?uDjHa0syyz|+Y{{dDQ_}Kse literal 0 HcmV?d00001