From 5c2b8fddc4a56cc9fcfbbd5e3ca9b0515b1f6dfe Mon Sep 17 00:00:00 2001 From: Griefed Date: Tue, 14 Nov 2023 21:51:14 +0100 Subject: [PATCH] Basic hud elements --- .../java/de/griefed/addemall/CommonClass.java | 1 + .../griefed/addemall/client/BlockToolHud.java | 59 ++++++++++++++++++ .../addemall/event/KeyInputHandler.java | 6 +- .../griefed/addemall/item/BlockToolItem.java | 4 +- .../assets/addemall/textures/item/bar.png | Bin 0 -> 3195 bytes .../assets/addemall/textures/item/hoe.png | Bin 0 -> 776 bytes .../assets/addemall/textures/item/multi.png | Bin 0 -> 1474 bytes .../textures/item/multi_deactivated.png | Bin 0 -> 1470 bytes .../assets/addemall/textures/item/shovel.png | Bin 0 -> 872 bytes definitions/bb projects/Block Tool/bar.png | Bin 0 -> 3195 bytes definitions/bb projects/Block Tool/bar.xcf | Bin 0 -> 5026 bytes definitions/bb projects/Block Tool/hoe.png | Bin 0 -> 776 bytes definitions/bb projects/Block Tool/hoe.xcf | Bin 0 -> 1337 bytes definitions/bb projects/Block Tool/multi.png | Bin 0 -> 1474 bytes definitions/bb projects/Block Tool/multi.xcf | Bin 0 -> 2974 bytes .../Block Tool/multi_deactivated.png | Bin 0 -> 1470 bytes definitions/bb projects/Block Tool/shovel.png | Bin 0 -> 872 bytes definitions/bb projects/Block Tool/shovel.xcf | Bin 0 -> 1073 bytes .../de/griefed/addemall/AddEmAllFabric.java | 5 +- .../addemall/client/BlockToolHudOverlay.java | 20 ++++++ .../addemall/event/FabricKeyInputHandler.java | 4 +- .../addemall/client/BlockToolHudOverlay.java | 17 +++++ .../addemall/event/ForgeKeyInputHandler.java | 4 +- 23 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 common/src/main/java/de/griefed/addemall/client/BlockToolHud.java create mode 100644 common/src/main/resources/assets/addemall/textures/item/bar.png create mode 100644 common/src/main/resources/assets/addemall/textures/item/hoe.png create mode 100644 common/src/main/resources/assets/addemall/textures/item/multi.png create mode 100644 common/src/main/resources/assets/addemall/textures/item/multi_deactivated.png create mode 100644 common/src/main/resources/assets/addemall/textures/item/shovel.png create mode 100644 definitions/bb projects/Block Tool/bar.png create mode 100644 definitions/bb projects/Block Tool/bar.xcf create mode 100644 definitions/bb projects/Block Tool/hoe.png create mode 100644 definitions/bb projects/Block Tool/hoe.xcf create mode 100644 definitions/bb projects/Block Tool/multi.png create mode 100644 definitions/bb projects/Block Tool/multi.xcf create mode 100644 definitions/bb projects/Block Tool/multi_deactivated.png create mode 100644 definitions/bb projects/Block Tool/shovel.png create mode 100644 definitions/bb projects/Block Tool/shovel.xcf create mode 100644 fabric/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java create mode 100644 forge/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java diff --git a/common/src/main/java/de/griefed/addemall/CommonClass.java b/common/src/main/java/de/griefed/addemall/CommonClass.java index d05a92e..cb26f5d 100644 --- a/common/src/main/java/de/griefed/addemall/CommonClass.java +++ b/common/src/main/java/de/griefed/addemall/CommonClass.java @@ -48,6 +48,7 @@ public static void init() { ModItems.loadClass(); KeyInputHandler.loadClass(); + } public static void onItemTooltip(ItemStack stack, TooltipFlag context, List tooltip) { diff --git a/common/src/main/java/de/griefed/addemall/client/BlockToolHud.java b/common/src/main/java/de/griefed/addemall/client/BlockToolHud.java new file mode 100644 index 0000000..eba1eaa --- /dev/null +++ b/common/src/main/java/de/griefed/addemall/client/BlockToolHud.java @@ -0,0 +1,59 @@ +package de.griefed.addemall.client; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import de.griefed.addemall.Constants; +import de.griefed.addemall.event.KeyInputHandler; +import de.griefed.addemall.item.ModItems; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; + +public class BlockToolHud { + + protected static final ResourceLocation TOOL_MULTI_ACTIVATED = new ResourceLocation(Constants.MOD_ID, "textures/item/multi.png"); + protected static final ResourceLocation TOOL_MULTI_DEACTIVATED = new ResourceLocation(Constants.MOD_ID, "textures/item/multi_deactivated.png"); + protected static final ResourceLocation TOOL_SHOVEL = new ResourceLocation(Constants.MOD_ID, "textures/item/shovel.png"); + protected static final ResourceLocation TOOL_HOE = new ResourceLocation(Constants.MOD_ID, "textures/item/hoe.png"); + protected static final ResourceLocation TOOL_BAR = new ResourceLocation(Constants.MOD_ID, "textures/item/bar.png"); + + protected static void renderToolSettings(PoseStack stack, int x, int height) { + Player player = Minecraft.getInstance().player; + if (player == null) { + return; + } + if (player.getMainHandItem().is(ModItems.BLOCK_TOOL.get())) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + + RenderSystem.setShaderTexture(0, TOOL_BAR); + // X coord Y coord u v wid hei twi the + GuiComponent.blit(stack, x + 96, height - 23, 0, 0, 65, 23, 65, 23); + + if (KeyInputHandler.BLOCKTOOL_MULTI_ACTIVE) { + RenderSystem.setShaderTexture(0, TOOL_MULTI_ACTIVATED); + GuiComponent.blit(stack, x + 100, height - 19, 0, 0, 16, 16, 16, 16); + } else { + RenderSystem.setShaderTexture(0, TOOL_MULTI_DEACTIVATED); + GuiComponent.blit(stack, x + 100, height - 19, 0, 0, 16, 16, 16, 16); + } + + if (KeyInputHandler.BLOCKTOOL_SHOVELMODE) { + RenderSystem.setShaderTexture(0, TOOL_SHOVEL); + GuiComponent.blit(stack, x + 120, height - 19, 0, 0, 16, 16, 16, 16); + } else { + RenderSystem.setShaderTexture(0, TOOL_HOE); + GuiComponent.blit(stack, x + 120, height - 19, 0, 0, 16, 16, 16, 16); + } + + // TODO draw selected block + // TODO draw amount available + /*if (block selected) { + RenderSystem.setShaderTexture(0, stack of selected block with amount of material available); + GuiComponent.blit(stack, x + 140, height - 19, 0, 0, 16, 16, 16, 16); + }*/ + } + } +} diff --git a/common/src/main/java/de/griefed/addemall/event/KeyInputHandler.java b/common/src/main/java/de/griefed/addemall/event/KeyInputHandler.java index e85b230..7b559cd 100644 --- a/common/src/main/java/de/griefed/addemall/event/KeyInputHandler.java +++ b/common/src/main/java/de/griefed/addemall/event/KeyInputHandler.java @@ -1,8 +1,6 @@ package de.griefed.addemall.event; -import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.client.KeyMapping; -import org.lwjgl.glfw.GLFW; public class KeyInputHandler { @@ -13,8 +11,8 @@ public class KeyInputHandler { public static KeyMapping toolBehaviourKey; public static KeyMapping toolShovelHoeKey; - public static boolean TOOL_BEHAVIOUR = false; - public static boolean TOOL_SHOVEL_HOE = false; + public static boolean BLOCKTOOL_MULTI_ACTIVE = false; + public static boolean BLOCKTOOL_SHOVELMODE = false; public static void loadClass() {} } diff --git a/common/src/main/java/de/griefed/addemall/item/BlockToolItem.java b/common/src/main/java/de/griefed/addemall/item/BlockToolItem.java index b46779b..b6a7d37 100644 --- a/common/src/main/java/de/griefed/addemall/item/BlockToolItem.java +++ b/common/src/main/java/de/griefed/addemall/item/BlockToolItem.java @@ -62,7 +62,7 @@ public InteractionResult useOn(UseOnContext context) { BlockState blockState = level.getBlockState(blockPos); Block block = blockState.getBlock(); ItemStack itemInHand = context.getItemInHand(); - if (player != null && player.isSecondaryUseActive() && KeyInputHandler.TOOL_BEHAVIOUR) { + if (player != null && player.isSecondaryUseActive() && KeyInputHandler.BLOCKTOOL_MULTI_ACTIVE) { // Axe Optional strippedState = getStripped(blockState); Optional previousState = WeatheringCopper.getPrevious(blockState); @@ -98,7 +98,7 @@ public InteractionResult useOn(UseOnContext context) { level.setBlockAndUpdate(blockPos, headBlock.getMaxAgeState(blockState)); return InteractionResult.sidedSuccess(level.isClientSide); - } else if (KeyInputHandler.TOOL_SHOVEL_HOE) { + } else if (KeyInputHandler.BLOCKTOOL_SHOVELMODE) { // shovel if (context.getClickedFace() == Direction.DOWN) { return InteractionResult.PASS; diff --git a/common/src/main/resources/assets/addemall/textures/item/bar.png b/common/src/main/resources/assets/addemall/textures/item/bar.png new file mode 100644 index 0000000000000000000000000000000000000000..bfdd3df7f0b1108288076ad730d7aa79d0947bda GIT binary patch literal 3195 zcmV->421KEP)EX>4Tx04R}tkv&MmKpe$iTct&-A{G&G$WWc^q9Tr^ zibb$c+6t{Ym|Xe=O&XFE7e~Rh;NZt%)xpJCR|i)?5c~jfb#YR3krMxx6k5c1aNLh~ z_a1le0B@th6r(E&D5|Na;xQqcTNV7T=tVyUF^qu73@wpf%)oVg-NVDzy9m#6KlkV8 zlk)}xJOXi)X}U?gK|H%@YMl3pL#!mq#OK75I$emr&ZfnvWaJd7FJZYjX+LDi^w@?7y&*+n`sOboTb|nO1*4Z+UX1S4)DH00006VoOIv02%-^ z0E+z_6D|M%010qNS#tmYE+YT{E+YYWr9XB6000McNliru=L-%L0Ua@@k&FNU02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{0187%L_t(o!^N0gsAgw%$AACz zJbS#Eqzy)DOByIOp@K=(i&ifrZEw8nRf5o72vTUFP}*MgMkoli zNNNkb=sk3|!SLdD-s{cW zrH6mtFx&FJDry=^Zv* zaOvV}@5=zQM$5L*3Png#(`01Pr^FrsDT#>EHBD}ttQ!$Q3L$8x!+!iv|ElINC)Vo? zW_H(snh&A- zC=z9}W;|MZ_k6_MS8MasK7!UMLYulOiJI5qK!Fp{}QW=&9fR0DuAY zMBv3C8F+{YF^+oYLqP6hf}%taA>5(&07L{>%B`6piOvA{dx`IM5*&@O*=AC9VttM58tJXcN>&a#etOZ(sTUG&vEO@ z50Hc`Rbc5hHRUORj69p+ec^+@{uucO|8t91zxahq#O>>SiOWq^WV0ylvFd_ZEA8wY zJ8|;ddmnF)-NVHfKmRokUjn5PQjpEG>^#h5Pkj6j9>0G34Q^cc`o)8T+qc%6IG8tz zWahm)T_4IxpkwcN_rt&Nj%;Sg%*_0YvX0 zA=6z7ff3Nmj1qU6D@Ht*XtPOzQk>^DAmFA=VU`a4Btl;4RnPlQQ5}> zy51ELSkscM;>loN#feHTm9aAeyYE1SuuM-7yV< z#@)su=#!uRZ2b3)*MCgr?aXH!tk$enE4H?_xc1#|Gv7VQ_C5D9o3(UZKkNx_;fFU_bv;*aAF%3rP9NQ7 zvFX`gZ~otg$L#zxo}a|lky*=jo4K~PVBTcja%_irlR5X+6Lh8U*rSiuKK%CO8+_?& z|ITY){wMZs?R_yN%kHrk5i6<6tO&yF5V)x-G&37Fg4xc__7mrx`mN&!*ROE;{D z&bRpf*T4GRuHSs$2Z@u+JRr3@g+Ap|fJIi>Bc>lepP-23FiANnZQE}ch~*g18E z3(x=k>fm7U&t{g*thjr`fP7=FhOt4z_*ak?r8q~AAN|eyAO8Tq@yn0g(MRjP&@UJ4 z-`>Ay+Rr&rNc7cgge0$XR7GhFSn{8#A@=EMIt*ho6{u>WVQ^&^Fo z_iyV`zg#@99+rm;aOI7?FqJUk*CK{gxMG46sGA7uZ$F_IbKPVZ7g zaOI6X4#V;!!HS3Xr9>d+jSYAnQ~d&v1!c(nxHzsiP9An^%b8NjU=s%%5h;ySZqjy9t2W}p<88l-z1HMY$hzE!)@J{ zDhKkQLwvY4NH+RXloBWf5q@xM|DbB5lm@%?rC~It0L`$eeVIgFPKumNj^jai={N4) zj@s+i{s9r*MFd`IQL+ugI$-S>YhP8NOruDNXr%B#$^KX;D5W}cR&O;1)msH19GW-i z9lA2ep9qA;y8Lc1bgtA#viias^vo$565tOK15pig0hhQTj z2GbF3qZzPmW;8oT**$)o#m#FqlL1a-jYB_mlg5|2-f<^#uDTP++D6DyyS25&9?Xmn#;elJ9p)VvVW7uaP+Rpb51($0?n;6zas1S&vlcsNW#BGERHXJpuweMo?{wN*9NcHVk_9gX?c+sbB*yVK0K@Y2(-SGDpfPj`Oa_jMkI hTQM`kns#En{{_cSPR8(V$4~$O002ovPDHLkV1gpQ7FqxR literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/addemall/textures/item/hoe.png b/common/src/main/resources/assets/addemall/textures/item/hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..072fb5ecab62148fc2a5d561c7e8e65c43abca38 GIT binary patch literal 776 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 Y0JZg^jN>h5;s5{u07*qoM6N<$g1&yMZU6uP literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/addemall/textures/item/shovel.png b/common/src/main/resources/assets/addemall/textures/item/shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..4e665c94f8e738d512788b77bdaa0ea746f4240b GIT binary patch literal 872 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 literal 0 HcmV?d00001 diff --git a/definitions/bb projects/Block Tool/bar.xcf b/definitions/bb projects/Block Tool/bar.xcf new file mode 100644 index 0000000000000000000000000000000000000000..f0e4e6df7f20ebc910e206c5118c5a573d712440 GIT binary patch literal 5026 zcmaJ_YfxL~nLav480^Noo8I=%{$O<^K3CY(7~6Hh#us7i)NPt}n*Gt)ncb|DY%|&2&TKYaJ2BV>3}~P4 zNThW3a^TbX&i6j=?RnqxiXqh6)}GrFXwL1{2w`xQWBobZ;2Obt7RzG6$5*g&p2rbg zxW0;I&8)9y?iBYmtU0XBA()l}(YCf=WG|i>D*W>Eox!HPK|S~7*1avcfAy`(YAX3N z6WZF=6bj0r&Q_hCQS_yPuD!iRFt;mewCc`H1^f! z#%4ccmZJFjRgkBR`tHGt72o;hlHSoH}&ic>I|Isr}Dl zZ9Z^6e*D0pQ)k|NhdKRXeSJe+ZGA0Q^QgM6p{}~Nu_jbo&DN~$s$**`wU(NPb$?w` zx4XWkvDTDxHTQt7YpAb(@icSlJ6oNS;1rw%g5Y!tl2B0i-KwBZ6P*R3z!q4XmV$p2 z6z4YGSM}Y(0>}Xp3V;_R=hp9>Vh+}eyeQ>6B~_DU!NE!k+x$C&HTklEqFL2@8a1bR^a>~!LP{a3DvQJ= zNezdX{dJ=HoJ){d?Gu$0Y8u&M`h~V6DTqgdjX95AS*g3X5KSv2Dyuz|1=n+`Sht_q zU+a_$S;A^7aL#J~MnFxlDo=v_v@#*8=JE!8K7AWS!8NO~WZo4Naq7XuhLA-5M->b@lzJdzK{mePyQbZL7s@lBp zAj^beT~Kmn0uYcl6v2!tV^b3H{Y_N?f~H|9D!`hkdUT&JR05!k7$_kC3Z{NND8`TC zLQ0Uxn&+iTe@5R$P$fxoNwUZ9t9;3$!8uSamtyKj_292Tku+IzvD)VZc2r45<(t5t z#;Q*>87%>c==8iu8;7!iE&|Uk=txQf^mkD<2;sDQGVML5J5bpOb()RhL~1C%>hw1H zDg$mOoSGSpy1Nh zs<(xh&4{!(^?^HBYt*3c;8m4Wmn?GX5~!~Yx;ga|${C1rku6`8o*r=O3QEMPzjFs^ z-yulZDN~ZMRILPk7j(1gisB-i`p;A$tzB2_@wz=;kH_mR@f3T#rRB}OV0DqlTjIsC zdOt2L@jj2ho6AeR-eOOQmqI;mucw&yd}C8~;Jr{J6xiJu(fz(agMYU_Ma4OKP1ofTC+oLB6$ zR;0d_Rq>$4S5Z^7)5KLmV^?n(9eKZc_v+=-C(r-znUkp#&th#pdH;v!PoBPf_1#}F zldp8N$D)z;HZJ_AH5!Yyw)GiDBdx6Q3BEzY;kJljL|-niC~iERclK*YuYLF!TN+&nZ$IW}aXdJAS}iXcq*$>k6l`DB@yq zJdkKLCmwOBc&9xH-5)PzA>>qxVo@!^gZ2x|=@^<-6=l3%=oMC7(2C>!M5sW@QB&q) zN!$-LY%Q3T7UhAAUKHinY34*!MDwAG)z8o#7)++adW30;pD!Cwlf|DwaG&D0WUdj5bkbp)0FOX{v)8)9CjGQ<~!cI(Io5uh<&G_3f0uUv?q1Ee7;F{pJRPaL6@=3rk@gyO+KA2cx~6anMJqRa`NemyW)EFe`0 zMX)IMp&`p%X2KX^ltWhiPn?NL@j&ydwA2XM9G>v~2nA~%C`M2!VD~8+gKe$em^w5Q z4xOBcyl&)+)WPQx%!=MWqdv zzHhXk+&s&K`X4=&_@Nhx(7j2lT<%z@dSo0|SQ-4-5<@jt&kc;)h%Hf%vih zLxVtN4}N;M?*ucpSNH1ye{+l8v^x~`>tW767YiBs?xv8A^QPULf3>MG%l{y(`@^B# zO?peSKLC}zW0^^Ib9&P`?M3sNPqnneqL^#`E}fI9NVqWBCO# z6da8y4to|qXXEWuRD8k+4w1Cj;;`_Ks0P_T&P?soIDQEzz^weDYh=%8r)S;nAp^V?Hg|w~mCvBZLC%03e__ zJMZeBV9xXsd!8L`=Ist1#);|dPx$$*BYXCY5QiNp*sc6$HlRrF8Rks4h69J4`@)Mc z+97W=%`VW;jEonKe+Za^*Sgb6JZsP47j0xTIuw;Te#K!&5Hy$t`?e7yI!bIgfLQoN zQ=v!8hLGbI9b~j~I4ZOJijBsRqN%w@jLuQwpdo-1tp^TzG#er{(}R+|@MOpLqljwN z4*Ds+<78nbNCxe<6q9H}Xp;%kilECDY@U*HKBb5dw~1 zDC`I9fD2|)Nb9lPMuztsiOMuOi!F$dJa{Y>+!1t<}L{2aS~4B{JHBu}BrzG*M5`fT%^!D52C+)RQmjmxB!R zOeF(d1rN4te!<2Uq2Lt0n&-&jADcdUzk$DOte)SOmX&zj+seN=W{h_3aC=HU9=DtI z-1nB2dc2jC*>9F_b9+n5O0Ay9_+#iBw7HHP&mMkn?9|xso3EW388U|Zhu$0-8yY%( zd}wHRbZmHdbmVxaF*I`OwKs=>${zmo_>nWrkNS+Tu_qkqFj_*HAR`)5pA>T1wuYJU?+hdwlisXIyIO{n=Z| z8#l7Aum1G9HTCq#wdD0{o2Ii;iy!{{m(xGKe2KltU0Atz?GBe(eCOBi+`V(>HaBaz zy*zvS&MKFB^uaIw{ug)e{`9RoZ{4xJmHNntni zMOe5ulf=m+EKDv>UAgfu|5It@?YFLNnp!d8EAP+FV4uMyZ>%@I^0V7%+*2;Kaxa-= zr&5y}{%`Cw>|9Nzu{Zx8o6{WZWKFG3&seG1n>11@%-%FZ&4jRgZv4_L+#-bRsi!nK zivDdfnQi8EH4UEm0~u*BjUk=aZv+}dqnGMO*43}KJxlHZO+|Ihi&OV*FH9Pa6mP-AukNHjN>kR$*T8dHeFOFO+ J`mY-1zX4}fUxNSu literal 0 HcmV?d00001 diff --git a/definitions/bb projects/Block Tool/hoe.png b/definitions/bb projects/Block Tool/hoe.png new file mode 100644 index 0000000000000000000000000000000000000000..072fb5ecab62148fc2a5d561c7e8e65c43abca38 GIT binary patch literal 776 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 literal 0 HcmV?d00001 diff --git a/definitions/bb projects/Block Tool/multi_deactivated.png b/definitions/bb projects/Block Tool/multi_deactivated.png new file mode 100644 index 0000000000000000000000000000000000000000..68608f27bc6eb303b1e29fc655a6fcb2a68898d5 GIT binary patch literal 1470 zcmV;v1ws0WP)EX>4Tx04R}tkv&MmKpe$iTSd{TgBe5}f>bBFsEA{! zVi7EqwnD28CYOFelZGV4#ZhoAIQX$xb#QUk)xlK|1V2DrU7QqMq{ROvg%&X$9QWhh zy~o`s%9C)9@T$_we!cF3hvM&;2?2 zl$^-`pGX{Gx?vG-5YKK}I_G_2ffXf%_?&pspbHW|a$R=$jdQ_aKhG45baI|pAQlU4 zEVnT$8Y=M&aY#`$%J*knRyc2QR?Ah^yeEHQFsH4gxK48vF)SgD1VqTFqJ%OmglW}C zF_EPGsE2>p@h8Y7ldA+qjs;YpLUR1zfAG6oGe14$CIzEF=ZkHBj00V}K%-{c-^aGy zH~|9Bz?IhWSL(prC+W487CHh3wt{9a!eBF{Gk7p%=|;?Ar2>Ko5?um^9=s4a zNjw-e;ox~LhJ!0IY5|P8_g^w4udmCS|LDUz z2Ek;jaJ!kJ#?(_rp-_kc0JU8_gW7tpNTE=O<#IVx@~NusH{UIA4u_pYQN(LEgQZfb z1nTMOVMGLv$5SQCa)-ci9CrWO(J{u#k|gm$K3gVBO&xPN&(h@NB)GHZ3~X?4kp6rc zXS1`jjCy-}S$}^&78VvjL~y&^dYjEwTw7ZM5rIOX5MzwNz?H71v&v%tFzEICsiJU0 zLqiqL>8vNl7}8ng@p-qa3IGZxC#uWkDu4Ijdy_!KaO1{p{n62WadmaIP+McxAIir? zv)PQxU6%{=MzFh9;7x}BkUK6Izxe!9WqNv=0YD%SAexw%U}m!!8yg#NyWO5dBJtGk z_amRrV{vhj=e%AomX?;VwY3GO)3J3V%K(7&^>vJljA#M?oH5yTsAJ{X*>4$R4AE#5 zEiEmiC@WXTKKGdsLRSa&S*4(bGcq>otm0rR;v}48eBE$Oit~2 zk0THWkf1A^B>D#iu)V#FnVA`+QYk1e4(P3c_u=t)guT5zW;7b%_xrKD zyo|1{E&xD09tQvjnx;Y1G{j;Xs5V&7*=*V&=Wwux4wmsLzZQ50RCNO&=kFV-P^|7E&7)kW7vAGFiDcI9{Yvw?ChjiEJm%Zt<=}o z2aCl5p65Z~a2TRa&jAo0E&o_56gAc1a6na6@H~%HDg~?6iYil)YO1dY`{^A`W4v&3 znk|ivjzOqYcq9_f)V8)ZT)5;xCX+#RmBHTq`t9`Z8^6N9t2RaD4|e}PW(Dgr+`83` z{r!C;lS$mY`z3KaUq-E|VpUZY&CShdZ*NDbtR39{=0104EDXV5$cjaUZgvckAPC6i za;U4TgU{!K$8(KQI2^|4=qLc--n|E0b+xAAe@U4*e_ALS8XB7m<#HLxWb!}D9Tlzr Y0JZg^jN>h5;s5{u07*qoM6N<$g1&yMZU6uP literal 0 HcmV?d00001 diff --git a/definitions/bb projects/Block Tool/shovel.png b/definitions/bb projects/Block Tool/shovel.png new file mode 100644 index 0000000000000000000000000000000000000000..4e665c94f8e738d512788b77bdaa0ea746f4240b GIT binary patch literal 872 zcmV-u1DE`XP)EX>4Tx04R}tkv&MmKpe$iTSd{TgBe5}f>bBFsEA{! zVi7EqwnD28CYOFelZGV4#ZhoAIQX$xb#QUk)xlK|1V2DrU7QqMq{ROvg%&X$9QWhh zy~o`s%9C)9@T$_we!cF3hvM&;2?2 zl$^-`pGX{Gx?vG-5YKK}I_G_2ffXf%_?&pspbHW|a$R=$jdQ_aKhG45baI|pAQlU4 zEVnT$8Y=M&aY#`$%J*knRyc2QR?Ah^yeEHQFsH4gxK48vF)SgD1VqTFqJ%OmglW}C zF_EPGsE2>p@h8Y7ldA+qjs;YpLUR1zfAG6oGe14$CIzEF=ZkHBj00V}K%-{c-^aGy zH~|9Bz?IhWSL(prC+W487CHh3wt?#K}TFM$sK?s5-#oi|EF1=HHw)cD9=lvd@_XWHtWp(mBz%)%BnG|*|&*QPZpMYKu zrjl}@LTelGQviS^#b1jhg-_4s&2b!Oz2)|X2_vfU|K#ER4r|?g4AV)8cDw!V9UX4Z zP$R))7-meK6pLuqy95ANH7fOD|7r!U$bs^d(`MD6h&ilRVQw*UaH>xQq_k^+_#RLbh4?QT-JP??FC1qlI= ymWbin9pI%uW(z~~oc&V5xw|Z7bz1psSH&-&-+P5s-`tS^0000|#$em2(T{of{xK&Q+R4ABrceeU#3XtBxGKE`8u z6}&G@?(btfrai7N()w$PX0jD^a}-|3kRj>E`r2Bp2G+Yn@Wxu*S}Q9&|B~01F4}x#|1g zOx7K2On>poH=#RZTKFb(-+yFa-Nw#2=91LdIvSa*+X%mE&~1c{23;Y8Zo|=_t0lU2 zstdqEZ#}nzU}3Yax3Pn}?}5$dWx5M&=)O5+U|n@rdcq}1-If%xSyv4;1-fcjQlKkj z&{azcbd@4iC_0d%NY7Cu<8h@!3MKg<$`CNhV&q~L?~W~^drZnA781{s5;L}niu4Zw CQ`k@d literal 0 HcmV?d00001 diff --git a/fabric/src/main/java/de/griefed/addemall/AddEmAllFabric.java b/fabric/src/main/java/de/griefed/addemall/AddEmAllFabric.java index 40a8948..df3b63b 100644 --- a/fabric/src/main/java/de/griefed/addemall/AddEmAllFabric.java +++ b/fabric/src/main/java/de/griefed/addemall/AddEmAllFabric.java @@ -1,11 +1,13 @@ package de.griefed.addemall; import de.griefed.addemall.block.GeneratedModBlocks; +import de.griefed.addemall.client.BlockToolHud; +import de.griefed.addemall.client.BlockToolHudOverlay; import de.griefed.addemall.event.FabricKeyInputHandler; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; @@ -30,5 +32,6 @@ public void onInitialize() { FabricKeyInputHandler.register(); ItemTooltipCallback.EVENT.register(CommonClass::onItemTooltip); + HudRenderCallback.EVENT.register(new BlockToolHudOverlay()); } } diff --git a/fabric/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java b/fabric/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java new file mode 100644 index 0000000..b1256fb --- /dev/null +++ b/fabric/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java @@ -0,0 +1,20 @@ +package de.griefed.addemall.client; + +import com.mojang.blaze3d.vertex.PoseStack; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.minecraft.client.Minecraft; + +public class BlockToolHudOverlay extends BlockToolHud implements HudRenderCallback { + @Override + public void onHudRender(PoseStack matrixStack, float tickDelta) { + int x, y; + Minecraft instance = Minecraft.getInstance(); + int width = instance.getWindow().getGuiScaledWidth(); + int height = instance.getWindow().getGuiScaledHeight(); + + x = width / 2; + y = height; + + renderToolSettings(matrixStack, x, y); + } +} diff --git a/fabric/src/main/java/de/griefed/addemall/event/FabricKeyInputHandler.java b/fabric/src/main/java/de/griefed/addemall/event/FabricKeyInputHandler.java index dbf4a49..415b903 100644 --- a/fabric/src/main/java/de/griefed/addemall/event/FabricKeyInputHandler.java +++ b/fabric/src/main/java/de/griefed/addemall/event/FabricKeyInputHandler.java @@ -13,10 +13,10 @@ public class FabricKeyInputHandler { public static void registerKeyInputs() { ClientTickEvents.END_CLIENT_TICK.register(client -> { if (toolBehaviourKey.consumeClick()) { - KeyInputHandler.TOOL_BEHAVIOUR = !KeyInputHandler.TOOL_BEHAVIOUR; + KeyInputHandler.BLOCKTOOL_MULTI_ACTIVE = !KeyInputHandler.BLOCKTOOL_MULTI_ACTIVE; } if (toolShovelHoeKey.consumeClick()) { - KeyInputHandler.TOOL_SHOVEL_HOE = !KeyInputHandler.TOOL_SHOVEL_HOE; + KeyInputHandler.BLOCKTOOL_SHOVELMODE = !KeyInputHandler.BLOCKTOOL_SHOVELMODE; } }); } diff --git a/forge/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java b/forge/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java new file mode 100644 index 0000000..a33c94a --- /dev/null +++ b/forge/src/main/java/de/griefed/addemall/client/BlockToolHudOverlay.java @@ -0,0 +1,17 @@ +package de.griefed.addemall.client; + +import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; +import net.minecraftforge.client.gui.overlay.IGuiOverlay; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +public class BlockToolHudOverlay extends BlockToolHud { + public static final IGuiOverlay TOOL_SETTINGS = ((gui, poseStack, partialTick, width, height) -> { + int x = width / 2; + renderToolSettings(poseStack, x, height); + }); + + @SubscribeEvent + public static void registerGuiOverlays(RegisterGuiOverlaysEvent event) { + event.registerAboveAll("tool.settings", BlockToolHudOverlay.TOOL_SETTINGS); + } +} diff --git a/forge/src/main/java/de/griefed/addemall/event/ForgeKeyInputHandler.java b/forge/src/main/java/de/griefed/addemall/event/ForgeKeyInputHandler.java index ffe3dff..b05707e 100644 --- a/forge/src/main/java/de/griefed/addemall/event/ForgeKeyInputHandler.java +++ b/forge/src/main/java/de/griefed/addemall/event/ForgeKeyInputHandler.java @@ -19,10 +19,10 @@ public static class ClientForgeEvents { @SubscribeEvent public static void onKeyInput(InputEvent.Key event) { if (KeyInputHandler.toolBehaviourKey.consumeClick()) { - KeyInputHandler.TOOL_BEHAVIOUR = !KeyInputHandler.TOOL_BEHAVIOUR; + KeyInputHandler.BLOCKTOOL_MULTI_ACTIVE = !KeyInputHandler.BLOCKTOOL_MULTI_ACTIVE; } if (KeyInputHandler.toolShovelHoeKey.consumeClick()) { - KeyInputHandler.TOOL_SHOVEL_HOE = !KeyInputHandler.TOOL_SHOVEL_HOE; + KeyInputHandler.BLOCKTOOL_SHOVELMODE = !KeyInputHandler.BLOCKTOOL_SHOVELMODE; } } }