Added etched clouds and cloud chests

This commit is contained in:
Sollace 2023-12-04 14:49:24 +00:00
parent f769568031
commit d8565f3260
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
52 changed files with 1005 additions and 12 deletions

File diff suppressed because one or more lines are too long

View file

@ -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<Entity> {
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);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,16 +1,19 @@
package com.minelittlepony.unicopia.block; package com.minelittlepony.unicopia.block;
import com.minelittlepony.unicopia.block.cloud.CloudBedBlock; 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.BlockEntity;
import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.block.entity.BlockEntityType.Builder; import net.minecraft.block.entity.BlockEntityType.Builder;
import net.minecraft.block.entity.ChestBlockEntity;
import net.minecraft.registry.Registry; import net.minecraft.registry.Registry;
import net.minecraft.registry.Registries; import net.minecraft.registry.Registries;
public interface UBlockEntities { public interface UBlockEntities {
BlockEntityType<WeatherVaneBlock.WeatherVane> WEATHER_VANE = create("weather_vane", BlockEntityType.Builder.create(WeatherVaneBlock.WeatherVane::new, UBlocks.WEATHER_VANE)); BlockEntityType<WeatherVaneBlock.WeatherVane> WEATHER_VANE = create("weather_vane", BlockEntityType.Builder.create(WeatherVaneBlock.WeatherVane::new, UBlocks.WEATHER_VANE));
BlockEntityType<CloudBedBlock.Tile> FANCY_BED = create("fancy_bed", BlockEntityType.Builder.create(CloudBedBlock.Tile::new, UBlocks.CLOTH_BED, UBlocks.CLOUD_BED)); BlockEntityType<CloudBedBlock.Tile> FANCY_BED = create("fancy_bed", BlockEntityType.Builder.create(CloudBedBlock.Tile::new, UBlocks.CLOTH_BED, UBlocks.CLOUD_BED));
BlockEntityType<ChestBlockEntity> CLOUD_CHEST = create("cloud_chest", BlockEntityType.Builder.create(CloudChestBlock.TileData::new, UBlocks.CLOUD_CHEST));
static <T extends BlockEntity> BlockEntityType<T> create(String id, Builder<T> builder) { static <T extends BlockEntity> BlockEntityType<T> create(String id, Builder<T> builder) {
return Registry.register(Registries.BLOCK_ENTITY_TYPE, id, builder.build(null)); return Registry.register(Registries.BLOCK_ENTITY_TYPE, id, builder.build(null));

View file

@ -14,7 +14,8 @@ import com.minelittlepony.unicopia.block.cloud.OrientedCloudBlock;
import com.minelittlepony.unicopia.block.cloud.PoreousCloudStairsBlock; import com.minelittlepony.unicopia.block.cloud.PoreousCloudStairsBlock;
import com.minelittlepony.unicopia.block.cloud.ShapingBenchBlock; import com.minelittlepony.unicopia.block.cloud.ShapingBenchBlock;
import com.minelittlepony.unicopia.block.cloud.CloudBedBlock; 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.SoggyCloudBlock;
import com.minelittlepony.unicopia.block.cloud.SoggyCloudSlabBlock; import com.minelittlepony.unicopia.block.cloud.SoggyCloudSlabBlock;
import com.minelittlepony.unicopia.block.cloud.SoggyCloudStairsBlock; 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_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 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)); 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)); 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)); 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 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 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_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 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))); 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 extends Block> T register(Identifier id, T block, RegistryKey<ItemGroup> group) { static <T extends Block> T register(Identifier id, T block, RegistryKey<ItemGroup> group) {
ItemGroupRegistry.register(id, ItemGroupRegistry.register(id, block instanceof CloudLike ? new CloudBlockItem(block, new Item.Settings()) : new BlockItem(block, new Item.Settings()), group);
CloudBlock.isCloudBlock(block) ? new CloudBlockItem(block, new Item.Settings()) : new BlockItem(block, new Item.Settings()
), group);
return register(id, block); 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) { if (block instanceof SaplingBlock || block instanceof SproutBlock || block instanceof FruitBlock || block instanceof CropBlock || block instanceof DoorBlock || block instanceof TrapdoorBlock) {
TRANSLUCENT_BLOCKS.add(block); 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); SEMI_TRANSPARENT_BLOCKS.add(block);
} }
return Registry.register(Registries.BLOCK, id, block); return Registry.register(Registries.BLOCK, id, block);

