From cc08eced48744dcf0e61cb051f782d100ec62218 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Sun, 19 Dec 2021 13:04:19 +0000 Subject: [PATCH] Fix some problems with pocket computer model properties - We were setting state twice, rather than state and coloured. - Fabric forces us to use the clamped item property getter, which doesn't work with our computer state, as it takes a value [0, 2]. - Fixup new pocket computer textures to match original ones. Co-authored-by: Jummit --- .../proxy/ComputerCraftProxyClient.java | 25 ++++++++++++++++-- .../item/pocket_computer_advanced.png | Bin 283 -> 668 bytes .../textures/item/pocket_computer_blink.png | Bin 249 -> 624 bytes .../textures/item/pocket_computer_colour.png | Bin 196 -> 614 bytes .../textures/item/pocket_computer_frame.png | Bin 125 -> 548 bytes .../textures/item/pocket_computer_light.png | Bin 246 -> 484 bytes .../textures/item/pocket_computer_normal.png | Bin 260 -> 656 bytes .../textures/item/pocket_computer_on.png | Bin 245 -> 583 bytes 8 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java index ca7f86112..539523975 100644 --- a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java +++ b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java @@ -40,11 +40,16 @@ import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; +import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.item.ClampedItemPropertyFunction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.function.Supplier; @@ -101,7 +106,7 @@ public final class ComputerCraftProxyClient implements ClientModInitializer .ordinal(), () -> Registry.ModItems.POCKET_COMPUTER_NORMAL, () -> Registry.ModItems.POCKET_COMPUTER_ADVANCED ); - registerItemProperty( "state", + registerItemProperty( "coloured", ( stack, world, player, integer ) -> IColouredItem.getColourBasic( stack ) != -1 ? 1 : 0, () -> Registry.ModItems.POCKET_COMPUTER_NORMAL, () -> Registry.ModItems.POCKET_COMPUTER_ADVANCED ); @@ -132,9 +137,25 @@ public final class ComputerCraftProxyClient implements ClientModInitializer private static void registerItemProperty( String name, ClampedItemPropertyFunction getter, Supplier... items ) { ResourceLocation id = new ResourceLocation( ComputerCraft.MOD_ID, name ); + // Terrible hack, but some of our properties return values greater than 1, so we don't want to clamp. + var unclampedGetter = new ClampedItemPropertyFunction() + { + @Override + @Deprecated + public float call( @NotNull ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i ) + { + return getter.unclampedCall( itemStack, clientLevel, livingEntity, i ); + } + + @Override + public float unclampedCall( ItemStack itemStack, @Nullable ClientLevel clientLevel, @Nullable LivingEntity livingEntity, int i ) + { + return getter.unclampedCall( itemStack, clientLevel, livingEntity, i ); + } + }; for( Supplier item : items ) { - FabricModelPredicateProviderRegistry.register( item.get(), id, getter ); + FabricModelPredicateProviderRegistry.register( item.get(), id, unclampedGetter ); } } } diff --git a/src/main/resources/assets/computercraft/textures/item/pocket_computer_advanced.png b/src/main/resources/assets/computercraft/textures/item/pocket_computer_advanced.png index 96015e297ece65d4f96b151510b7429275f6701e..c84346a2cdff62ecdb9819a9ba95fd4afd6b6c11 100644 GIT binary patch delta 644 zcmbQuG>3J9ay?^yrn7TEW^ytEgT}g;&`(xnk`xvIA_&|_9Shw zxy;jFz4X4iG3g~7=?d+uDblC|Had$XX`m^qYLUnFK@Bkaii^@yK&yp|0>&k z!i_ld(=Y7h*}MJ1&Zv{CcAb04e8lW&XI{d8hPKrD^SAV`Go^o@`l7jvfq{XuzQ7~0 zn1O*?2!t6g-L3n>z`$_X)5S5w!aq4dBI7{EyN3DIQ~x&~`S)RS!_o-5e~gzE>^jcA zs}XnQ=VD*>^U~bw5w^>gD{+aro3SME3Nd7stxh;rAn9>(UElTpiERhA7$|19SxU$6 zShU*Fuwe#AV=HHv_yX@F;|WRP3#4nkiXpl0cX#!>g-)FIQdKi=2d`G5E6!p3^<8SF*ZgBda} zvmWRTE_riI^WGPwH4M3SZGpL46ZbO*H0?;cWY{x9UutW^S))^xicx-s7jpMcn)x{5 z)0#`hD_Lhuw|{xy%5mcg&Wh)pX?~gfo3a-$L@lme`?E~Kes$UPZ?*#aj{miBR5j{n z3{eu?H+_CIqw8WX6|IRpX^ITXbN62geX5^w-66Aht{t^y06!^LpjX6Q9Mv Pz`)??>gTe~DWM4f2Q+f> diff --git a/src/main/resources/assets/computercraft/textures/item/pocket_computer_blink.png b/src/main/resources/assets/computercraft/textures/item/pocket_computer_blink.png index 2474f6baf45049dc4f9d650e26f2036f73e7cfbf..53d89614ea5b3503b739af1ab44768fad233dae3 100644 GIT binary patch delta 600 zcmey#_g;&`(xnk`xvIA_&|_9Shw zxy;jFz4X4iG3g~7=?d+uDblC|Had$XX`m^qYLUnFK@Bkaii^@yK&yp|0>&k z!i_ld(=Y7h*}MJ1&Zv{CcAb04e8lW&XI{d8hPKrD^SAV`Go^o@`l7jvfq{XuzQ7~0 zn1O*?2!t6g-L3n>z`(HF)5S5w!~1PWG+%=PkMuF_1Cl%bcUmyZIBw?WnV5UUeUag( z?C9NrUL_xQ*xDc45iv`1Y2W6D?kQ}mBwAwrUr9&A;Xx_nc zjw<1DxihtPYZs({RZvn>Vl$ZaqU@maxt*HD-VQDuhEcxf=07hlJlpJlrg^&Pnu4>< f%&he`{Ble37iQY^{8-Guz`)??>gTe~DWM4f;`Cnt diff --git a/src/main/resources/assets/computercraft/textures/item/pocket_computer_colour.png b/src/main/resources/assets/computercraft/textures/item/pocket_computer_colour.png index 426015e6cb339d224505e3f1d31a8c01ddcd7990..dd3c350ebdb1d283de50167321c528636b1deb59 100644 GIT binary patch delta 590 zcmX@Y_>5(Oay?^yrn7TEW^ytEgT}g;&`(xnk`xvIA_&|_9Shw zxy;jFz4X4iG3g~7=?d+uDblC|Had$XX`m^qYLUnFK@Bkaii^@yK&yp|0>&k z!i_ld(=Y7h*}MJ1&Zv{CcAb04e8lW&XI{d8hPKrD^SAV`Go^o@`l7jvfq{XuzQ7~0 zn1O*?2!t6g-L3n>z`!uq)5S5w!vARSZQcV499NbxzfgO(zeRgTW8Q@>PRFMa;ZaEJu1tr yPPzrnJ;4~1E!iN~u(@H?`6XpyX;Z3>%qhDO;^JR)`7Hwj1B0ilpUXO@geCxjO%X)^ delta 169 zcmaFHa)fb$aymT7NUE{pCnh<#|TGW~pp>36SyY*vOAftbVB`;|^!WEE5ryqfV=s^YS!X)f=% b&kW~8ty3oc`enetz`)??>gTe~DWM4fUnWPU diff --git a/src/main/resources/assets/computercraft/textures/item/pocket_computer_frame.png b/src/main/resources/assets/computercraft/textures/item/pocket_computer_frame.png index 1f27b7ea9208d2e47715ce0b1b5f5d5b156eb4c2..ae5a70a12f6147bc24c7b52e0d919e1cc6b3e33c 100644 GIT binary patch delta 523 zcmbv_{`kzC z(`O_LT8*o&<;k|^tV?ipcD#S-Q`h;=UDM-sNiJ1hcl%k6O1;psmp^tbcfGp1;nmfe z_`?^c8sx}E-D+K4a#@SxJV(1Z*Rn^l5AAGa{W;`0`y-1S9%e7i7Oe}Mv+6^8lD61f z=IO6qdSBfbcD(A=DXxBw-M^ zVgB#=Y;}FP*neuOI)zK>J-W+%t}H4sU83e{{^WE((9ZwoFZ=oVh3u+szVPjh#e3%m zH(Td#dR!xKeeOKxj`f^&Ga*1$Cj9x7hBu(e}^XIPd6xmF+&^ zMx6QS7xwb(-F{(b)X7!5&b?$lV)nE%FX2B!TWbCJTl&|T(!WoA(OkyBz`$8w;1OBO zz`!j8!i<;h*8O2%V2Ji~aSXBWPfl1MV6f01Y-(zX*!%I{-)f%c#(@%TJd4>3c$y3j%;MW{)O_6wH7zMe&Hfcryn2*M fOhul%F+2~Ga-4Fvv4nwvfx*+&kJV+JQ$iB}fSK+9 delta 96 zcmZ3&QaeF8ih;2>$lZxy-8q?;3=9nBo-U3d7QM*{3j_=naZ5-^{X4$=;h&$MC8|2E z^@Q^p&f2&#RVhqZ&mil-3dRsa2G$9a#Wl|LGN?BSHp|_A!^6P9z~JfX=d#Wzp$Pz) C03w0_ diff --git a/src/main/resources/assets/computercraft/textures/item/pocket_computer_light.png b/src/main/resources/assets/computercraft/textures/item/pocket_computer_light.png index 52f186fc7ba3a286d8080d4a3d67f2ac4f48ed95..8414ee5ee3db7ac2a7aacd8936fb590a7367332b 100644 GIT binary patch delta 442 zcmeyy_=I_aay?^yrn7TEW^ytEgT}g;&`(xnk`xvIA_&|_9Shw zxy;jFz4X4iG3g~7=?d+uDblC|Had$XX`m^qYLUnFK@Bkaii^@yK&yp|0>&k z!i_ld(=Y7h*}MJ1&Zv{CcAb04e8lW&XI{d8hPKrD^SAV`Go^o@`l7jvfq{W@qLYY$ zw5N+>h=qT0f&}YgMFT0OFWim)103w7JvVYPT&`gMxt{;Rb_NCp22WQ%mvv4FO#nXq B%0vJF delta 200 zcmaFD{EcyfvNQu@age(c!@6@aFBupZSkfJR9T^xl_H+M9WSu;RQKFu`#M9T6{XP#D zuM+oOPu3$03=EPbt`Q}{`DrEPiAAXl1&Nt?C3<IO=zXDqsOslqUj?a%-J^3KXU!f%;k+Af@D-SI)eJmK-N z-Uw60eU5iQ?7#J8lUHx3vIVCg! E0DZkc;%gW-zfr)H5nq2>duV~SLUQ# zyJ7zC`D}H4x!8Ydsyc;B>OH#4eXcAjFiZ+cuKZ+-4O=Z^UgjKV)ZS6%+n|Ke%Wv-KRd(FJv(m$%sNxY72{-8k>)f0gY% z;YOVK=@<6$?A?B0XVl46yUx92K4SK?GcVykLtAS7`CIzenbN;cebHRTz`(#+U*Hj0 z%)r1c1j3A$?$-TbU|=}z>Eak-;eRyfH1A;ro~5DX4~{T+oVDncXyiWZB9pLwOJsv^ zaDe31Nk3TvzXo_~{Iju_>y!MwJvNIm>NSg{qKjUuz$fvf4|~76`U@s}F228;f49E( zx!_6By)DnK7n+>1+tH$OqkJigMs=adb*W&1Gk*l;c!oR1z7hPlW`Ww@DmLe)nd&_0 z3QJS^OKs<>USV)vdz1N`W%0SC63NFLdDskp%y6I7)?n7ee>`fo_-TpB*XKlSF1)=> pbx-HLzN{%h>Csl3-E^Pv3aNTroaq=5!N9=4;OXk;vd$@?2>>2M9cusp delta 233 zcmbQh+QKwJxt@U~-O<;Pfnj4`&F{d;3=9mrJzX3_EP9VlKFHf_Ai%;tMeffc2JeM3 zI$jT)4LjJsq&hLz#fm;D?YJSK+O_D-`*Yi?Ur*)z?Jli&y|uQrV%eE9sSA^4&fz-JZeJ+y_%V+j z>%Eg;&`(xnk`xvIA_&|_9Shw zxy;jFz4X4iG3g~7=?d+uDblC|Had$XX`m^qYLUnFK@Bkaii^@yK&yp|0>&k z!i_ld(=Y7h*}MJ1&Zv{CcAb04e8lW&XI{d8hPKrD^SAV`Go^o@`l7jvfq{W@qLWB{ zou`Xqh=u>rU`M_K3LMF&?H1%e_^Y zgZa<5|MeF4D<}mTr$^xWnf?k@^o