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 00000000..e06ba84a Binary files /dev/null and b/assets/models/cloud_chest.png differ 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 00000000..0f1fe67e Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/block/etched_cloud.png differ diff --git a/src/main/resources/assets/unicopia/textures/entity/chest/cloud.png b/src/main/resources/assets/unicopia/textures/entity/chest/cloud.png new file mode 100644 index 00000000..b321284f Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/entity/chest/cloud.png differ 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 00000000..a240805d Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/entity/chest/cloud_left.png differ 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 00000000..5652a775 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/entity/chest/cloud_right.png differ 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",