View file

@ -19,7 +19,7 @@ import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.BlockView; import net.minecraft.world.BlockView;
import net.minecraft.world.World; import net.minecraft.world.World;
public class CloudBedBlock extends FancyBedBlock { public class CloudBedBlock extends FancyBedBlock implements CloudLike {
private final BlockState baseState; private final BlockState baseState;
private final CloudBlock baseBlock; private final CloudBlock baseBlock;

View file

@ -26,11 +26,7 @@ import net.minecraft.world.EmptyBlockView;
import net.minecraft.world.LightType; import net.minecraft.world.LightType;
import net.minecraft.world.World; import net.minecraft.world.World;
public class CloudBlock extends Block { public class CloudBlock extends Block implements CloudLike {
public static boolean isCloudBlock(Block block) {
return block instanceof CloudBlock || block instanceof CloudStairsBlock || block instanceof CloudBedBlock;
}
protected final boolean meltable; protected final boolean meltable;
public CloudBlock(Settings settings, boolean meltable) { public CloudBlock(Settings settings, boolean meltable) {

View file

@ -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<ChestBlockEntity, Optional<NamedScreenHandlerFactory>> NAME_RETRIEVER = new DoubleBlockProperties.PropertyRetriever<>(){
@Override
public Optional<NamedScreenHandlerFactory> 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<NamedScreenHandlerFactory> getFrom(ChestBlockEntity chest) {
return Optional.of(chest);
}
@Override
public Optional<NamedScreenHandlerFactory> 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();
}
}
}

View file

@ -0,0 +1,5 @@
package com.minelittlepony.unicopia.block.cloud;
public interface CloudLike {
}

View file

@ -16,7 +16,7 @@ import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.BlockView; import net.minecraft.world.BlockView;
import net.minecraft.world.World; import net.minecraft.world.World;
public class CloudStairsBlock extends StairsBlock { public class CloudStairsBlock extends StairsBlock implements CloudLike {
private final CloudBlock baseBlock; private final CloudBlock baseBlock;

View file

@ -6,6 +6,7 @@ import org.jetbrains.annotations.Nullable;
import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.block.*; 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.ChangelingMagicParticle;
import com.minelittlepony.unicopia.client.particle.CloudsEscapingParticle; import com.minelittlepony.unicopia.client.particle.CloudsEscapingParticle;
import com.minelittlepony.unicopia.client.particle.DiskParticle; import com.minelittlepony.unicopia.client.particle.DiskParticle;
@ -59,6 +60,8 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockRenderView; import net.minecraft.world.BlockRenderView;
public interface URenderers { public interface URenderers {
BlockEntity CHEST_RENDER_ENTITY = new CloudChestBlock.TileData(BlockPos.ORIGIN, UBlocks.CLOUD_CHEST.getDefaultState());
static void bootstrap() { static void bootstrap() {
ParticleFactoryRegistry.getInstance().register(UParticles.UNICORN_MAGIC, createFactory(MagicParticle::new)); ParticleFactoryRegistry.getInstance().register(UParticles.UNICORN_MAGIC, createFactory(MagicParticle::new));
ParticleFactoryRegistry.getInstance().register(UParticles.CHANGELING_MAGIC, createFactory(ChangelingMagicParticle::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.WEATHER_VANE, WeatherVaneBlockEntityRenderer::new);
BlockEntityRendererFactories.register(UBlockEntities.FANCY_BED, CloudBedBlockEntityRenderer::new); BlockEntityRendererFactories.register(UBlockEntities.FANCY_BED, CloudBedBlockEntityRenderer::new);
BlockEntityRendererFactories.register(UBlockEntities.CLOUD_CHEST, CloudChestBlockEntityRenderer::new);
register(URenderers::renderJarItem, UItems.FILLED_JAR); register(URenderers::renderJarItem, UItems.FILLED_JAR);
register(URenderers::renderBedItem, UItems.CLOTH_BED, UItems.CLOUD_BED); 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); 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.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()); 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); 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) { private static void renderJarItem(ItemStack stack, ModelTransformationMode mode, MatrixStack matrices, VertexConsumerProvider vertices, int light, int overlay) {
ItemRenderer renderer = MinecraftClient.getInstance().getItemRenderer(); ItemRenderer renderer = MinecraftClient.getInstance().getItemRenderer();

View file

@ -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<ChestBlockEntity> {
private static final LightmapCoordinatesRetriever<ChestBlockEntity> 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<? extends ChestBlockEntity> 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);
}
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "unicopia:block/cloud_chest" }
}
}

View file

@ -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 }
}
]
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "unicopia:block/etched_cloud" }
}
}

