From 4a2634586af5c2478eced1926ef9efc6deda3c48 Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Wed, 11 Jul 2018 20:29:26 +0200 Subject: [PATCH] Native controller fullbright. #1860 --- .../refinedstorage/block/BlockController.java | 14 +++ .../block/BlockSecurityManager.java | 10 +- .../blockstates/controller.json | 20 ++- .../block/controller_nearly_on_off.json | 119 ++++++++++++++++++ .../models/block/cube_all_cutout.json | 81 ++++++++++++ .../models/block/security_manager.json | 1 - .../textures/blocks/controller/controller.png | Bin 0 -> 673 bytes .../blocks/controller/controller_off.png | Bin 0 -> 556 bytes .../blocks/controller/cutouts/nearly_off.png | Bin 0 -> 2010 bytes .../cutouts/nearly_off.png.mcmeta} | 0 .../controller/cutouts/nearly_off_gray.png | Bin 0 -> 645 bytes .../cutouts/nearly_off_gray.png.mcmeta} | 7 -- .../blocks/controller/cutouts/nearly_on.png | Bin 0 -> 2010 bytes .../cutouts/nearly_on.png.mcmeta} | 0 .../controller/cutouts/nearly_on_gray.png | Bin 0 -> 645 bytes .../cutouts/nearly_on_gray.png.mcmeta} | 0 .../blocks/controller/cutouts/off.png | Bin 0 -> 392 bytes .../cutouts/on.png} | Bin .../cutouts/on.png.mcmeta} | 7 -- .../textures/blocks/controller_nearly_off.png | Bin 3524 -> 0 bytes .../blocks/controller_nearly_off_glow.png | Bin 2023 -> 0 bytes .../textures/blocks/controller_nearly_on.png | Bin 3524 -> 0 bytes .../blocks/controller_nearly_on_glow.png | Bin 2023 -> 0 bytes .../controller_nearly_on_glow.png.mcmeta | 26 ---- .../textures/blocks/controller_off.png | Bin 1329 -> 0 bytes .../textures/blocks/controller_on.png | Bin 3737 -> 0 bytes 26 files changed, 233 insertions(+), 52 deletions(-) create mode 100644 src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json create mode 100644 src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/controller.png create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/controller_off.png create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_off.png rename src/main/resources/assets/refinedstorage/textures/blocks/{controller_nearly_off.png.mcmeta => controller/cutouts/nearly_off.png.mcmeta} (100%) create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_off_gray.png rename src/main/resources/assets/refinedstorage/textures/blocks/{controller_nearly_off_glow.png.mcmeta => controller/cutouts/nearly_off_gray.png.mcmeta} (63%) create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_on.png rename src/main/resources/assets/refinedstorage/textures/blocks/{controller_nearly_on.png.mcmeta => controller/cutouts/nearly_on.png.mcmeta} (100%) create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_on_gray.png rename src/main/resources/assets/refinedstorage/textures/blocks/{controller_on.png.mcmeta => controller/cutouts/nearly_on_gray.png.mcmeta} (100%) mode change 100755 => 100644 create mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/off.png rename src/main/resources/assets/refinedstorage/textures/blocks/{controller_on_glow.png => controller/cutouts/on.png} (100%) rename src/main/resources/assets/refinedstorage/textures/blocks/{controller_on_glow.png.mcmeta => controller/cutouts/on.png.mcmeta} (63%) delete mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off.png delete mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off_glow.png delete mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_on.png delete mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_on_glow.png delete mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_on_glow.png.mcmeta delete mode 100644 src/main/resources/assets/refinedstorage/textures/blocks/controller_off.png delete mode 100755 src/main/resources/assets/refinedstorage/textures/blocks/controller_on.png diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java index 3bb156a17..24eb1c666 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockController.java @@ -8,6 +8,7 @@ import com.raoulvdberge.refinedstorage.block.info.BlockInfoBuilder; import com.raoulvdberge.refinedstorage.item.itemblock.ItemBlockController; import com.raoulvdberge.refinedstorage.render.IModelRegistration; import com.raoulvdberge.refinedstorage.render.meshdefinition.ItemMeshDefinitionController; +import com.raoulvdberge.refinedstorage.render.model.baked.BakedModelFullbright; import com.raoulvdberge.refinedstorage.tile.TileController; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; @@ -19,6 +20,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.NonNullList; @@ -36,12 +38,24 @@ public class BlockController extends BlockNodeProxy { super(BlockInfoBuilder.forId("controller").tileEntity(TileController::new).create()); } + @Override + public BlockRenderLayer getBlockLayer() { + return BlockRenderLayer.CUTOUT; + } + @Override @SideOnly(Side.CLIENT) public void registerModels(IModelRegistration modelRegistration) { modelRegistration.setModelMeshDefinition(this, new ItemMeshDefinitionController()); modelRegistration.setStateMapper(this, new StateMap.Builder().ignore(TYPE).build()); + + modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelFullbright( + base, + RS.ID + ":blocks/controller/cutouts/nearly_off", + RS.ID + ":blocks/controller/cutouts/nearly_on", + RS.ID + ":blocks/controller/cutouts/on" + )); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java index e2cb10905..080fe18c1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/block/BlockSecurityManager.java @@ -33,11 +33,11 @@ public class BlockSecurityManager extends BlockNode { modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelFullbright( base, - "refinedstorage:blocks/security_manager/cutouts/top_connected", - "refinedstorage:blocks/security_manager/cutouts/front_connected", - "refinedstorage:blocks/security_manager/cutouts/left_connected", - "refinedstorage:blocks/security_manager/cutouts/back_connected", - "refinedstorage:blocks/security_manager/cutouts/right_connected" + RS.ID + ":blocks/security_manager/cutouts/top_connected", + RS.ID + ":blocks/security_manager/cutouts/front_connected", + RS.ID + ":blocks/security_manager/cutouts/left_connected", + RS.ID + ":blocks/security_manager/cutouts/back_connected", + RS.ID + ":blocks/security_manager/cutouts/right_connected" )); } diff --git a/src/main/resources/assets/refinedstorage/blockstates/controller.json b/src/main/resources/assets/refinedstorage/blockstates/controller.json index f28032431..f6da20ef9 100755 --- a/src/main/resources/assets/refinedstorage/blockstates/controller.json +++ b/src/main/resources/assets/refinedstorage/blockstates/controller.json @@ -1,10 +1,11 @@ { "forge_marker": 1, "defaults": { - "model": "cube_all", + "model": "refinedstorage:cube_all_cutout", "textures": { - "particle": "refinedstorage:blocks/controller_off", - "all": "refinedstorage:blocks/controller_off" + "particle": "refinedstorage:blocks/controller/controller_off", + "all": "refinedstorage:blocks/controller/controller_off", + "cutout": "refinedstorage:blocks/controller/cutouts/off" } }, "variants": { @@ -17,18 +18,25 @@ "off": { }, "nearly_off": { + "model": "refinedstorage:controller_nearly_on_off", "textures": { - "all": "refinedstorage:blocks/controller_nearly_off" + "all": "refinedstorage:blocks/controller/controller", + "cutout": "refinedstorage:blocks/controller/cutouts/nearly_off", + "cutout_gray": "refinedstorage:blocks/controller/cutouts/nearly_off_gray" } }, "nearly_on": { + "model": "refinedstorage:controller_nearly_on_off", "textures": { - "all": "refinedstorage:blocks/controller_nearly_on" + "all": "refinedstorage:blocks/controller/controller", + "cutout": "refinedstorage:blocks/controller/cutouts/nearly_on", + "cutout_gray": "refinedstorage:blocks/controller/cutouts/nearly_on_gray" } }, "on": { "textures": { - "all": "refinedstorage:blocks/controller_on" + "all": "refinedstorage:blocks/controller/controller", + "cutout": "refinedstorage:blocks/controller/cutouts/on" } } } diff --git a/src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json b/src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json new file mode 100644 index 000000000..99cab458b --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/controller_nearly_on_off.json @@ -0,0 +1,119 @@ +{ + "parent": "block/cube", + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "texture": "#all", + "cullface": "down" + }, + "up": { + "texture": "#all", + "cullface": "up" + }, + "north": { + "texture": "#all", + "cullface": "north" + }, + "south": { + "texture": "#all", + "cullface": "south" + }, + "west": { + "texture": "#all", + "cullface": "west" + }, + "east": { + "texture": "#all", + "cullface": "east" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "up": { + "texture": "#cutout", + "cullface": "up" + }, + "down": { + "texture": "#cutout", + "cullface": "down" + }, + "north": { + "texture": "#cutout", + "cullface": "north" + }, + "south": { + "texture": "#cutout", + "cullface": "south" + }, + "west": { + "texture": "#cutout", + "cullface": "west" + }, + "east": { + "texture": "#cutout", + "cullface": "east" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "up": { + "texture": "#cutout_gray", + "cullface": "up" + }, + "down": { + "texture": "#cutout_gray", + "cullface": "down" + }, + "north": { + "texture": "#cutout_gray", + "cullface": "north" + }, + "south": { + "texture": "#cutout_gray", + "cullface": "south" + }, + "west": { + "texture": "#cutout_gray", + "cullface": "west" + }, + "east": { + "texture": "#cutout_gray", + "cullface": "east" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json b/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json new file mode 100644 index 000000000..913f1de69 --- /dev/null +++ b/src/main/resources/assets/refinedstorage/models/block/cube_all_cutout.json @@ -0,0 +1,81 @@ +{ + "parent": "block/cube", + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "texture": "#all", + "cullface": "down" + }, + "up": { + "texture": "#all", + "cullface": "up" + }, + "north": { + "texture": "#all", + "cullface": "north" + }, + "south": { + "texture": "#all", + "cullface": "south" + }, + "west": { + "texture": "#all", + "cullface": "west" + }, + "east": { + "texture": "#all", + "cullface": "east" + } + } + }, + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "up": { + "texture": "#cutout", + "cullface": "up" + }, + "down": { + "texture": "#cutout", + "cullface": "down" + }, + "north": { + "texture": "#cutout", + "cullface": "north" + }, + "south": { + "texture": "#cutout", + "cullface": "south" + }, + "west": { + "texture": "#cutout", + "cullface": "west" + }, + "east": { + "texture": "#cutout", + "cullface": "east" + } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/refinedstorage/models/block/security_manager.json b/src/main/resources/assets/refinedstorage/models/block/security_manager.json index a71b69487..694697d59 100644 --- a/src/main/resources/assets/refinedstorage/models/block/security_manager.json +++ b/src/main/resources/assets/refinedstorage/models/block/security_manager.json @@ -50,7 +50,6 @@ 16, 16 ], - "shade": false, "faces": { "up": { "texture": "#cutout_up", diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller/controller.png b/src/main/resources/assets/refinedstorage/textures/blocks/controller/controller.png new file mode 100644 index 0000000000000000000000000000000000000000..211dbf79271c100b6b59e295f4981b40fcc1cda0 GIT binary patch literal 673 zcmV;S0$%-zP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;2FkAZe8V00I$7L_t(IPhC^ViYh@6?5_~fQ4w)Fh43h8tj(P$Lma2WA;T#(6R zkW41!9TAB{5R1hS37Pw!J5BoSqk zK*_gQECPOK3!P5qO+Xo^(@6+iE|(-I{I5WP3ckO;-$Nt|uZWU(fCFUjN&yd0`p3tI zC@>n0C>D!SkbcoO z!S4*V+pRD%iBLXJQ>T1Jf@EJ`U*a2DTH_%0`#tKq(^!pFIdvwpA|v-aXfm1P8*hP% z#ma1fw?G9XQJ`IETP9blRf+UWxm-pzo0VJOZy*HxF=n$Fmdhm;iv?Dzm3W>11$!M1 zhq9*GSa~!W$)1E7uYydx4bFpvY>R95NSRy{%vCu=I-SNJ#~1@cT4f*E00000NkvXX Hu0mjfg)bLd literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller/controller_off.png b/src/main/resources/assets/refinedstorage/textures/blocks/controller/controller_off.png new file mode 100644 index 0000000000000000000000000000000000000000..aeabbb031dc967e24f3024f45e1d6ca26b95ac04 GIT binary patch literal 556 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off_glow.png.mcmeta b/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_off_gray.png.mcmeta similarity index 63% rename from src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off_glow.png.mcmeta rename to src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_off_gray.png.mcmeta index cf47bbbf2..852b87796 100644 --- a/src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off_glow.png.mcmeta +++ b/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_off_gray.png.mcmeta @@ -1,11 +1,4 @@ { - "ctm": { - "ctm_version": 1, - "layer": "CUTOUT", - "extra": { - "light": 15 - } - }, "animation": { "frametime": 1, "frames": [ diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_on.png b/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_on.png new file mode 100644 index 0000000000000000000000000000000000000000..a840cfefd076a3c9255791bdbf32f52a195500c0 GIT binary patch literal 2010 zcmdT_=|3Cj7LGO}Vhh!ZeIjFLg4VvomQ2MOv4z^ByFnrZjazG#O9fSHF_zlbX{*$h z+G?p%M2aa@#!iuFwaQIrKFqy;!u@cbbKdje{hiX)Sm0-NK`;#`i3CHxJs_UwMw9H_a3avtM6+9^7FgpnCI8URf6U+ zs!PCa_&s!qGjKCj{O&l#Ki1A_>E{zC9CsQrP(&GjtWT6Uz9tcOIq0W3tDj>CnqkYf zV|`~&>>i$rK`NSIZa)^Nms=nGT2~Kc+)JSocGu2lfBP8Wp~4E7dKeHZK^y69Lv`Dc z3^67QEEfKw!!$#BQAjO2b+kPfSG)Lj6-5-h-3FAWv(SCXfCpoCdEHWVusI#)DaMraPzff^8AXTMLM)ZU>w*tTCNweC`MClmR)f=_=_ocNBe$4a4w^|qb68hAce1UZl%Dpo7DUp9m$o8v zY%TAUUMiU)YAAsp4TwQ@ra|d{4`1F}pw;7$5{W&gUs;{21`V6LbS8hY;&n1AqE(h0 z?WK=%2+@bu%tK{#q;SM1HRoiW>dLfg z?T)}rIqT=VXy&Q|e8a4v3F)E4NDCVGezf>F+#pJ}Mg(jX8^O8lfR=GuS)YbG)3}bg zkp7_7PY(;f;veB**wj4cApsF12Cwl*%!FGww2R_szvf z)Kl~aLvyJ0h^*AT=w0sb#ETAhz~*ry-{MTZR-lc=61|5ce2LxyHq0FMLZ48n4DiiX za8K7Isn}(QsG=E@a0c?Xy{tVPag?v8s_j`Ghxz@!wiXMwYF1L?cqxhzNB94B1Wjg5 z;92W8jMNP%W7V#~^kTW3Xxj#cLdd*FIp%-7E@i03JyUvRigvb~-RukaVC$C!Biu07Is?WvYx>QwBNy-F^=U3|#ETq0-qdZXW)B(@L z;V*u9GxpTENd&I(NLxd|KCd5@dM$pIaVF>GkkdP$r%e-bqza@X>0v!6lIU|78U(4; zPOGxdZk@AlzhWB`EoqOKjP^%l7Dlx!PM|n);H0wwamrsnT{hF>RPUUSt35vb{er(> zG_DxuG;R=u1v!t>KTE)=tPWb)FPahgUg3Ggy*r}`QKurPS`DbaZ4Xb7;0#+%C3Jxp zBSDi2TjxF{(;*|Kj7a$H1$>pXF6&j8s(Q8!PnxV#bksZ0``8d~XB9d3gNFNh!k|ir zd2Y2Ke`Xe2i0Q^%mwSjM4CIHd`X$@nWY^g1VR6}+pt?~wk>|mOPGb!(2MA&Lmh(IH z?OOd|u(NphB_VCt_0g%CW~{+O7V;-6YQ0ot=$c)?AOlJkqmWIF`tu4>=Y=^7qN8dJ zbnp*IiD4oB_S#>D`#%7AkaVPEBb~|353(8x2xIPyeZAPDA88TU%cR}VIks$3T{2n1 zp3XS1>DVPV7kl(wDEG=4+V8G>uUaRpBbWGMGdFj#{36p{D)i46xo6ZpDjCnii==Nr z2LyuOID&ibnKO%Id?_aP4^P*@$5!N&-Ud&U>c zv7h@-A}f&3S>O>_%)r2R7=#&*=dVZs3QCr^MwA5SrtySi8W)9do?=SvSV zyRAC>w(Pg?v8Ig)IuhJNo|0L2{k2hE`{$o~&dtved%UE-zyIlnvWoip_~$R*=FUBS z{CKIIt?k<4TQLbcV)RZ&_}R?0dw#oU;^U7y*2&AsU9-&flY2I|-bmjh*G}db>#_I$ zezB}yzy7uGo%{Fe?M`m7jEswmoA&U0+u5XhxibBhXQqGq^JmY!zwh4V#rn_Y=K1{o z_q*S>=bLqZ+}2)c^K8fG8U3g4ub96%vc`13jo%z!q#!Q5@x8g$e#Y_ScfSw5hltC3 z`mlUx8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller_on.png.mcmeta b/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_on_gray.png.mcmeta old mode 100755 new mode 100644 similarity index 100% rename from src/main/resources/assets/refinedstorage/textures/blocks/controller_on.png.mcmeta rename to src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/nearly_on_gray.png.mcmeta diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/off.png b/src/main/resources/assets/refinedstorage/textures/blocks/controller/cutouts/off.png new file mode 100644 index 0000000000000000000000000000000000000000..4267d220b3464aac7c955143167a3d78f0cf646a GIT binary patch literal 392 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 V;yGGr!v9AAz>erlsIvAx`)^83CEfr4 diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off_glow.png b/src/main/resources/assets/refinedstorage/textures/blocks/controller_nearly_off_glow.png deleted file mode 100644 index ab07cf604b00d98baca1c93a1930943954901621..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2023 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 diff --git a/src/main/resources/assets/refinedstorage/textures/blocks/controller_on.png b/src/main/resources/assets/refinedstorage/textures/blocks/controller_on.png deleted file mode 100755 index 4c383838676013e7b68274bf302bde5212f200c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3737 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 OqP@)?>pND&n12C|_^2%a