From d8565f326061d836a0bc074fc5ae841ccc7bf158 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 4 Dec 2023 14:49:24 +0000 Subject: [PATCH] Added etched clouds and cloud chests --- assets/models/cloud_chest.bbmodel | 1 + assets/models/cloud_chest.java | 32 +++ assets/models/cloud_chest.png | Bin 0 -> 1278 bytes .../unicopia/block/UBlockEntities.java | 3 + .../unicopia/block/UBlocks.java | 17 +- .../unicopia/block/cloud/CloudBedBlock.java | 2 +- .../unicopia/block/cloud/CloudBlock.java | 6 +- .../unicopia/block/cloud/CloudChestBlock.java | 159 +++++++++++ .../unicopia/block/cloud/CloudLike.java | 5 + .../block/cloud/CloudStairsBlock.java | 2 +- .../unicopia/client/URenderers.java | 9 + .../entity/CloudChestBlockEntityRenderer.java | 125 ++++++++ .../unicopia/blockstates/cloud_chest.json | 5 + .../blockstates/compacted_etched_cloud.json | 268 ++++++++++++++++++ .../unicopia/blockstates/etched_cloud.json | 5 + .../blockstates/etched_cloud_slab.json | 7 + .../blockstates/etched_cloud_stairs.json | 209 ++++++++++++++ .../resources/assets/unicopia/lang/en_us.json | 6 + .../unicopia/models/block/cloud_chest.json | 5 + .../unicopia/models/block/etched_cloud.json | 6 + .../models/block/etched_cloud_slab.json | 8 + .../models/block/etched_cloud_slab_top.json | 8 + .../models/block/etched_cloud_stairs.json | 8 + .../block/etched_cloud_stairs_inner.json | 8 + .../block/etched_cloud_stairs_outer.json | 8 + .../flattened_etched_cloud_corner_full.json | 6 + .../flattened_etched_cloud_corner_x.json | 6 + .../flattened_etched_cloud_corner_xy.json | 6 + .../flattened_etched_cloud_corner_xyz.json | 6 + .../flattened_etched_cloud_corner_xz.json | 6 + .../flattened_etched_cloud_corner_y.json | 6 + .../flattened_etched_cloud_corner_yz.json | 6 + .../flattened_etched_cloud_corner_z.json | 6 + .../unicopia/models/item/cloud_chest.json | 6 + .../unicopia/models/item/etched_cloud.json | 3 + .../models/item/etched_cloud_slab.json | 3 + .../models/item/etched_cloud_stairs.json | 3 + .../unicopia/textures/block/etched_cloud.png | Bin 0 -> 7296 bytes .../unicopia/textures/entity/chest/cloud.png | Bin 0 -> 5746 bytes .../textures/entity/chest/cloud_left.png | Bin 0 -> 6032 bytes .../textures/entity/chest/cloud_right.png | Bin 0 -> 6129 bytes .../blocks/carving/etched_cloud_cutting.json | 6 + .../carving/etched_cloud_slab_cutting.json | 6 + .../carving/etched_cloud_stairs_cutting.json | 6 + .../unicopia/recipes/blocks/cloud_chest.json | 14 + .../unicopia/tags/blocks/cloud_slabs.json | 1 + .../unicopia/tags/blocks/cloud_stairs.json | 1 + .../data/unicopia/tags/blocks/clouds.json | 1 + .../data/unicopia/tags/items/cloud_slabs.json | 1 + .../unicopia/tags/items/cloud_stairs.json | 1 + .../data/unicopia/tags/items/clouds.json | 1 + .../unicopia/tags/items/groups/pegasus.json | 4 + 52 files changed, 1005 insertions(+), 12 deletions(-) create mode 100644 assets/models/cloud_chest.bbmodel create mode 100644 assets/models/cloud_chest.java create mode 100644 assets/models/cloud_chest.png create mode 100644 src/main/java/com/minelittlepony/unicopia/block/cloud/CloudChestBlock.java create mode 100644 src/main/java/com/minelittlepony/unicopia/block/cloud/CloudLike.java create mode 100644 src/main/java/com/minelittlepony/unicopia/client/render/entity/CloudChestBlockEntityRenderer.java create mode 100644 src/main/resources/assets/unicopia/blockstates/cloud_chest.json create mode 100644 src/main/resources/assets/unicopia/blockstates/compacted_etched_cloud.json create mode 100644 src/main/resources/assets/unicopia/blockstates/etched_cloud.json create mode 100644 src/main/resources/assets/unicopia/blockstates/etched_cloud_slab.json create mode 100644 src/main/resources/assets/unicopia/blockstates/etched_cloud_stairs.json create mode 100644 src/main/resources/assets/unicopia/models/block/cloud_chest.json create mode 100644 src/main/resources/assets/unicopia/models/block/etched_cloud.json create mode 100644 src/main/resources/assets/unicopia/models/block/etched_cloud_slab.json create mode 100644 src/main/resources/assets/unicopia/models/block/etched_cloud_slab_top.json create mode 100644 src/main/resources/assets/unicopia/models/block/etched_cloud_stairs.json create mode 100644 src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_inner.json create mode 100644 src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_outer.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_full.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_x.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xy.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xyz.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xz.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_y.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_yz.json create mode 100644 src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_z.json create mode 100644 src/main/resources/assets/unicopia/models/item/cloud_chest.json create mode 100644 src/main/resources/assets/unicopia/models/item/etched_cloud.json create mode 100644 src/main/resources/assets/unicopia/models/item/etched_cloud_slab.json create mode 100644 src/main/resources/assets/unicopia/models/item/etched_cloud_stairs.json create mode 100644 src/main/resources/assets/unicopia/textures/block/etched_cloud.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/chest/cloud.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/chest/cloud_left.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/chest/cloud_right.png create mode 100644 src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_cutting.json create mode 100644 src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_slab_cutting.json create mode 100644 src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_stairs_cutting.json create mode 100644 src/main/resources/data/unicopia/recipes/blocks/cloud_chest.json diff --git a/assets/models/cloud_chest.bbmodel b/assets/models/cloud_chest.bbmodel new file mode 100644 index 00000000..bdafb853 --- /dev/null +++ b/assets/models/cloud_chest.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.5","model_format":"modded_entity","box_uv":true},"name":"cloud_chest","model_identifier":"","modded_entity_version":"Fabric 1.17+","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"unhandled_root_fields":{},"resolution":{"width":64,"height":64},"elements":[{"name":"chest","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-7,0,-7],"to":[7,10,7],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[0,19],"faces":{"north":{"uv":[14,33,28,43],"texture":0},"east":{"uv":[0,33,14,43],"texture":0},"south":{"uv":[42,33,56,43],"texture":0},"west":{"uv":[28,33,42,43],"texture":0},"up":{"uv":[28,33,14,19],"texture":0},"down":{"uv":[42,19,28,33],"texture":0}},"type":"cube","uuid":"980d20de-fc20-da45-2218-55df01317a6a"},{"name":"lock","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,6,6.800000000000001],"to":[1,10,7.800000000000001],"autouv":0,"color":0,"origin":[0,0,-0.20000000000000004],"faces":{"north":{"uv":[1,1,3,5],"texture":0},"east":{"uv":[0,1,1,5],"texture":0},"south":{"uv":[4,1,6,5],"texture":0},"west":{"uv":[3,1,4,5],"texture":0},"up":{"uv":[3,1,1,0],"texture":0},"down":{"uv":[5,0,3,1],"texture":0}},"type":"cube","uuid":"daa8bcc6-6f9e-aa77-77d6-a2132c7efdb0"},{"name":"lock","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,7,7],"to":[1,9,8],"autouv":0,"color":0,"origin":[0,0,0],"faces":{"north":{"uv":[1,1,3,3],"texture":0},"east":{"uv":[0,1,1,3],"texture":0},"south":{"uv":[4,1,6,3],"texture":0},"west":{"uv":[3,1,4,3],"texture":0},"up":{"uv":[3,1,1,0],"texture":0},"down":{"uv":[5,0,3,1],"texture":0}},"type":"cube","uuid":"3761dece-0deb-4f9f-03b8-7179e5d4230d"},{"name":"lock","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[2,7,6.8],"to":[4,11,7.8],"autouv":0,"color":0,"rotation":[0,0,90],"origin":[1.9999999999999998,7,7.300000000000001],"faces":{"north":{"uv":[1,1,3,5],"texture":0},"east":{"uv":[0,1,1,5],"texture":0},"south":{"uv":[4,1,6,5],"texture":0},"west":{"uv":[3,1,4,5],"texture":0},"up":{"uv":[3,1,1,0],"texture":0},"down":{"uv":[5,0,3,1],"texture":0}},"type":"cube","uuid":"2d515302-358d-138a-85df-aec20530862a"},{"name":"lid","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-7,8,-7],"to":[7,13,7],"autouv":0,"color":0,"inflate":0.3,"origin":[0,0,0],"faces":{"north":{"uv":[14,14,28,19],"texture":0},"east":{"uv":[0,14,14,19],"texture":0},"south":{"uv":[42,14,56,19],"texture":0},"west":{"uv":[28,14,42,19],"texture":0},"up":{"uv":[28,14,14,0],"texture":0},"down":{"uv":[42,0,28,14],"texture":0}},"type":"cube","uuid":"07486e85-57dd-1353-ef68-fd182245f73d"}],"outliner":["980d20de-fc20-da45-2218-55df01317a6a",{"name":"lid","origin":[0,8,-7],"rotation":[-62.5,0,0],"color":0,"uuid":"426e7ac7-0b4a-e1da-2265-dd376403fc38","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["daa8bcc6-6f9e-aa77-77d6-a2132c7efdb0","3761dece-0deb-4f9f-03b8-7179e5d4230d","2d515302-358d-138a-85df-aec20530862a","07486e85-57dd-1353-ef68-fd182245f73d"]}],"textures":[{"path":"/home/sollace/Documents/GitRepos/minecraft_mods/Unicopia/assets/models/cloud_chest.png","name":"cloud_chest.png","folder":"","namespace":"","id":"0","particle":false,"render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"2a8b98ee-b258-1d91-ab10-ed99b792b5ed","relative_path":"../cloud_chest.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAABTZJREFUeF7tWsuOG0UUvWbGscfjeDAzhAkwRApRUCQWkAhFSrJjwxo+gA1/gPgClog/YMOSBVmzYUeQAPFYIEWJAlKYvDMzThyPY489MTrdHHNdqe6ubtqOa+jatKv6VtU9p869XV3ukojIr/e7I1z/bD3GRT44uVoKfsSUj7+9FvSZVfn83ROJPmXxpQTwBH68uTQe4+0Xa7ETgoBavZ5qzm6nE9hf2Gim6vfdZkumRsDXV7fHK7mydEhWqwuy2x/KhVcbzgQsVw49BWi3vye6HfUkAl5rVOSvdl9wZUF9pgRUSyO52x0khgEVQJAAaBbcIxEmAW+u1aS9tz8BFMB7wydypFaWe91BcA/XmRGgASTlAU0AwZsrnkQAQRKwvhL81AlIFYzK2CRAK8EEzroOASgA4ACaYPXKcypvCNBEpiFA9zsQCiAgHftRCrCpj6qYWQ7IMwTMRBiXAyj9uPlh8/tWd7pJME8CbGPFPQV0nNvk7xUBcUTGJUH2M58EaPeGABcV2fYB+imgnwR6vLkPARfwtEnaCUaNNdWNUBoA2vbAvAx99sPmTN/qshIe1a8t4UaqIeHW2SyfnN2IfacpgYATzdq437VWV5LqzcqitPrDwM60tzlBG1x1X9q6zAlbm1+/tELgp5vlp3zBuIkEfPPHzuhwZVEe9YficsVktzr9CZwv1yvjNvzWNvoeO9HGdU7Yodj8047Yxnvv9RfiFXDpRjsIAYCiY0l1M3vb7KPatMNp5mQ/Wx/ci/L9fMJrfWnWySzvHJA0XtJBSuZjpq+u7GRKnj/e2Eny2Xo/CUimQUXkPxFwt/VAHvbC+NRlpbpobT95dE1AQK28IMcaVSefr7d70h3sT+9IzMkLixEUAAJQNAkAz8J2tr3UfD4g4NTqsgwH9seWOdViuSyXt3fnlwANMuo3SaICQIBLAUlzTcDV21sBDtuq20JCE0BwWgkAyzp/e0FAVA4wc0EUAQCpiyZn7gkwQVINCAfzt5kD9CrbVn7uQ4BJ0JYISYBOkHEK8JIA5ACtgKjHH9sPZAgwdm3SpzKiHoM66cF26bmRPH4Sbk28SYJRCrC12xQQ9zj0NgdEgTIJsNlRBd4qQO8Czf3BgdsKu+zmTJu5exny5XU47bcIJP7Ts+vxByIgQH+wgBNYW7HZ6Lbt7l7w0qIL9vyrtX+/HeDYWedzfYegDy4vUcGBiOnQ+28ckcF++N99eWFBLl65N/FVhw0Iz/X6g6FUyuEboXnWp/uBMJCDtqj5tA3GM78saT/qSKUavlb3ez1pHJ78YsXlOH1MgD64PPfKygQB3998OHEAqoEAMMpmZy+wYR0kYMyNeqgA1HW/rPNpheVOAAYHeBStANRBAgpAEsh6vTI+qdWrTRXoNvy+889hKlYS9bTz2b4tAgko5uqjLZUCKNl31u0fPv10pzMGi4ERj6fWlsfEkBxTAVwxEHt5azfIEwQCElzns4WANVmpRmcCsJIocAYxb1MAFAESULCSJIDzMUzMHEBFwY4EcD4z1Mx5qToqh/30/wM2Eqgu9Es6Syx98dvtEVYSAAFeXzG42YY6gKDofpoAxjwcIcioflnm40JEKYALCT8/euto/GMwigA9uElOHAG6XxoCXOejXRxxtHEi4Mufr2c63k6Kv3m5/+GZY/EKmBdHn5Ufmf8XeFYO5z1vQUDejPo2XqEA31Ysb38LBeTNqG/jFQrwbcXy9rdQQN6M+jZeoQDfVixvfwsF5M2ob+MVCvBtxfL2t1BA3oz6Nt7/XgF/A20YIoxeFupUAAAAAElFTkSuQmCC"}],"fabricOptions":{"header":"package com.example.mod;","entity":"Entity","render":"","members":""}} \ No newline at end of file diff --git a/assets/models/cloud_chest.java b/assets/models/cloud_chest.java new file mode 100644 index 00000000..87e684a2 --- /dev/null +++ b/assets/models/cloud_chest.java @@ -0,0 +1,32 @@ +// Made with Blockbench 4.8.3 +// Exported for Minecraft version 1.17+ for Yarn +// Paste this class into your mod and generate all required imports +public class cloud_chest extends EntityModel { + private final ModelPart lid; + private final ModelPart lock_r1; + private final ModelPart bb_main; + public cloud_chest(ModelPart root) { + this.lid = root.getChild("lid"); + this.bb_main = root.getChild("bb_main"); + } + public static TexturedModelData getTexturedModelData() { + ModelData modelData = new ModelData(); + ModelPartData modelPartData = modelData.getRoot(); + ModelPartData lid = modelPartData.addChild("lid", ModelPartBuilder.create().uv(0, 0).cuboid(-1.0F, -2.0F, 13.8F, 2.0F, 4.0F, 1.0F, new Dilation(0.0F)) + .uv(0, 0).cuboid(-1.0F, -1.0F, 14.0F, 2.0F, 2.0F, 1.0F, new Dilation(0.0F)) + .uv(0, 0).cuboid(-7.0F, -5.0F, 0.0F, 14.0F, 5.0F, 14.0F, new Dilation(0.3F)), ModelTransform.of(0.0F, 16.0F, -7.0F, 1.0908F, 0.0F, 0.0F)); + + ModelPartData lock_r1 = lid.addChild("lock_r1", ModelPartBuilder.create().uv(0, 0).cuboid(-2.0F, -4.0F, -0.5F, 2.0F, 4.0F, 1.0F, new Dilation(0.0F)), ModelTransform.of(-2.0F, 1.0F, 14.3F, 0.0F, 0.0F, 1.5708F)); + + ModelPartData bb_main = modelPartData.addChild("bb_main", ModelPartBuilder.create().uv(0, 19).cuboid(-7.0F, -10.0F, -7.0F, 14.0F, 10.0F, 14.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 24.0F, 0.0F)); + return TexturedModelData.of(modelData, 64, 64); + } + @Override + public void setAngles(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + } + @Override + public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) { + lid.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha); + bb_main.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha); + } +} \ No newline at end of file diff --git a/assets/models/cloud_chest.png b/assets/models/cloud_chest.png new file mode 100644 index 0000000000000000000000000000000000000000..e06ba84ac2f9ad15f6797e5bde8ff31f4a0a3101 GIT binary patch literal 1278 zcmV+t3ui9e5E3BR z3sSXGKHt7&XjRb%1XCa{DsxQ5e{=iFK17t?Na*JS|`A>+} zfvRqSKnV`WyZZln?g2FiBcnDFy58iq$JpSK$I%wu!7V0GQ3D zaHS^0WKQ8x)yW#l%UB(0{iF`~`tez2qyICxp9H^pe3@(U{PB;=T>3V4Bvz#JGxr~i z{p9IUzikTT_ukkB0CX$^2Tof_$LYj}7cR0J=A`gOh&Q(1HWPA^5eH5iQK+`zIdIxI zxtJ9lrj)`CV2vF65ypNbG=A(yxXmiIvbVdcPAWn(yNMj$NY+@s4G$R?g<UbGj_QJ(Rx3@Yp zs(#TSFS_p{5T8BR%{~%iUs#YGSc=-PvI}pXi0aX>i(#jg+D}!VH=W{W*iEw~fl8JM zr@)7A?;u>P9ziX`fXbnX8$@`xKR^&hu&vc)N3OT#0G11H9@okAv26e(t~I%u!fvnD zlEC-jY;jql;DGoxNC$|!g5xWai4GZqFhUSU30Yb_uyRuCOgRcyFFNju{IDY-{0-wr@xc`1W^Q8N3dBS ziZJUGUJsRz_xcIvivAxEp^`m>Ns$Z}3s{B`f3uK`9CUI%OVqKj3nAZz)klzC{x`3W z`iTO;A{wXE0kR6-C{_41KowPemSM!1BXXSXxEo*oeELdkg!1z7dk57%Ue?sq)YR0} o)YR0})YR0})YR0})clwE7l>WbUVM!i@c;k-07*qoM6N<$f;RADW&i*H literal 0 HcmV?d00001 diff --git a/src/main/java/com/minelittlepony/unicopia/block/UBlockEntities.java b/src/main/java/com/minelittlepony/unicopia/block/UBlockEntities.java index cd929491..570be63b 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UBlockEntities.java +++ b/src/main/java/com/minelittlepony/unicopia/block/UBlockEntities.java @@ -1,16 +1,19 @@ package com.minelittlepony.unicopia.block; import com.minelittlepony.unicopia.block.cloud.CloudBedBlock; +import com.minelittlepony.unicopia.block.cloud.CloudChestBlock; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.entity.BlockEntityType.Builder; +import net.minecraft.block.entity.ChestBlockEntity; import net.minecraft.registry.Registry; import net.minecraft.registry.Registries; public interface UBlockEntities { BlockEntityType WEATHER_VANE = create("weather_vane", BlockEntityType.Builder.create(WeatherVaneBlock.WeatherVane::new, UBlocks.WEATHER_VANE)); BlockEntityType FANCY_BED = create("fancy_bed", BlockEntityType.Builder.create(CloudBedBlock.Tile::new, UBlocks.CLOTH_BED, UBlocks.CLOUD_BED)); + BlockEntityType CLOUD_CHEST = create("cloud_chest", BlockEntityType.Builder.create(CloudChestBlock.TileData::new, UBlocks.CLOUD_CHEST)); static BlockEntityType create(String id, Builder builder) { return Registry.register(Registries.BLOCK_ENTITY_TYPE, id, builder.build(null)); diff --git a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java index 078f267d..3ee4872e 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java +++ b/src/main/java/com/minelittlepony/unicopia/block/UBlocks.java @@ -14,7 +14,8 @@ import com.minelittlepony.unicopia.block.cloud.OrientedCloudBlock; import com.minelittlepony.unicopia.block.cloud.PoreousCloudStairsBlock; import com.minelittlepony.unicopia.block.cloud.ShapingBenchBlock; import com.minelittlepony.unicopia.block.cloud.CloudBedBlock; -import com.minelittlepony.unicopia.block.cloud.CloudBlock; +import com.minelittlepony.unicopia.block.cloud.CloudChestBlock; +import com.minelittlepony.unicopia.block.cloud.CloudLike; import com.minelittlepony.unicopia.block.cloud.SoggyCloudBlock; import com.minelittlepony.unicopia.block.cloud.SoggyCloudSlabBlock; import com.minelittlepony.unicopia.block.cloud.SoggyCloudStairsBlock; @@ -170,6 +171,13 @@ public interface UBlocks { Block CLOUD_BRICK_SLAB = register("cloud_brick_slab", new CloudSlabBlock(Settings.copy(CLOUD_BRICKS), false, null), ItemGroups.BUILDING_BLOCKS); Block CLOUD_BRICK_STAIRS = register("cloud_brick_stairs", new CloudStairsBlock(CLOUD_BRICKS.getDefaultState(), Settings.copy(CLOUD_PLANKS)), ItemGroups.BUILDING_BLOCKS); + Block ETCHED_CLOUD = register("etched_cloud", new NaturalCloudBlock(Settings.copy(CLOUD_BRICKS), false, + null, + () -> UBlocks.COMPACTED_CLOUD_BRICKS), ItemGroups.BUILDING_BLOCKS); + Block COMPACTED_ETCHED_CLOUD = register("compacted_etched_cloud", new CompactedCloudBlock(ETCHED_CLOUD.getDefaultState())); + Block ETCHED_CLOUD_SLAB = register("etched_cloud_slab", new CloudSlabBlock(Settings.copy(ETCHED_CLOUD), false, null), ItemGroups.BUILDING_BLOCKS); + Block ETCHED_CLOUD_STAIRS = register("etched_cloud_stairs", new CloudStairsBlock(ETCHED_CLOUD.getDefaultState(), Settings.copy(CLOUD_PLANKS)), ItemGroups.BUILDING_BLOCKS); + SoggyCloudBlock SOGGY_CLOUD = register("soggy_cloud", new SoggyCloudBlock(Settings.copy(CLOUD).hardness(0.7F), () -> UBlocks.CLOUD)); SoggyCloudSlabBlock SOGGY_CLOUD_SLAB = register("soggy_cloud_slab", new SoggyCloudSlabBlock(Settings.copy(SOGGY_CLOUD), () -> UBlocks.CLOUD_SLAB)); SoggyCloudStairsBlock SOGGY_CLOUD_STAIRS = register("soggy_cloud_stairs", new SoggyCloudStairsBlock(SOGGY_CLOUD.getDefaultState(), Settings.copy(CLOUD), () -> UBlocks.CLOUD_STAIRS)); @@ -184,6 +192,7 @@ public interface UBlocks { Block CARVED_CLOUD = register("carved_cloud", new OrientedCloudBlock(Settings.copy(CLOUD).hardness(0.4F).requiresTool().solid(), false), ItemGroups.BUILDING_BLOCKS); Block UNSTABLE_CLOUD = register("unstable_cloud", new UnstableCloudBlock(Settings.copy(CLOUD)), ItemGroups.NATURAL); Block CLOUD_PILLAR = register("cloud_pillar", new CloudPillarBlock(Settings.create().mapColor(MapColor.GRAY).hardness(0.5F).resistance(0).sounds(BlockSoundGroup.WOOL).solid()), ItemGroups.NATURAL); + Block CLOUD_CHEST = register("cloud_chest", new CloudChestBlock(Settings.copy(DENSE_CLOUD).instrument(Instrument.BASS).strength(2.5f), DENSE_CLOUD.getDefaultState()), ItemGroups.FUNCTIONAL); Block CLOTH_BED = register("cloth_bed", new FancyBedBlock("cloth", Settings.copy(Blocks.WHITE_BED).sounds(BlockSoundGroup.WOOD))); Block CLOUD_BED = register("cloud_bed", new CloudBedBlock("cloud", CLOUD.getDefaultState(), Settings.copy(Blocks.WHITE_BED).sounds(BlockSoundGroup.WOOL))); @@ -200,9 +209,7 @@ public interface UBlocks { } static T register(Identifier id, T block, RegistryKey group) { - ItemGroupRegistry.register(id, - CloudBlock.isCloudBlock(block) ? new CloudBlockItem(block, new Item.Settings()) : new BlockItem(block, new Item.Settings() - ), group); + ItemGroupRegistry.register(id, block instanceof CloudLike ? new CloudBlockItem(block, new Item.Settings()) : new BlockItem(block, new Item.Settings()), group); return register(id, block); } @@ -213,7 +220,7 @@ public interface UBlocks { if (block instanceof SaplingBlock || block instanceof SproutBlock || block instanceof FruitBlock || block instanceof CropBlock || block instanceof DoorBlock || block instanceof TrapdoorBlock) { TRANSLUCENT_BLOCKS.add(block); } - if (CloudBlock.isCloudBlock(block) || block instanceof SlimePustuleBlock || block instanceof PileBlock) { + if (block instanceof CloudLike || block instanceof SlimePustuleBlock || block instanceof PileBlock) { SEMI_TRANSPARENT_BLOCKS.add(block); } return Registry.register(Registries.BLOCK, id, block); diff --git a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBedBlock.java b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBedBlock.java index 401e0e46..6ecc1497 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBedBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBedBlock.java @@ -19,7 +19,7 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; -public class CloudBedBlock extends FancyBedBlock { +public class CloudBedBlock extends FancyBedBlock implements CloudLike { private final BlockState baseState; private final CloudBlock baseBlock; diff --git a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBlock.java b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBlock.java index 0ceebaaf..490d7e4d 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudBlock.java @@ -26,11 +26,7 @@ import net.minecraft.world.EmptyBlockView; import net.minecraft.world.LightType; import net.minecraft.world.World; -public class CloudBlock extends Block { - public static boolean isCloudBlock(Block block) { - return block instanceof CloudBlock || block instanceof CloudStairsBlock || block instanceof CloudBedBlock; - } - +public class CloudBlock extends Block implements CloudLike { protected final boolean meltable; public CloudBlock(Settings settings, boolean meltable) { diff --git a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudChestBlock.java b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudChestBlock.java new file mode 100644 index 00000000..cc6bb636 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudChestBlock.java @@ -0,0 +1,159 @@ +package com.minelittlepony.unicopia.block.cloud; + +import java.util.Optional; + +import org.jetbrains.annotations.Nullable; + +import com.minelittlepony.unicopia.EquineContext; +import com.minelittlepony.unicopia.block.UBlockEntities; +import net.minecraft.block.BlockState; +import net.minecraft.block.ChestBlock; +import net.minecraft.block.DoubleBlockProperties; +import net.minecraft.block.ShapeContext; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.block.entity.ChestBlockEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.ai.pathing.NavigationType; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.DoubleInventory; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.screen.GenericContainerScreenHandler; +import net.minecraft.screen.NamedScreenHandlerFactory; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; + +public class CloudChestBlock extends ChestBlock implements CloudLike { + private final BlockState baseState; + private final CloudBlock baseBlock; + + private static final DoubleBlockProperties.PropertyRetriever> NAME_RETRIEVER = new DoubleBlockProperties.PropertyRetriever<>(){ + @Override + public Optional getFromBoth(final ChestBlockEntity first, final ChestBlockEntity second) { + final DoubleInventory inventory = new DoubleInventory(first, second); + return Optional.of(new NamedScreenHandlerFactory(){ + @Override + @Nullable + public ScreenHandler createMenu(int i, PlayerInventory playerInventory, PlayerEntity player) { + if (first.checkUnlocked(player) && second.checkUnlocked(player)) { + first.checkLootInteraction(playerInventory.player); + second.checkLootInteraction(playerInventory.player); + return GenericContainerScreenHandler.createGeneric9x6(i, playerInventory, inventory); + } + return null; + } + + @Override + public Text getDisplayName() { + if (first.hasCustomName()) { + return first.getDisplayName(); + } + if (second.hasCustomName()) { + return second.getDisplayName(); + } + return Text.translatable(first.getCachedState().getBlock().getTranslationKey() + ".double"); + } + }); + } + + @Override + public Optional getFrom(ChestBlockEntity chest) { + return Optional.of(chest); + } + + @Override + public Optional getFallback() { + return Optional.empty(); + } + }; + + public CloudChestBlock(Settings settings, BlockState baseState) { + super(settings, () -> UBlockEntities.CLOUD_CHEST); + this.baseState = baseState; + this.baseBlock = (CloudBlock)baseState.getBlock(); + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { + return new TileData(pos, state); + } + + @Override + @Nullable + public NamedScreenHandlerFactory createScreenHandlerFactory(BlockState state, World world, BlockPos pos) { + return getBlockEntitySource(state, world, pos, false).apply(NAME_RETRIEVER).orElse(null); + } + + @Override + public final VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + if (!baseBlock.canInteract(baseState, world, pos, EquineContext.of(context))) { + return VoxelShapes.empty(); + } + return super.getOutlineShape(state, world, pos, context); + } + + @Override + @Deprecated + public final VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { + return super.getOutlineShape(state, world, pos, ShapeContext.absent()); + } + + @Override + @Deprecated + public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + return this.collidable ? state.getOutlineShape(world, pos, context) : VoxelShapes.empty(); + } + + @Override + @Nullable + public final BlockState getPlacementState(ItemPlacementContext context) { + if (!baseBlock.canInteract(baseState, context.getWorld(), context.getBlockPos(), EquineContext.of(context))) { + return null; + } + return super.getPlacementState(context); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (!baseBlock.canInteract(baseState, world, pos, EquineContext.of(player))) { + return ActionResult.PASS; + } + return super.onUse(state, world, pos, player, hand, hit); + } + + @Deprecated + @Override + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { + baseState.onEntityCollision(world, pos, entity); + } + + @Override + @Deprecated + public boolean canPathfindThrough(BlockState state, BlockView world, BlockPos pos, NavigationType type) { + return true; + } + + public static class TileData extends ChestBlockEntity { + protected TileData(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { + super(blockEntityType, blockPos, blockState); + } + + public TileData(BlockPos pos, BlockState state) { + super(UBlockEntities.CLOUD_CHEST, pos, state); + } + + @Override + protected Text getContainerName() { + return getCachedState().getBlock().getName(); + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudLike.java b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudLike.java new file mode 100644 index 00000000..ec9ef4fd --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudLike.java @@ -0,0 +1,5 @@ +package com.minelittlepony.unicopia.block.cloud; + +public interface CloudLike { + +} diff --git a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudStairsBlock.java b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudStairsBlock.java index 51027fe7..bafd9e21 100644 --- a/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudStairsBlock.java +++ b/src/main/java/com/minelittlepony/unicopia/block/cloud/CloudStairsBlock.java @@ -16,7 +16,7 @@ import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; -public class CloudStairsBlock extends StairsBlock { +public class CloudStairsBlock extends StairsBlock implements CloudLike { private final CloudBlock baseBlock; diff --git a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java index b8f72b61..5bf94a22 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java +++ b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java @@ -6,6 +6,7 @@ import org.jetbrains.annotations.Nullable; import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.block.*; +import com.minelittlepony.unicopia.block.cloud.CloudChestBlock; import com.minelittlepony.unicopia.client.particle.ChangelingMagicParticle; import com.minelittlepony.unicopia.client.particle.CloudsEscapingParticle; import com.minelittlepony.unicopia.client.particle.DiskParticle; @@ -59,6 +60,8 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.BlockRenderView; public interface URenderers { + BlockEntity CHEST_RENDER_ENTITY = new CloudChestBlock.TileData(BlockPos.ORIGIN, UBlocks.CLOUD_CHEST.getDefaultState()); + static void bootstrap() { ParticleFactoryRegistry.getInstance().register(UParticles.UNICORN_MAGIC, createFactory(MagicParticle::new)); ParticleFactoryRegistry.getInstance().register(UParticles.CHANGELING_MAGIC, createFactory(ChangelingMagicParticle::new)); @@ -97,9 +100,11 @@ public interface URenderers { BlockEntityRendererFactories.register(UBlockEntities.WEATHER_VANE, WeatherVaneBlockEntityRenderer::new); BlockEntityRendererFactories.register(UBlockEntities.FANCY_BED, CloudBedBlockEntityRenderer::new); + BlockEntityRendererFactories.register(UBlockEntities.CLOUD_CHEST, CloudChestBlockEntityRenderer::new); register(URenderers::renderJarItem, UItems.FILLED_JAR); register(URenderers::renderBedItem, UItems.CLOTH_BED, UItems.CLOUD_BED); + register(URenderers::renderChestItem, UBlocks.CLOUD_CHEST.asItem()); PolearmRenderer.register(UItems.WOODEN_POLEARM, UItems.STONE_POLEARM, UItems.IRON_POLEARM, UItems.GOLDEN_POLEARM, UItems.DIAMOND_POLEARM, UItems.NETHERITE_POLEARM); ModelPredicateProviderRegistry.register(UItems.GEMSTONE, new Identifier("affinity"), (stack, world, entity, seed) -> EnchantableItem.isEnchanted(stack) ? EnchantableItem.getSpellKey(stack).getAffinity().getAlignment() : 0); ModelPredicateProviderRegistry.register(UItems.ROCK_CANDY, new Identifier("count"), (stack, world, entity, seed) -> stack.getCount() / (float)stack.getMaxCount()); @@ -133,6 +138,10 @@ public interface URenderers { MinecraftClient.getInstance().getBlockEntityRenderDispatcher().renderEntity(entity, matrices, vertices, light, overlay); } + private static void renderChestItem(ItemStack stack, ModelTransformationMode mode, MatrixStack matrices, VertexConsumerProvider vertices, int light, int overlay) { + MinecraftClient.getInstance().getBlockEntityRenderDispatcher().renderEntity(CHEST_RENDER_ENTITY, matrices, vertices, light, overlay); + } + private static void renderJarItem(ItemStack stack, ModelTransformationMode mode, MatrixStack matrices, VertexConsumerProvider vertices, int light, int overlay) { ItemRenderer renderer = MinecraftClient.getInstance().getItemRenderer(); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/CloudChestBlockEntityRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/entity/CloudChestBlockEntityRenderer.java new file mode 100644 index 00000000..20662111 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/client/render/entity/CloudChestBlockEntityRenderer.java @@ -0,0 +1,125 @@ +package com.minelittlepony.unicopia.client.render.entity; + +import com.minelittlepony.unicopia.Unicopia; +import net.minecraft.block.AbstractChestBlock; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.ChestBlock; +import net.minecraft.block.DoubleBlockProperties; +import net.minecraft.block.entity.ChestBlockEntity; +import net.minecraft.block.enums.ChestType; +import net.minecraft.client.model.Dilation; +import net.minecraft.client.model.ModelData; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.model.ModelPartBuilder; +import net.minecraft.client.model.ModelPartData; +import net.minecraft.client.model.ModelTransform; +import net.minecraft.client.model.TexturedModelData; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactory.Context; +import net.minecraft.client.render.block.entity.ChestBlockEntityRenderer; +import net.minecraft.client.render.block.entity.LightmapCoordinatesRetriever; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.RotationAxis; + +public class CloudChestBlockEntityRenderer extends ChestBlockEntityRenderer { + private static final LightmapCoordinatesRetriever LIGHTING = new LightmapCoordinatesRetriever<>(); + private final Model[] models; + + public CloudChestBlockEntityRenderer(Context ctx) { + super(ctx); + models = new Model[] { + new Model(Model.getSingleChestModelData().createModel(), Unicopia.id("textures/entity/chest/cloud.png")), + new Model(Model.getLeftChestModelData().createModel(), Unicopia.id("textures/entity/chest/cloud_left.png")), + new Model(Model.getRightChestModelData().createModel(), Unicopia.id("textures/entity/chest/cloud_right.png")) + }; + } + + @Override + public void render(ChestBlockEntity entity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { + BlockState state = entity.getWorld() != null ? entity.getCachedState() : Blocks.CHEST.getDefaultState().with(ChestBlock.FACING, Direction.SOUTH); + + if (!(state.getBlock() instanceof AbstractChestBlock)) { + return; + } + + Model model = models[state.getOrEmpty(ChestBlock.CHEST_TYPE).orElse(ChestType.SINGLE).ordinal()]; + var properties = getProperties(state, entity); + + matrices.push(); + matrices.translate(0.5f, 0.5f, 0.5f); + matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-state.get(ChestBlock.FACING).asRotation())); + matrices.translate(-0.5f, -0.5f, -0.5f); + model.setAngles(1 - (float)Math.pow(1 - properties.apply(ChestBlock.getAnimationProgressRetriever(entity)).get(tickDelta), 3)); + model.render(matrices, vertexConsumers.getBuffer(RenderLayer.getEntityTranslucent(model.texture)), properties.apply(LIGHTING).applyAsInt(light), overlay); + matrices.pop(); + } + + private DoubleBlockProperties.PropertySource getProperties(BlockState state, ChestBlockEntity entity) { + return entity.getWorld() != null + ? ((AbstractChestBlock)state.getBlock()).getBlockEntitySource(state, entity.getWorld(), entity.getPos(), true) + : DoubleBlockProperties.PropertyRetriever::getFallback; + } + + static class Model { + private final ModelPart tree; + private final ModelPart lid; + + private final Identifier texture; + + public Model(ModelPart tree, Identifier texture) { + this.tree = tree; + this.lid = tree.getChild("lid"); + this.texture = texture; + } + + public static TexturedModelData getSingleChestModelData() { + ModelData data = new ModelData(); + ModelPartData root = data.getRoot(); + root.addChild("chest", ModelPartBuilder.create().uv(0, 19).cuboid(1, 0, 1, 14, 10, 14, Dilation.NONE), ModelTransform.NONE); + root.addChild("lid", ModelPartBuilder.create() + .uv(0, 0).cuboid(6, -2, 13.8F, 2, 4, 1, Dilation.NONE) + .uv(0, 0).cuboid(6, -1, 14, 2, 2, 1, Dilation.NONE) + .uv(0, 0).cuboid(0, 0, 0, 14, 5, 14, new Dilation(0.3F)), ModelTransform.pivot(1, 9, 1)) + .addChild("lock_r1", ModelPartBuilder.create() + .uv(0, 0).cuboid(-2, -4, -0.5F, 2, 4, 1, Dilation.NONE), ModelTransform.of(5, 1, 14.3F, 0, 0, 1.5708F)); + return TexturedModelData.of(data, 64, 64); + } + + public static TexturedModelData getLeftChestModelData() { + ModelData data = new ModelData(); + ModelPartData root = data.getRoot(); + root.addChild("chest", ModelPartBuilder.create().uv(0, 19).cuboid(0, 0, 1, 15, 10, 14, Dilation.NONE), ModelTransform.NONE); + root.addChild("lid", ModelPartBuilder.create() + .uv(0, 0).cuboid(6, -2, 13.8F, 2, 4, 1, Dilation.NONE) + .uv(0, 0).cuboid(6, -1, 14, 2, 2, 1, Dilation.NONE) + .uv(0, 0).cuboid(0, 0, 0, 15, 5, 14, new Dilation(0.3F)), ModelTransform.pivot(0, 9, 1)) + .addChild("lock_r1", ModelPartBuilder.create().uv(0, 0).cuboid(-2, -4, -0.5F, 2, 4, 1, Dilation.NONE), ModelTransform.of(5, 1, 14.3F, 0, 0, 1.5708F)); + return TexturedModelData.of(data, 64, 64); + } + + public static TexturedModelData getRightChestModelData() { + ModelData data = new ModelData(); + ModelPartData root = data.getRoot(); + root.addChild("chest", ModelPartBuilder.create().uv(0, 19).cuboid(1, 0, 1, 15, 10, 14, Dilation.NONE), ModelTransform.NONE); + root.addChild("lid", ModelPartBuilder.create() + .uv(0, 0).cuboid(7, -2, 13.8F, 2, 4, 1, Dilation.NONE) + .uv(0, 0).cuboid(7, -1, 14, 2, 2, 1, Dilation.NONE) + .uv(0, 0).cuboid(0, 0, 0, 15, 5, 14, new Dilation(0.3F)), ModelTransform.pivot(1, 9, 1)) + .addChild("lock_r1", ModelPartBuilder.create().uv(0, 0).cuboid(-2, -4, -0.5F, 2, 4, 1, Dilation.NONE), ModelTransform.of(6, 1, 14.3F, 0, 0, 1.5708F)); + return TexturedModelData.of(data, 64, 64); + } + + public void setAngles(float animationProgress) { + lid.pitch = -(animationProgress * 1.5707964f); + } + + public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay) { + tree.render(matrices, vertices, light, overlay); + } + } +} diff --git a/src/main/resources/assets/unicopia/blockstates/cloud_chest.json b/src/main/resources/assets/unicopia/blockstates/cloud_chest.json new file mode 100644 index 00000000..aa6b3edb --- /dev/null +++ b/src/main/resources/assets/unicopia/blockstates/cloud_chest.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "unicopia:block/cloud_chest" } + } +} diff --git a/src/main/resources/assets/unicopia/blockstates/compacted_etched_cloud.json b/src/main/resources/assets/unicopia/blockstates/compacted_etched_cloud.json new file mode 100644 index 00000000..7490f4f6 --- /dev/null +++ b/src/main/resources/assets/unicopia/blockstates/compacted_etched_cloud.json @@ -0,0 +1,268 @@ +{ + "multipart": [ + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true }, + "when": { "down": true, "north": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true }, + "when": { "down": true, "north": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true }, + "when": { "down": false, "north": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true }, + "when": { "down": true, "north": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true }, + "when": { "down": true, "north": false, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true }, + "when": { "down": false, "north": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true }, + "when": { "down": false, "north": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true }, + "when": { "down": false, "north": false, "east": false } + }, + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "y": 90 }, + "when": { "down": true, "south": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "y": 90 }, + "when": { "down": true, "south": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "y": 90 }, + "when": { "down": false, "south": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "y": 90 }, + "when": { "down": true, "south": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "y": 90 }, + "when": { "down": true, "south": false, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "y": 90 }, + "when": { "down": false, "south": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "y": 90 }, + "when": { "down": false, "south": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "y": 90 }, + "when": { "down": false, "south": false, "east": false } + }, + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "y": 180 }, + "when": { "down": true, "south": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "y": 180 }, + "when": { "down": true, "south": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "y": 180 }, + "when": { "down": false, "south": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "y": 180 }, + "when": { "down": true, "south": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "y": 180 }, + "when": { "down": true, "south": false, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "y": 180 }, + "when": { "down": false, "south": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "y": 180 }, + "when": { "down": false, "south": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "y": 180 }, + "when": { "down": false, "south": false, "west": false } + }, + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "y": 270 }, + "when": { "down": true, "north": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "y": 270 }, + "when": { "down": true, "north": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "y": 270 }, + "when": { "down": false, "north": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "y": 270 }, + "when": { "down": true, "north": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "y": 270 }, + "when": { "down": true, "north": false, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "y": 270 }, + "when": { "down": false, "north": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "y": 270 }, + "when": { "down": false, "north": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "y": 270 }, + "when": { "down": false, "north": false, "west": false } + }, + + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "x": 180 }, + "when": { "up": true, "south": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "x": 180 }, + "when": { "up": true, "south": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "x": 180 }, + "when": { "up": false, "south": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "x": 180 }, + "when": { "up": true, "south": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "x": 180 }, + "when": { "up": true, "south": false, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "x": 180 }, + "when": { "up": false, "south": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "x": 180 }, + "when": { "up": false, "south": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "x": 180 }, + "when": { "up": false, "south": false, "east": false } + }, + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": true, "south": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": true, "south": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": false, "south": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": true, "south": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": true, "south": false, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": false, "south": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": false, "south": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "x": 180, "y": 90 }, + "when": { "up": false, "south": false, "west": false } + }, + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": true, "north": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": true, "north": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": false, "north": true, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": true, "north": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": true, "north": false, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": false, "north": true, "west": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": false, "north": false, "west": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "x": 180, "y": 180 }, + "when": { "up": false, "north": false, "west": false } + }, + + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_full", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": true, "north": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_z", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": true, "north": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_y", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": false, "north": true, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_x", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": true, "north": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xz", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": true, "north": false, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_yz", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": false, "north": true, "east": false } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xy", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": false, "north": false, "east": true } + }, + { + "apply": { "model": "unicopia:block/flattened_etched_cloud_corner_xyz", "uvlock": true, "x": 180, "y": 270 }, + "when": { "up": false, "north": false, "east": false } + } + ] +} diff --git a/src/main/resources/assets/unicopia/blockstates/etched_cloud.json b/src/main/resources/assets/unicopia/blockstates/etched_cloud.json new file mode 100644 index 00000000..89ffa3ff --- /dev/null +++ b/src/main/resources/assets/unicopia/blockstates/etched_cloud.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "unicopia:block/etched_cloud" } + } +} diff --git a/src/main/resources/assets/unicopia/blockstates/etched_cloud_slab.json b/src/main/resources/assets/unicopia/blockstates/etched_cloud_slab.json new file mode 100644 index 00000000..faaf5c94 --- /dev/null +++ b/src/main/resources/assets/unicopia/blockstates/etched_cloud_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=double": { "model": "unicopia:block/etched_cloud" }, + "type=bottom": { "model": "unicopia:block/etched_cloud_slab" }, + "type=top": { "model": "unicopia:block/etched_cloud_slab_top" } + } +} diff --git a/src/main/resources/assets/unicopia/blockstates/etched_cloud_stairs.json b/src/main/resources/assets/unicopia/blockstates/etched_cloud_stairs.json new file mode 100644 index 00000000..e8a09622 --- /dev/null +++ b/src/main/resources/assets/unicopia/blockstates/etched_cloud_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "unicopia:block/etched_cloud_stairs_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "unicopia:block/etched_cloud_stairs_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "unicopia:block/etched_cloud_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/lang/en_us.json b/src/main/resources/assets/unicopia/lang/en_us.json index 33c35b1e..d9fdcaa0 100644 --- a/src/main/resources/assets/unicopia/lang/en_us.json +++ b/src/main/resources/assets/unicopia/lang/en_us.json @@ -298,9 +298,15 @@ "block.unicopia.dense_cloud_slab": "Dense Cloud Slab", "block.unicopia.dense_cloud_stairs": "Dense Cloud Stairs", "block.unicopia.compacted_dense_cloud": "Dense Cloud", + "block.unicopia.etched_cloud": "Etched Cloud", + "block.unicopia.etched_cloud_slab": "Etched Cloud Slab", + "block.unicopia.etched_cloud_stairs": "Etched Cloud Stairs", + "block.unicopia.compacted_etched_cloud": "Cloud Etched Cloud", "block.unicopia.cloud_pillar": "Cloud Pillar", "block.unicopia.cloth_bed": "Fancy Cloth Bed", "block.unicopia.cloud_bed": "Cloud Bed", + "block.unicopia.cloud_chest": "Cloudsdale Chest", + "block.unicopia.cloud_chest.double": "Large Cloudsdale Chest", "block.unicopia.oats": "Oats", "block.unicopia.oats_stem": "Oats", diff --git a/src/main/resources/assets/unicopia/models/block/cloud_chest.json b/src/main/resources/assets/unicopia/models/block/cloud_chest.json new file mode 100644 index 00000000..e30e3f72 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/cloud_chest.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "unicopia:block/cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/etched_cloud.json b/src/main/resources/assets/unicopia/models/block/etched_cloud.json new file mode 100644 index 00000000..3bc4dc53 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/etched_cloud.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "unicopia:block/etched_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/etched_cloud_slab.json b/src/main/resources/assets/unicopia/models/block/etched_cloud_slab.json new file mode 100644 index 00000000..3e08552c --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/etched_cloud_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "unicopia:block/etched_cloud", + "side": "unicopia:block/etched_cloud", + "top": "unicopia:block/etched_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/etched_cloud_slab_top.json b/src/main/resources/assets/unicopia/models/block/etched_cloud_slab_top.json new file mode 100644 index 00000000..1e3a94a8 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/etched_cloud_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "unicopia:block/etched_cloud", + "side": "unicopia:block/etched_cloud", + "top": "unicopia:block/etched_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs.json b/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs.json new file mode 100644 index 00000000..13559128 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "unicopia:block/cloud_stairs", + "textures": { + "bottom": "unicopia:block/etched_cloud", + "side": "unicopia:block/etched_cloud", + "top": "unicopia:block/etched_cloud" + } +} diff --git a/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_inner.json b/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_inner.json new file mode 100644 index 00000000..e54dae19 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "unicopia:block/cloud_stairs_inner", + "textures": { + "bottom": "unicopia:block/etched_cloud", + "side": "unicopia:block/etched_cloud", + "top": "unicopia:block/etched_cloud" + } +} diff --git a/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_outer.json b/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_outer.json new file mode 100644 index 00000000..8ee25113 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/etched_cloud_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "unicopia:block/cloud_stairs_outer", + "textures": { + "bottom": "unicopia:block/etched_cloud", + "side": "unicopia:block/etched_cloud", + "top": "unicopia:block/etched_cloud" + } +} diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_full.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_full.json new file mode 100644 index 00000000..96ed79e2 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_full.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_full", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_x.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_x.json new file mode 100644 index 00000000..a0e2924d --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_x.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_x", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xy.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xy.json new file mode 100644 index 00000000..f38b7250 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xy.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_xy", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xyz.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xyz.json new file mode 100644 index 00000000..382df9ab --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xyz.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_xyz", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xz.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xz.json new file mode 100644 index 00000000..bad87c59 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_xz.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_xz", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_y.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_y.json new file mode 100644 index 00000000..2e2572a5 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_y.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_y", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_yz.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_yz.json new file mode 100644 index 00000000..b4e0a676 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_yz.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_yz", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_z.json b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_z.json new file mode 100644 index 00000000..fa657f3b --- /dev/null +++ b/src/main/resources/assets/unicopia/models/block/flattened_etched_cloud_corner_z.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:block/flattened_cloud_corner_z", + "textures": { + "all": "unicopia:block/dense_cloud" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/unicopia/models/item/cloud_chest.json b/src/main/resources/assets/unicopia/models/item/cloud_chest.json new file mode 100644 index 00000000..74aedb05 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/cloud_chest.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/chest", + "textures": { + "particle": "minecraft:item/white_wool" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/etched_cloud.json b/src/main/resources/assets/unicopia/models/item/etched_cloud.json new file mode 100644 index 00000000..3ed47a0c --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/etched_cloud.json @@ -0,0 +1,3 @@ +{ + "parent": "unicopia:block/etched_cloud" +} diff --git a/src/main/resources/assets/unicopia/models/item/etched_cloud_slab.json b/src/main/resources/assets/unicopia/models/item/etched_cloud_slab.json new file mode 100644 index 00000000..fb4023b6 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/etched_cloud_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "unicopia:block/etched_cloud_slab" +} diff --git a/src/main/resources/assets/unicopia/models/item/etched_cloud_stairs.json b/src/main/resources/assets/unicopia/models/item/etched_cloud_stairs.json new file mode 100644 index 00000000..a8728434 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/etched_cloud_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "unicopia:block/etched_cloud_stairs" +} diff --git a/src/main/resources/assets/unicopia/textures/block/etched_cloud.png b/src/main/resources/assets/unicopia/textures/block/etched_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1fe67e2c3a842fbe089dd7499d29872c79564b GIT binary patch literal 7296 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/chest/cloud_left.png b/src/main/resources/assets/unicopia/textures/entity/chest/cloud_left.png new file mode 100644 index 0000000000000000000000000000000000000000..a240805d3966d6624f20414e1e39615fa07c6daf GIT binary patch literal 6032 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 Ph9Qo#yHmlUwXy#Jt7^aK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/chest/cloud_right.png b/src/main/resources/assets/unicopia/textures/entity/chest/cloud_right.png new file mode 100644 index 0000000000000000000000000000000000000000..5652a775e499cfba3301d5b3bb174eeb827a80d1 GIT binary patch literal 6129 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 NLceLg`QG!B{|*0I@(ln0 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_cutting.json b/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_cutting.json new file mode 100644 index 00000000..9f8b76ff --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_cutting.json @@ -0,0 +1,6 @@ +{ + "type": "unicopia:cloud_shaping", + "ingredient": { "item": "unicopia:dense_cloud" }, + "result": "unicopia:etched_cloud", + "count": 1 +} diff --git a/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_slab_cutting.json b/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_slab_cutting.json new file mode 100644 index 00000000..951b6f70 --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_slab_cutting.json @@ -0,0 +1,6 @@ +{ + "type": "unicopia:cloud_shaping", + "ingredient": { "item": "unicopia:etched_cloud" }, + "result": "unicopia:etched_cloud_slab", + "count": 2 +} diff --git a/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_stairs_cutting.json b/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_stairs_cutting.json new file mode 100644 index 00000000..85ddf8e0 --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/blocks/carving/etched_cloud_stairs_cutting.json @@ -0,0 +1,6 @@ +{ + "type": "unicopia:cloud_shaping", + "ingredient": { "item": "unicopia:etched_cloud" }, + "result": "unicopia:etched_cloud_stairs", + "count": 1 +} diff --git a/src/main/resources/data/unicopia/recipes/blocks/cloud_chest.json b/src/main/resources/data/unicopia/recipes/blocks/cloud_chest.json new file mode 100644 index 00000000..5373f56c --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/blocks/cloud_chest.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": [ + { "item": "unicopia:cloud_planks" } + ] + }, + "result": { "item": "unicopia:cloud_chest", "count": 1 } +} diff --git a/src/main/resources/data/unicopia/tags/blocks/cloud_slabs.json b/src/main/resources/data/unicopia/tags/blocks/cloud_slabs.json index 580865fc..3a2b1dc1 100644 --- a/src/main/resources/data/unicopia/tags/blocks/cloud_slabs.json +++ b/src/main/resources/data/unicopia/tags/blocks/cloud_slabs.json @@ -4,6 +4,7 @@ "unicopia:cloud_slab", "unicopia:soggy_cloud_slab", "unicopia:dense_cloud_slab", + "unicopia:etched_cloud_slab", "unicopia:cloud_plank_slab", "unicopia:cloud_brick_slab" ] diff --git a/src/main/resources/data/unicopia/tags/blocks/cloud_stairs.json b/src/main/resources/data/unicopia/tags/blocks/cloud_stairs.json index a8dcd633..7f816bb4 100644 --- a/src/main/resources/data/unicopia/tags/blocks/cloud_stairs.json +++ b/src/main/resources/data/unicopia/tags/blocks/cloud_stairs.json @@ -4,6 +4,7 @@ "unicopia:cloud_stairs", "unicopia:soggy_cloud_stairs", "unicopia:dense_cloud_stairs", + "unicopia:etched_cloud_stairs", "unicopia:cloud_plank_stairs", "unicopia:cloud_brick_stairs" ] diff --git a/src/main/resources/data/unicopia/tags/blocks/clouds.json b/src/main/resources/data/unicopia/tags/blocks/clouds.json index 8aa7f251..911abcd4 100644 --- a/src/main/resources/data/unicopia/tags/blocks/clouds.json +++ b/src/main/resources/data/unicopia/tags/blocks/clouds.json @@ -5,6 +5,7 @@ "unicopia:cloud_planks", "unicopia:cloud_bricks", "unicopia:dense_cloud", + "unicopia:etched_cloud", "unicopia:carved_cloud", "unicopia:compacted_cloud", "unicopia:compacted_cloud_planks", diff --git a/src/main/resources/data/unicopia/tags/items/cloud_slabs.json b/src/main/resources/data/unicopia/tags/items/cloud_slabs.json index 59d4913d..bbf14745 100644 --- a/src/main/resources/data/unicopia/tags/items/cloud_slabs.json +++ b/src/main/resources/data/unicopia/tags/items/cloud_slabs.json @@ -3,6 +3,7 @@ "values": [ "unicopia:cloud_slab", "unicopia:dense_cloud_slab", + "unicopia:etched_cloud_slab" "unicopia:cloud_plank_slab" ] } diff --git a/src/main/resources/data/unicopia/tags/items/cloud_stairs.json b/src/main/resources/data/unicopia/tags/items/cloud_stairs.json index c53b4404..cbbba0dc 100644 --- a/src/main/resources/data/unicopia/tags/items/cloud_stairs.json +++ b/src/main/resources/data/unicopia/tags/items/cloud_stairs.json @@ -3,6 +3,7 @@ "values": [ "unicopia:cloud_stairs", "unicopia:dense_cloud_stairs", + "unicopia:etched_cloud_stairs", "unicopia:cloud_plank_stairs" ] } diff --git a/src/main/resources/data/unicopia/tags/items/clouds.json b/src/main/resources/data/unicopia/tags/items/clouds.json index 039c3d9f..d77163af 100644 --- a/src/main/resources/data/unicopia/tags/items/clouds.json +++ b/src/main/resources/data/unicopia/tags/items/clouds.json @@ -6,6 +6,7 @@ "unicopia:cloud_planks", "unicopia:cloud_bricks", "unicopia:dense_cloud", + "unicopia:etched_cloud", "unicopia:unstable_cloud" ] } diff --git a/src/main/resources/data/unicopia/tags/items/groups/pegasus.json b/src/main/resources/data/unicopia/tags/items/groups/pegasus.json index d0f069f3..154bfd88 100644 --- a/src/main/resources/data/unicopia/tags/items/groups/pegasus.json +++ b/src/main/resources/data/unicopia/tags/items/groups/pegasus.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "unicopia:shaping_bench", + "unicopia:cloud_chest", "unicopia:cloud_lump", "unicopia:cloud", "unicopia:cloud_slab", @@ -15,6 +16,9 @@ "unicopia:dense_cloud", "unicopia:dense_cloud_slab", "unicopia:dense_cloud_stairs", + "unicopia:etched_cloud", + "unicopia:etched_cloud_slab", + "unicopia:etched_cloud_stairs", "unicopia:unstable_cloud", "unicopia:cloud_pillar", "unicopia:cloud_bed",