View file

@ -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" }
}
}

View file

@ -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
}
}
}

View file

@ -298,9 +298,15 @@
"block.unicopia.dense_cloud_slab": "Dense Cloud Slab", "block.unicopia.dense_cloud_slab": "Dense Cloud Slab",
"block.unicopia.dense_cloud_stairs": "Dense Cloud Stairs", "block.unicopia.dense_cloud_stairs": "Dense Cloud Stairs",
"block.unicopia.compacted_dense_cloud": "Dense Cloud", "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.cloud_pillar": "Cloud Pillar",
"block.unicopia.cloth_bed": "Fancy Cloth Bed", "block.unicopia.cloth_bed": "Fancy Cloth Bed",
"block.unicopia.cloud_bed": "Cloud 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": "Oats",
"block.unicopia.oats_stem": "Oats", "block.unicopia.oats_stem": "Oats",

View file

@ -0,0 +1,5 @@
{
"textures": {
"particle": "unicopia:block/cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "unicopia:block/etched_cloud"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/slab",
"textures": {
"bottom": "unicopia:block/etched_cloud",
"side": "unicopia:block/etched_cloud",
"top": "unicopia:block/etched_cloud"
}
}

View file

@ -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"
}
}

View file

@ -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"
}
}

View file

@ -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"
}
}

View file

@ -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"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_full",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_x",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_xy",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_xyz",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_xz",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_y",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_yz",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "unicopia:block/flattened_cloud_corner_z",
"textures": {
"all": "unicopia:block/dense_cloud"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/chest",
"textures": {
"particle": "minecraft:item/white_wool"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "unicopia:block/etched_cloud"
}

View file

@ -0,0 +1,3 @@
{
"parent": "unicopia:block/etched_cloud_slab"
}

View file

@ -0,0 +1,3 @@
{
"parent": "unicopia:block/etched_cloud_stairs"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

View file

@ -0,0 +1,6 @@
{
"type": "unicopia:cloud_shaping",
"ingredient": { "item": "unicopia:dense_cloud" },
"result": "unicopia:etched_cloud",
"count": 1
}

View file

@ -0,0 +1,6 @@
{
"type": "unicopia:cloud_shaping",
"ingredient": { "item": "unicopia:etched_cloud" },
"result": "unicopia:etched_cloud_slab",
"count": 2
}

View file

@ -0,0 +1,6 @@
{
"type": "unicopia:cloud_shaping",
"ingredient": { "item": "unicopia:etched_cloud" },
"result": "unicopia:etched_cloud_stairs",
"count": 1
}

View file

@ -0,0 +1,14 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"# #",
"###"
],
"key": {
"#": [
{ "item": "unicopia:cloud_planks" }
]
},
"result": { "item": "unicopia:cloud_chest", "count": 1 }
}

