mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-23 21:38:00 +01:00
Added etched clouds and cloud chests
This commit is contained in:
parent
f769568031
commit
d8565f3260
52 changed files with 1005 additions and 12 deletions
1
assets/models/cloud_chest.bbmodel
Normal file
1
assets/models/cloud_chest.bbmodel
Normal file
File diff suppressed because one or more lines are too long
32
assets/models/cloud_chest.java
Normal file
32
assets/models/cloud_chest.java
Normal 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);
|
||||
}
|
||||
}
|
BIN
assets/models/cloud_chest.png
Normal file
BIN
assets/models/cloud_chest.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
|
@ -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<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<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) {
|
||||
return Registry.register(Registries.BLOCK_ENTITY_TYPE, id, builder.build(null));
|
||||
|
|
|
@ -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 extends Block> T register(Identifier id, T block, RegistryKey<ItemGroup> 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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package com.minelittlepony.unicopia.block.cloud;
|
||||
|
||||
public interface CloudLike {
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"variants": {
|
||||
"": { "model": "unicopia:block/cloud_chest" }
|
||||
}
|
||||
}
|
|
@ -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 }
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"variants": {
|
||||
"": { "model": "unicopia:block/etched_cloud" }
|
||||
}
|
||||
}
|
|
@ -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" }
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"textures": {
|
||||
"particle": "unicopia:block/cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "unicopia:block/etched_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"parent": "minecraft:block/slab",
|
||||
"textures": {
|
||||
"bottom": "unicopia:block/etched_cloud",
|
||||
"side": "unicopia:block/etched_cloud",
|
||||
"top": "unicopia:block/etched_cloud"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_full",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_x",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_xy",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_xyz",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_xz",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_y",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_yz",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "unicopia:block/flattened_cloud_corner_z",
|
||||
"textures": {
|
||||
"all": "unicopia:block/dense_cloud"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "minecraft:item/chest",
|
||||
"textures": {
|
||||
"particle": "minecraft:item/white_wool"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "unicopia:block/etched_cloud"
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "unicopia:block/etched_cloud_slab"
|
||||
}
|
|
@ -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 |
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"type": "unicopia:cloud_shaping",
|
||||
"ingredient": { "item": "unicopia:dense_cloud" },
|
||||
"result": "unicopia:etched_cloud",
|
||||
"count": 1
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"type": "unicopia:cloud_shaping",
|
||||
"ingredient": { "item": "unicopia:etched_cloud" },
|
||||
"result": "unicopia:etched_cloud_slab",
|
||||
"count": 2
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"type": "unicopia:cloud_shaping",
|
||||
"ingredient": { "item": "unicopia:etched_cloud" },
|
||||
"result": "unicopia:etched_cloud_stairs",
|
||||
"count": 1
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"###",
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": [
|
||||
{ "item": "unicopia:cloud_planks" }
|
||||
]
|
||||
},
|
||||
"result": { "item": "unicopia:cloud_chest", "count": 1 }
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
"values": [
|
||||
"unicopia:cloud_slab",
|
||||
"unicopia:dense_cloud_slab",
|
||||
"unicopia:etched_cloud_slab"
|
||||
"unicopia:cloud_plank_slab"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
"values": [
|
||||
"unicopia:cloud_stairs",
|
||||
"unicopia:dense_cloud_stairs",
|
||||
"unicopia:etched_cloud_stairs",
|
||||
"unicopia:cloud_plank_stairs"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
"unicopia:cloud_planks",
|
||||
"unicopia:cloud_bricks",
|
||||
"unicopia:dense_cloud",
|
||||
"unicopia:etched_cloud",
|
||||
"unicopia:unstable_cloud"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in a new issue