View file

@ -4,6 +4,7 @@
"unicopia:cloud_slab", "unicopia:cloud_slab",
"unicopia:soggy_cloud_slab", "unicopia:soggy_cloud_slab",
"unicopia:dense_cloud_slab", "unicopia:dense_cloud_slab",
"unicopia:etched_cloud_slab",
"unicopia:cloud_plank_slab", "unicopia:cloud_plank_slab",
"unicopia:cloud_brick_slab" "unicopia:cloud_brick_slab"
] ]

View file

@ -4,6 +4,7 @@
"unicopia:cloud_stairs", "unicopia:cloud_stairs",
"unicopia:soggy_cloud_stairs", "unicopia:soggy_cloud_stairs",
"unicopia:dense_cloud_stairs", "unicopia:dense_cloud_stairs",
"unicopia:etched_cloud_stairs",
"unicopia:cloud_plank_stairs", "unicopia:cloud_plank_stairs",
"unicopia:cloud_brick_stairs" "unicopia:cloud_brick_stairs"
] ]

View file

@ -5,6 +5,7 @@
"unicopia:cloud_planks", "unicopia:cloud_planks",
"unicopia:cloud_bricks", "unicopia:cloud_bricks",
"unicopia:dense_cloud", "unicopia:dense_cloud",
"unicopia:etched_cloud",
"unicopia:carved_cloud", "unicopia:carved_cloud",
"unicopia:compacted_cloud", "unicopia:compacted_cloud",
"unicopia:compacted_cloud_planks", "unicopia:compacted_cloud_planks",

View file

@ -3,6 +3,7 @@
"values": [ "values": [
"unicopia:cloud_slab", "unicopia:cloud_slab",
"unicopia:dense_cloud_slab", "unicopia:dense_cloud_slab",
"unicopia:etched_cloud_slab"
"unicopia:cloud_plank_slab" "unicopia:cloud_plank_slab"
] ]
} }

View file

@ -3,6 +3,7 @@
"values": [ "values": [
"unicopia:cloud_stairs", "unicopia:cloud_stairs",
"unicopia:dense_cloud_stairs", "unicopia:dense_cloud_stairs",
"unicopia:etched_cloud_stairs",
"unicopia:cloud_plank_stairs" "unicopia:cloud_plank_stairs"
] ]
} }

View file

@ -6,6 +6,7 @@
"unicopia:cloud_planks", "unicopia:cloud_planks",
"unicopia:cloud_bricks", "unicopia:cloud_bricks",
"unicopia:dense_cloud", "unicopia:dense_cloud",
"unicopia:etched_cloud",
"unicopia:unstable_cloud" "unicopia:unstable_cloud"
] ]
} }

View file

@ -2,6 +2,7 @@
"replace": false, "replace": false,
"values": [ "values": [
"unicopia:shaping_bench", "unicopia:shaping_bench",
"unicopia:cloud_chest",
"unicopia:cloud_lump", "unicopia:cloud_lump",
"unicopia:cloud", "unicopia:cloud",
"unicopia:cloud_slab", "unicopia:cloud_slab",
@ -15,6 +16,9 @@
"unicopia:dense_cloud", "unicopia:dense_cloud",
"unicopia:dense_cloud_slab", "unicopia:dense_cloud_slab",
"unicopia:dense_cloud_stairs", "unicopia:dense_cloud_stairs",
"unicopia:etched_cloud",
"unicopia:etched_cloud_slab",
"unicopia:etched_cloud_stairs",
"unicopia:unstable_cloud", "unicopia:unstable_cloud",
"unicopia:cloud_pillar", "unicopia:cloud_pillar",
"unicopia:cloud_bed", "unicopia:cloud_bed",