Datagen the rest of the blocks and fix some texturing on soggy cloud blocks

This commit is contained in:
Sollace 2024-03-16 15:26:45 +00:00
parent 9db67f6727
commit 956b55dc30
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
145 changed files with 621 additions and 2471 deletions

View file

@ -40,7 +40,7 @@ import net.minecraft.world.WorldAccess;
import net.minecraft.world.WorldView;
public class SlimePustuleBlock extends Block {
private static final EnumProperty<Shape> SHAPE = EnumProperty.of("shape", Shape.class);
public static final EnumProperty<Shape> SHAPE = EnumProperty.of("shape", Shape.class);
private static final BooleanProperty POWERED = Properties.POWERED;
private static final Direction[] DIRECTIONS = Arrays.stream(Direction.values())
.filter(direction -> direction != Direction.UP)

View file

@ -1,47 +1,39 @@
package com.minelittlepony.unicopia.datagen.providers;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import com.google.gson.JsonElement;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.block.EdibleBlock;
import com.minelittlepony.unicopia.block.FruitBearingBlock;
import com.minelittlepony.unicopia.block.zap.ZapAppleLeavesBlock;
import com.minelittlepony.unicopia.server.world.ZapAppleStageStore;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.data.client.BlockStateModelGenerator;
import net.minecraft.data.client.BlockStateSupplier;
import net.minecraft.data.client.BlockStateVariant;
import net.minecraft.data.client.BlockStateVariantMap;
import net.minecraft.data.client.Model;
import net.minecraft.data.client.ModelIds;
import net.minecraft.data.client.Models;
import net.minecraft.data.client.MultipartBlockStateSupplier;
import net.minecraft.data.client.TextureKey;
import net.minecraft.data.client.TextureMap;
import net.minecraft.data.client.TexturedModel;
import net.minecraft.data.client.VariantSettings;
import net.minecraft.data.client.VariantsBlockStateSupplier;
import net.minecraft.data.client.When;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.EnumProperty;
import net.minecraft.state.property.Properties;
import net.minecraft.state.property.Property;
import net.minecraft.util.Identifier;
import net.minecraft.util.Pair;
import net.minecraft.util.StringIdentifiable;
import net.minecraft.util.math.Direction;
public interface BlockModels {
TextureKey SHELL = TextureKey.of("shell");
TextureKey STEP = TextureKey.of("step");
Model FRUIT = block("fruit", TextureKey.CROSS);
Model STRAIGHT_STAIRS = block("seethrough_stairs", TextureKey.BOTTOM, TextureKey.TOP, TextureKey.SIDE, STEP);
Model INNER_STAIRS = block("inner_seethrough_stairs", "_inner", TextureKey.BOTTOM, TextureKey.TOP, TextureKey.SIDE, STEP);
Model OUTER_STAIRS = block("outer_seethrough_stairs", "_outer", TextureKey.BOTTOM, TextureKey.TOP, TextureKey.SIDE, STEP);
Factory CROP = Factory.of(TextureMap::crop, Models.CROP);
Factory CUBE_ALL = Factory.of(TextureMap::all, Models.CUBE_ALL);
TexturedModel.Factory SPIKES = TexturedModel.makeFactory(b -> TextureMap.crop(ModelIds.getBlockModelId(b)), Models.CROP);
String[] FLATTENED_MODEL_SUFFEXES = {"xyz", "yz", "xy", "y", "xz", "z", "x", "full"};
String[] FLATTENED_MODEL_SUFFEXES_ROT = {"xyz", "xy", "yz", "y", "xz", "x", "z", "full"};
@ -53,6 +45,12 @@ public interface BlockModels {
Model[] FLATTENED_MODELS = Arrays.stream(FLATTENED_MODEL_SUFFEXES)
.map(variant -> block("flattened_corner_" + variant, "_corner_" + variant, TextureKey.ALL))
.toArray(Model[]::new);
Model[] SHELL_MODELS = IntStream.range(1, 5)
.mapToObj(i -> block("template_shell_" + i, "_" + i, SHELL))
.toArray(Model[]::new);
Model[] PIE_MODELS = Stream.of("_full", "_elbow", "_straight", "_corner")
.map(variant -> block("pie" + variant, variant, TextureKey.TOP, TextureKey.BOTTOM, TextureKey.SIDE, TextureKey.INSIDE))
.toArray(Model[]::new);
@SuppressWarnings("unchecked")
Pair<Model, String>[] BALE_MODELS = Stream.of("bnw", "bne", "bsw", "bse", "tnw", "tne", "tsw", "tse")
.map(suffex -> new Pair<>(block("template_bale_" + suffex, "_" + suffex, TextureKey.TOP, TextureKey.SIDE), "_" + suffex))
@ -74,124 +72,15 @@ public interface BlockModels {
return new Model(Optional.of(parent.withPrefixedPath("block/")), Optional.of(variant), requiredTextureKeys);
}
static void registerCompactedBlock(BlockStateModelGenerator modelGenerator, Block block) {
for (Model model : FLATTENED_MODELS) {
model.upload(block, TextureMap.all(ModelIds.getBlockModelId(block).withPath(p -> p.replace("compacted_", ""))), modelGenerator.modelCollector);
}
modelGenerator.blockStateCollector.accept(createCompactedBlockState(block));
public interface Factory {
static Factory of(Function<Identifier, TextureMap> textureFunc, Model model) {
return (block, suffix) -> TexturedModel.makeFactory(b -> textureFunc.apply(ModelIds.getBlockSubModelId(b, suffix)), model).get(block);
}
private static BlockStateSupplier createCompactedBlockState(Block block) {
MultipartBlockStateSupplier supplier = MultipartBlockStateSupplier.create(block);
for (byte i = 0; i < FLATTENED_MODEL_ROTATIONS.length; i++) {
final BooleanProperty yAxis = (i & 0b100) == 0 ? Properties.DOWN : Properties.UP;
final BooleanProperty xAxis = (i & 0b010) == 0 ? Properties.NORTH: Properties.SOUTH;
final BooleanProperty zAxis = (i & 0b001) == 0 ? Properties.EAST : Properties.WEST;
final VariantSettings.Rotation xRot = yAxis == Properties.DOWN ? VariantSettings.Rotation.R0 : VariantSettings.Rotation.R180;
final VariantSettings.Rotation yRot = FLATTENED_MODEL_ROTATIONS[i];
final String[] suffexes = yRot.ordinal() % 2 == 0 ? FLATTENED_MODEL_SUFFEXES : FLATTENED_MODEL_SUFFEXES_ROT;
for (byte v = 0; v < suffexes.length; v++) {
supplier.with(When.create()
.set(yAxis, (v & 0b100) != 0)
.set(xAxis, (v & 0b010) != 0)
.set(zAxis, (v & 0b001) != 0), BlockStateVariant.create()
.put(VariantSettings.MODEL, ModelIds.getBlockSubModelId(block, "_corner_" + suffexes[v]))
.put(VariantSettings.UVLOCK, true)
.put(VariantSettings.X, xRot)
.put(VariantSettings.Y, yRot)
);
}
}
return supplier;
}
TexturedModel get(Block block, String suffix);
static void registerChest(BlockStateModelGenerator modelGenerator, Block chest, Block particleSource) {
modelGenerator.registerBuiltin(ModelIds.getBlockModelId(chest), particleSource).includeWithoutItem(chest);
ItemModels.CHEST.upload(ModelIds.getItemModelId(chest.asItem()), TextureMap.particle(particleSource), modelGenerator.modelCollector);
default Identifier upload(Block block, String suffix, BiConsumer<Identifier, Supplier<JsonElement>> writer) {
return get(block, suffix).upload(block, suffix, writer);
}
static void registerBed(BlockStateModelGenerator modelGenerator, Block bed, Block particleSource) {
modelGenerator.registerBuiltinWithParticle(bed, ModelIds.getBlockModelId(particleSource));
modelGenerator.registerBed(bed, particleSource);
}
static void registerBale(BlockStateModelGenerator modelGenerator, Identifier blockId, Identifier baseBlockId, String endSuffex) {
Identifier top = baseBlockId.withPath(p -> "block/" + p + endSuffex);
Identifier side = baseBlockId.withPath(p -> "block/" + p + "_side");
TextureMap textures = new TextureMap().put(TextureKey.TOP, top).put(TextureKey.SIDE, side);
MultipartBlockStateSupplier supplier = MultipartBlockStateSupplier.create(Registries.BLOCK.getOrEmpty(blockId).orElseGet(() -> {
return Registry.register(Registries.BLOCK, blockId, new EdibleBlock(blockId, blockId, false));
}));
Map<Integer, Identifier> uploadedModels = new HashMap<>();
for (Direction.Axis axis : Direction.Axis.VALUES) {
for (int i = 0; i < EdibleBlock.SEGMENTS.length; i++) {
BooleanProperty segment = EdibleBlock.SEGMENTS[i];
segment.getName();
supplier.with(When.create().set(EdibleBlock.AXIS, axis).set(segment, true), BlockStateVariant.create()
.put(VariantSettings.MODEL, uploadedModels.computeIfAbsent(i, ii -> {
return BALE_MODELS[ii].getLeft().upload(blockId.withPath(p -> "block/" + p + BALE_MODELS[ii].getRight()), textures, modelGenerator.modelCollector);
}))
.put(VariantSettings.X, axis == Direction.Axis.Y ? VariantSettings.Rotation.R0 : VariantSettings.Rotation.R90)
.put(VariantSettings.Y, axis == Direction.Axis.X ? VariantSettings.Rotation.R90 : VariantSettings.Rotation.R0)
);
}
}
modelGenerator.blockStateCollector.accept(supplier);
}
static void registerCropWithoutItem(BlockStateModelGenerator modelGenerator, Block crop, Property<Integer> ageProperty, int ... stages) {
if (ageProperty.getValues().size() != stages.length) {
throw new IllegalArgumentException();
}
Int2ObjectOpenHashMap<Identifier> uploadedModels = new Int2ObjectOpenHashMap<>();
modelGenerator.blockStateCollector.accept(VariantsBlockStateSupplier.create(crop).coordinate(BlockStateVariantMap.create(ageProperty).register(integer -> {
Identifier identifier = uploadedModels.computeIfAbsent(stages[integer], stage -> modelGenerator.createSubModel(crop, "_stage" + stage, Models.CROP, TextureMap::crop));
return BlockStateVariant.create().put(VariantSettings.MODEL, identifier);
})));
}
static <T extends Enum<T> & StringIdentifiable> void registerTallCrop(BlockStateModelGenerator modelGenerator, Block crop,
Property<Integer> ageProperty,
EnumProperty<T> partProperty,
int[] ... ageTextureIndices) {
Map<String, Identifier> uploadedModels = new HashMap<>();
modelGenerator.blockStateCollector.accept(VariantsBlockStateSupplier.create(crop).coordinate(BlockStateVariantMap.create(partProperty, ageProperty).register((part, age) -> {
int i = ageTextureIndices[part.ordinal()][age];
Identifier identifier = uploadedModels.computeIfAbsent("_" + part.asString() + "_stage" + i, variant -> modelGenerator.createSubModel(crop, variant, Models.CROSS, TextureMap::cross));
return BlockStateVariant.create().put(VariantSettings.MODEL, identifier);
})));
}
static void registerFloweringLeaves(BlockStateModelGenerator modelGenerator, Block block) {
Identifier baseModel = TexturedModel.LEAVES.upload(block, modelGenerator.modelCollector);
Identifier floweringModel = Models.CUBE_ALL.upload(block, "_flowering", TextureMap.of(TextureKey.ALL, ModelIds.getBlockSubModelId(block, "_flowering")), modelGenerator.modelCollector);
modelGenerator.blockStateCollector.accept(MultipartBlockStateSupplier.create(block)
.with(BlockStateVariant.create().put(VariantSettings.MODEL, baseModel))
.with(When.create().set(FruitBearingBlock.STAGE, FruitBearingBlock.Stage.FLOWERING), BlockStateVariant.create().put(VariantSettings.MODEL, floweringModel)));
}
static void registerZapLeaves(BlockStateModelGenerator modelGenerator, Block block) {
Identifier baseModel = TexturedModel.LEAVES.upload(block, modelGenerator.modelCollector);
Identifier floweringModel = Registries.BLOCK.getId(block).withPrefixedPath("block/flowering_");
modelGenerator.blockStateCollector.accept(VariantsBlockStateSupplier.create(block)
.coordinate(BlockStateVariantMap.create(ZapAppleLeavesBlock.STAGE)
.register(stage -> BlockStateVariant.create()
.put(VariantSettings.MODEL, stage == ZapAppleStageStore.Stage.FLOWERING ? floweringModel : baseModel))));
}
static void createSproutStages(BlockStateModelGenerator modelGenerator) {
for (int i = 0; i < Models.STEM_GROWTH_STAGES.length; i++) {
Models.STEM_GROWTH_STAGES[i].upload(Unicopia.id("block/apple_sprout_stage" + i), TextureMap.stem(Blocks.MELON_STEM), modelGenerator.modelCollector);
}
}
static void registerSprout(BlockStateModelGenerator modelGenerator, Block block) {
modelGenerator.blockStateCollector.accept(VariantsBlockStateSupplier.create(block)
.coordinate(BlockStateVariantMap.create(Properties.AGE_7)
.register(age -> BlockStateVariant.create()
.put(VariantSettings.MODEL, Unicopia.id("block/apple_sprout_stage" + age)))));
}
}

View file

@ -0,0 +1,33 @@
package com.minelittlepony.unicopia.datagen.providers;
import java.util.List;
import java.util.function.UnaryOperator;
import java.util.stream.IntStream;
import java.util.stream.Stream;
import net.minecraft.block.Block;
import net.minecraft.data.client.BlockStateModelGenerator;
import net.minecraft.data.client.ModelIds;
import net.minecraft.data.client.MultipartBlockStateSupplier;
import net.minecraft.data.client.VariantSettings;
import net.minecraft.util.Identifier;
final class FireModels {
static void registerSoulFire(BlockStateModelGenerator modelGenerator, Block fire, Block texture) {
List<Identifier> floorModels = getFireModels(modelGenerator, texture, "_floor").toList();
List<Identifier> sideModels = Stream.concat(
getFireModels(modelGenerator, texture, "_side"),
getFireModels(modelGenerator, texture, "_side_alt")
).toList();
modelGenerator.blockStateCollector.accept(MultipartBlockStateSupplier.create(fire)
.with(BlockStateModelGenerator.buildBlockStateVariants(floorModels, UnaryOperator.identity()))
.with(BlockStateModelGenerator.buildBlockStateVariants(sideModels, UnaryOperator.identity()))
.with(BlockStateModelGenerator.buildBlockStateVariants(sideModels, blockStateVariant -> blockStateVariant.put(VariantSettings.Y, VariantSettings.Rotation.R90)))
.with(BlockStateModelGenerator.buildBlockStateVariants(sideModels, blockStateVariant -> blockStateVariant.put(VariantSettings.Y, VariantSettings.Rotation.R180)))
.with(BlockStateModelGenerator.buildBlockStateVariants(sideModels, blockStateVariant -> blockStateVariant.put(VariantSettings.Y, VariantSettings.Rotation.R270))));
}
private static Stream<Identifier> getFireModels(BlockStateModelGenerator modelGenerator, Block texture, String midfix) {
return IntStream.range(0, 2).mapToObj(i -> ModelIds.getBlockSubModelId(texture, midfix + i));
}
}

View file

@ -19,7 +19,9 @@ import net.minecraft.util.Identifier;
interface ItemModels {
Model GENERATED = net.minecraft.data.client.Models.GENERATED;
Model CHEST = item(new Identifier("chest"), TextureKey.PARTICLE);
Model BUILTIN_ENTITY = new Model(Optional.of(new Identifier("builtin/entity")), Optional.empty());
Model TEMPLATE_AMULET = item("template_amulet", TextureKey.LAYER0);
Model TEMPLATE_EYEWEAR = item("template_eyewear", TextureKey.LAYER0);
Model TEMPLATE_SPAWN_EGG = item(new Identifier("template_spawn_egg"));
Model TEMPLATE_MUG = item("template_mug", TextureKey.LAYER0);
Model HANDHELD_STAFF = item("handheld_staff", TextureKey.LAYER0);

View file

@ -0,0 +1,447 @@
package com.minelittlepony.unicopia.datagen.providers;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.block.EdibleBlock;
import com.minelittlepony.unicopia.block.FruitBearingBlock;
import com.minelittlepony.unicopia.block.PieBlock;
import com.minelittlepony.unicopia.block.PileBlock;
import com.minelittlepony.unicopia.block.ShellsBlock;
import com.minelittlepony.unicopia.block.SlimePustuleBlock;
import com.minelittlepony.unicopia.block.UBlocks;
import com.minelittlepony.unicopia.block.zap.ZapAppleLeavesBlock;
import com.minelittlepony.unicopia.item.UItems;
import com.minelittlepony.unicopia.server.world.Tree;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.data.client.BlockStateModelGenerator;
import net.minecraft.data.client.BlockStateVariant;
import net.minecraft.data.client.BlockStateVariantMap;
import net.minecraft.data.client.Model;
import net.minecraft.data.client.ModelIds;
import net.minecraft.data.client.Models;
import net.minecraft.data.client.MultipartBlockStateSupplier;
import net.minecraft.data.client.TextureKey;
import net.minecraft.data.client.TextureMap;
import net.minecraft.data.client.TexturedModel;
import net.minecraft.data.client.VariantSettings;
import net.minecraft.data.client.VariantsBlockStateSupplier;
import net.minecraft.data.client.When;
import net.minecraft.data.family.BlockFamily;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.state.property.BooleanProperty;
import net.minecraft.state.property.EnumProperty;
import net.minecraft.state.property.Properties;
import net.minecraft.state.property.Property;
import net.minecraft.util.Identifier;
import net.minecraft.util.Pair;
import net.minecraft.util.StringIdentifiable;
import net.minecraft.util.math.Direction;
public class UBlockStateModelGenerator extends BlockStateModelGenerator {
static final Identifier AIR_BLOCK_ID = new Identifier("block/air");
static final Identifier AIR_ITEM_ID = new Identifier("item/air");
static UBlockStateModelGenerator create(BlockStateModelGenerator modelGenerator) {
return new UBlockStateModelGenerator(modelGenerator);
}
private UBlockStateModelGenerator(BlockStateModelGenerator modelGenerator) {
super(modelGenerator.blockStateCollector,
(id, jsonSupplier) -> {
if (AIR_BLOCK_ID.equals(id) || AIR_ITEM_ID.equals(id)) {
throw new IllegalStateException("Registered air id for block model: " + jsonSupplier.get().toString());
}
modelGenerator.modelCollector.accept(id, jsonSupplier);
},
item -> modelGenerator.excludeFromSimpleItemModelGeneration(Block.getBlockFromItem(item))
);
for (int i = 0; i < Models.STEM_GROWTH_STAGES.length; i++) {
Models.STEM_GROWTH_STAGES[i].upload(Unicopia.id("block/apple_sprout_stage" + i), TextureMap.stem(Blocks.MELON_STEM), modelCollector);
}
}
@Override
public void register() {
// handmade
registerAll((g, block) -> g.registerParentedItemModel(block, ModelIds.getBlockModelId(block)), UBlocks.SHAPING_BENCH, UBlocks.SURFACE_CHITIN);
registerAll(UBlockStateModelGenerator::registerSimpleState, UBlocks.SHAPING_BENCH, UBlocks.BANANAS);
// doors
registerAll(UBlockStateModelGenerator::registerDoor, UBlocks.STABLE_DOOR, UBlocks.DARK_OAK_DOOR, UBlocks.CRYSTAL_DOOR, UBlocks.CLOUD_DOOR);
// cloud blocks
createCustomTexturePool(UBlocks.CLOUD, TexturedModel.CUBE_ALL).same(UBlocks.UNSTABLE_CLOUD).slab(UBlocks.CLOUD_SLAB).stairs(UBlocks.CLOUD_STAIRS);
createCustomTexturePool(UBlocks.ETCHED_CLOUD, TexturedModel.CUBE_ALL).slab(UBlocks.ETCHED_CLOUD_SLAB).stairs(UBlocks.ETCHED_CLOUD_STAIRS);
createCustomTexturePool(UBlocks.DENSE_CLOUD, TexturedModel.CUBE_ALL).slab(UBlocks.DENSE_CLOUD_SLAB).stairs(UBlocks.DENSE_CLOUD_STAIRS);
createCustomTexturePool(UBlocks.CLOUD_PLANKS, TexturedModel.CUBE_ALL).slab(UBlocks.CLOUD_PLANK_SLAB).stairs(UBlocks.CLOUD_PLANK_STAIRS);
createCustomTexturePool(UBlocks.CLOUD_BRICKS, TexturedModel.CUBE_ALL).slab(UBlocks.CLOUD_BRICK_SLAB).stairs(UBlocks.CLOUD_BRICK_STAIRS);
createTwoStepTexturePool(UBlocks.SOGGY_CLOUD, TexturedModel.CUBE_BOTTOM_TOP.andThen(textures -> textures.put(TextureKey.BOTTOM, ModelIds.getBlockModelId(UBlocks.CLOUD)))).slab(UBlocks.SOGGY_CLOUD_SLAB).stairs(UBlocks.SOGGY_CLOUD_STAIRS);
registerRotated(UBlocks.CARVED_CLOUD, TexturedModel.CUBE_COLUMN);
registerAll(UBlockStateModelGenerator::registerCompactedBlock, UBlocks.COMPACTED_CLOUD, UBlocks.COMPACTED_CLOUD_BRICKS, UBlocks.COMPACTED_CLOUD_PLANKS, UBlocks.COMPACTED_DENSE_CLOUD, UBlocks.COMPACTED_ETCHED_CLOUD);
registerChest(UBlocks.CLOUD_CHEST, UBlocks.CLOUD);
registerFancyBed(UBlocks.CLOUD_BED, UBlocks.CLOUD);
registerFancyBed(UBlocks.CLOTH_BED, Blocks.SPRUCE_PLANKS);
// chitin blocks
registerTopsoil(UBlocks.SURFACE_CHITIN, UBlocks.CHITIN);
registerHollow(UBlocks.CHITIN);
registerCubeAllModelTexturePool(UBlocks.CHISELLED_CHITIN).stairs(UBlocks.CHISELLED_CHITIN_STAIRS).slab(UBlocks.CHISELLED_CHITIN_SLAB);
registerHiveBlock(UBlocks.HIVE);
registerRotated(UBlocks.CHITIN_SPIKES, BlockModels.SPIKES);
registerHull(UBlocks.CHISELLED_CHITIN_HULL, UBlocks.CHITIN, UBlocks.CHISELLED_CHITIN);
registerParentedItemModel(UBlocks.SLIME_PUSTULE, ModelIds.getBlockSubModelId(UBlocks.SLIME_PUSTULE, "_pod"));
blockStateCollector.accept(VariantsBlockStateSupplier.create(UBlocks.SLIME_PUSTULE)
.coordinate(BlockStateVariantMap.create(SlimePustuleBlock.SHAPE)
.register(state -> BlockStateVariant.create().put(VariantSettings.MODEL, ModelIds.getBlockSubModelId(UBlocks.SLIME_PUSTULE, "_" + state.asString())))));
registerPie(UBlocks.APPLE_PIE);
// palm wood
registerLog(UBlocks.PALM_LOG).log(UBlocks.PALM_LOG).wood(UBlocks.PALM_WOOD);
registerLog(UBlocks.STRIPPED_PALM_LOG).log(UBlocks.STRIPPED_PALM_LOG).wood(UBlocks.STRIPPED_PALM_WOOD);
registerCubeAllModelTexturePool(UBlocks.PALM_PLANKS).family(new BlockFamily.Builder(UBlocks.PALM_PLANKS)
.slab(UBlocks.PALM_SLAB).stairs(UBlocks.PALM_STAIRS).fence(UBlocks.PALM_FENCE).fenceGate(UBlocks.PALM_FENCE_GATE)
.button(UBlocks.PALM_BUTTON).pressurePlate(UBlocks.PALM_PRESSURE_PLATE).sign(UBlocks.PALM_SIGN, UBlocks.PALM_WALL_SIGN)
.door(UBlocks.PALM_DOOR).trapdoor(UBlocks.PALM_TRAPDOOR)
.group("wooden").unlockCriterionName("has_planks")
.build());
registerHangingSign(UBlocks.STRIPPED_PALM_LOG, UBlocks.PALM_HANGING_SIGN, UBlocks.PALM_WALL_HANGING_SIGN);
registerSimpleCubeAll(UBlocks.PALM_LEAVES);
// zap wood
registerLog(UBlocks.ZAP_LOG)
.log(UBlocks.ZAP_LOG).wood(UBlocks.ZAP_WOOD)
.log(UBlocks.WAXED_ZAP_LOG).wood(UBlocks.WAXED_ZAP_WOOD);
registerLog(UBlocks.STRIPPED_ZAP_LOG)
.log(UBlocks.STRIPPED_ZAP_LOG).wood(UBlocks.STRIPPED_ZAP_WOOD)
.log(UBlocks.WAXED_STRIPPED_ZAP_LOG).wood(UBlocks.WAXED_STRIPPED_ZAP_WOOD);
registerCubeAllModelTexturePool(UBlocks.ZAP_PLANKS)
.family(new BlockFamily.Builder(UBlocks.ZAP_PLANKS)
.slab(UBlocks.ZAP_SLAB).stairs(UBlocks.ZAP_STAIRS).fence(UBlocks.ZAP_FENCE).fenceGate(UBlocks.ZAP_FENCE_GATE)
.group("wooden").unlockCriterionName("has_planks")
.build())
.same(UBlocks.WAXED_ZAP_PLANKS).family(new BlockFamily.Builder(UBlocks.WAXED_ZAP_PLANKS)
.slab(UBlocks.WAXED_ZAP_SLAB).stairs(UBlocks.WAXED_ZAP_STAIRS).fence(UBlocks.WAXED_ZAP_FENCE).fenceGate(UBlocks.WAXED_ZAP_FENCE_GATE)
.group("wooden").unlockCriterionName("has_planks")
.build());
registerZapLeaves(UBlocks.ZAP_LEAVES);
registerSingleton(UBlocks.FLOWERING_ZAP_LEAVES, TexturedModel.LEAVES);
registerStateWithModelReference(UBlocks.ZAP_LEAVES_PLACEHOLDER, Blocks.AIR);
// golden oak wood
registerSimpleCubeAll(UBlocks.GOLDEN_OAK_LEAVES);
registerLog(UBlocks.GOLDEN_OAK_LOG).log(UBlocks.GOLDEN_OAK_LOG);
// plants
Tree.REGISTRY.stream().filter(tree -> tree.sapling().isPresent()).forEach(tree -> registerFlowerPotPlant(tree.sapling().get(), tree.pot().get(), TintType.NOT_TINTED));
registerTintableCross(UBlocks.CURING_JOKE, TintType.NOT_TINTED);
registerWithStages(UBlocks.GOLD_ROOT, Properties.AGE_7, BlockModels.CROP, 0, 0, 1, 1, 2, 2, 2, 3);
registerWithStages(UBlocks.OATS, UBlocks.OATS.getAgeProperty(), BlockModels.CROP, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
registerWithStages(UBlocks.OATS_STEM, UBlocks.OATS_STEM.getAgeProperty(), BlockModels.CROP, 0, 1, 2, 3, 4, 5, 6);
registerWithStages(UBlocks.OATS_CROWN, UBlocks.OATS_CROWN.getAgeProperty(), BlockModels.CROP, 0, 1);
registerTallCrop(UBlocks.PINEAPPLE, Properties.AGE_7, Properties.BLOCK_HALF,
new int[] { 0, 1, 2, 3, 4, 5, 5, 6 },
new int[] { 0, 0, 1, 2, 3, 4, 5, 6 }
);
registerParentedItemModel(UBlocks.PLUNDER_VINE_BUD, ModelIds.getBlockModelId(UBlocks.PLUNDER_VINE_BUD));
// leaves
registerAll(UBlockStateModelGenerator::registerFloweringLeaves, UBlocks.GREEN_APPLE_LEAVES, UBlocks.SOUR_APPLE_LEAVES, UBlocks.SWEET_APPLE_LEAVES);
registerAll(UBlockStateModelGenerator::registerSprout, UBlocks.GREEN_APPLE_SPROUT, UBlocks.SOUR_APPLE_SPROUT, UBlocks.SWEET_APPLE_SPROUT, UBlocks.GOLDEN_OAK_SPROUT);
registerStateWithModelReference(UBlocks.MANGO_LEAVES, Blocks.JUNGLE_LEAVES);
registerParentedItemModel(UBlocks.MANGO_LEAVES, ModelIds.getBlockModelId(Blocks.JUNGLE_LEAVES));
// fruit
Map.of(UBlocks.GREEN_APPLE, UItems.GREEN_APPLE,
UBlocks.GOLDEN_APPLE, Items.GOLDEN_APPLE,
UBlocks.MANGO, UItems.MANGO,
UBlocks.SOUR_APPLE, UItems.SOUR_APPLE,
UBlocks.SWEET_APPLE, UItems.SWEET_APPLE,
UBlocks.ZAP_APPLE, UItems.ZAP_APPLE,
UBlocks.ZAP_BULB, UItems.ZAP_BULB
).forEach((block, item) -> registerSingleton(block, TextureMap.cross(ModelIds.getItemModelId(item)), BlockModels.FRUIT));
// bales
registerAll((g, block) -> g.registerBale(Unicopia.id(block.getLeft().getPath().replace("bale", "block")), block.getLeft(), block.getRight()),
new Pair<>(new Identifier("hay_block"), "_top"),
new Pair<>(new Identifier("farmersdelight", "rice_bale"), "_top"),
new Pair<>(new Identifier("farmersdelight", "straw_bale"), "_end")
);
// shells
registerAll(UBlockStateModelGenerator::registerShell, UBlocks.CLAM_SHELL, UBlocks.TURRET_SHELL, UBlocks.SCALLOP_SHELL);
// other
registerBuiltinWithParticle(UBlocks.WEATHER_VANE, UBlocks.WEATHER_VANE.asItem());
registerWithStages(UBlocks.FROSTED_OBSIDIAN, Properties.AGE_3, BlockModels.CUBE_ALL, 0, 1, 2, 3);
registerWithStagesBuiltinModels(UBlocks.ROCKS, Properties.AGE_7, 0, 1, 2, 3, 4, 5, 6, 7);
registerWithStagesBuiltinModels(UBlocks.MYSTERIOUS_EGG, PileBlock.COUNT, 1, 2, 3);
excludeFromSimpleItemModelGeneration(UBlocks.MYSTERIOUS_EGG);
FireModels.registerSoulFire(this, UBlocks.SPECTRAL_FIRE, Blocks.SOUL_FIRE);
}
@SafeVarargs
public final <T> UBlockStateModelGenerator registerAll(BiConsumer<? super UBlockStateModelGenerator, T> register, T... blocks) {
for (T block : blocks) {
register.accept(this, block);
}
return this;
}
@Override
public void registerParentedItemModel(Block block, Identifier parentModelId) {
Item item = block.asItem();
if (item != Items.AIR) {
registerParentedItemModel(item, parentModelId);
}
}
public BlockTexturePool createCustomTexturePool(Block block, TexturedModel.Factory modelFactory) {
final TexturedModel texturedModel = modelFactory.get(block);
final TextureMap textures = texturedModel.getTextures();
return (new BlockTexturePool(textures) {
@Override
public BlockTexturePool stairs(Block block) {
TextureMap textMap = textures.copyAndAdd(BlockModels.STEP, textures.getTexture(TextureKey.SIDE));
Identifier inner = BlockModels.INNER_STAIRS.upload(block, textMap, modelCollector);
Identifier straight = BlockModels.STRAIGHT_STAIRS.upload(block, textMap, modelCollector);
Identifier outer = BlockModels.OUTER_STAIRS.upload(block, textMap, modelCollector);
blockStateCollector.accept(BlockStateModelGenerator.createStairsBlockState(block, inner, straight, outer));
registerParentedItemModel(block, straight);
return this;
}
}).base(block, texturedModel.getModel());
}
public BlockTexturePool createTwoStepTexturePool(Block block, TexturedModel.Factory modelFactory) {
final TexturedModel texturedModel = modelFactory.get(block);
final TextureMap textures = texturedModel.getTextures();
final Identifier baseModelId = ModelIds.getBlockModelId(block);
final Identifier twoStepTexture = ModelIds.getBlockSubModelId(block, "_slab_side");
return (new BlockTexturePool(textures) {
@Override
public BlockTexturePool stairs(Block block) {
TextureMap textMap = textures.copyAndAdd(BlockModels.STEP, twoStepTexture);
Identifier inner = BlockModels.INNER_STAIRS.upload(block, textMap, modelCollector);
Identifier straight = BlockModels.STRAIGHT_STAIRS.upload(block, textMap, modelCollector);
Identifier outer = BlockModels.OUTER_STAIRS.upload(block, textMap, modelCollector);
blockStateCollector.accept(BlockStateModelGenerator.createStairsBlockState(block, inner, straight, outer));
registerParentedItemModel(block, straight);
return this;
}
@Override
public BlockTexturePool slab(Block block) {
TextureMap textMap = textures.copyAndAdd(TextureKey.SIDE, twoStepTexture);
Identifier lower = Models.SLAB.upload(block, textMap, modelCollector);
Identifier upper = Models.SLAB_TOP.upload(block, textMap, modelCollector);
blockStateCollector.accept(BlockStateModelGenerator.createSlabBlockState(block, lower, upper, baseModelId));
registerParentedItemModel(block, lower);
return this;
}
}).base(block, texturedModel.getModel());
}
public void registerTopsoil(Block block, Block dirt) {
TexturedModel model = TexturedModel.CUBE_BOTTOM_TOP.get(dirt);
registerTopSoil(block,
model.upload(block, modelCollector),
BlockStateVariant.create().put(VariantSettings.MODEL, Models.CUBE_BOTTOM_TOP.upload(dirt, "_snow", model.getTextures()
.copyAndAdd(TextureKey.SIDE, ModelIds.getBlockSubModelId(dirt, "_side_snow_covered")
), modelCollector))
);
}
public void registerHollow(Block block) {
Identifier outside = ModelIds.getBlockModelId(UBlocks.CHITIN);
Identifier inside = ModelIds.getBlockSubModelId(UBlocks.CHITIN, "_bottom");
registerSingleton(UBlocks.CHITIN, new TextureMap()
.put(TextureKey.SIDE, outside)
.put(TextureKey.TOP, outside)
.put(TextureKey.BOTTOM, inside), Models.CUBE_BOTTOM_TOP);
}
public void registerRotated(Block block, TexturedModel.Factory modelFactory) {
Identifier modelId = modelFactory.get(block).upload(block, modelCollector);
blockStateCollector.accept(VariantsBlockStateSupplier.create(block, BlockStateVariant.create()
.put(VariantSettings.MODEL, modelId))
.coordinate(createUpDefaultFacingVariantMap()));
}
public void registerCompactedBlock(Block block) {
for (Model model : BlockModels.FLATTENED_MODELS) {
model.upload(block, TextureMap.all(ModelIds.getBlockModelId(block).withPath(p -> p.replace("compacted_", ""))), modelCollector);
}
MultipartBlockStateSupplier supplier = MultipartBlockStateSupplier.create(block);
for (byte i = 0; i < BlockModels.FLATTENED_MODEL_ROTATIONS.length; i++) {
final BooleanProperty yAxis = (i & 0b100) == 0 ? Properties.DOWN : Properties.UP;
final BooleanProperty xAxis = (i & 0b010) == 0 ? Properties.NORTH: Properties.SOUTH;
final BooleanProperty zAxis = (i & 0b001) == 0 ? Properties.EAST : Properties.WEST;
final VariantSettings.Rotation xRot = yAxis == Properties.DOWN ? VariantSettings.Rotation.R0 : VariantSettings.Rotation.R180;
final VariantSettings.Rotation yRot = BlockModels.FLATTENED_MODEL_ROTATIONS[i];
final String[] suffexes = yRot.ordinal() % 2 == 0 ? BlockModels.FLATTENED_MODEL_SUFFEXES : BlockModels.FLATTENED_MODEL_SUFFEXES_ROT;
for (byte v = 0; v < suffexes.length; v++) {
supplier.with(When.create()
.set(yAxis, (v & 0b100) != 0)
.set(xAxis, (v & 0b010) != 0)
.set(zAxis, (v & 0b001) != 0), BlockStateVariant.create()
.put(VariantSettings.MODEL, ModelIds.getBlockSubModelId(block, "_corner_" + suffexes[v]))
.put(VariantSettings.UVLOCK, true)
.put(VariantSettings.X, xRot)
.put(VariantSettings.Y, yRot)
);
}
}
blockStateCollector.accept(supplier);
}
public void registerChest(Block chest, Block particleSource) {
registerBuiltin(ModelIds.getBlockModelId(chest), particleSource).includeWithoutItem(chest);
ItemModels.CHEST.upload(ModelIds.getItemModelId(chest.asItem()), TextureMap.particle(particleSource), modelCollector);
}
public void registerFancyBed(Block bed, Block particleSource) {
registerBuiltinWithParticle(bed, ModelIds.getBlockModelId(particleSource));
super.registerBed(bed, particleSource);
}
public void registerHiveBlock(Block hive) {
Identifier core = ModelIds.getBlockSubModelId(hive, "_core");
Identifier side = ModelIds.getBlockSubModelId(hive, "_side");
blockStateCollector.accept(MultipartBlockStateSupplier.create(hive)
.with(BlockStateVariant.create().put(VariantSettings.MODEL, core))
.with(When.create().set(Properties.NORTH, true), BlockStateVariant.create().put(VariantSettings.MODEL, side).put(VariantSettings.UVLOCK, true))
.with(When.create().set(Properties.EAST, true), BlockStateVariant.create().put(VariantSettings.MODEL, side).put(VariantSettings.UVLOCK, true).put(VariantSettings.Y, VariantSettings.Rotation.R90))
.with(When.create().set(Properties.SOUTH, true), BlockStateVariant.create().put(VariantSettings.MODEL, side).put(VariantSettings.UVLOCK, true).put(VariantSettings.Y, VariantSettings.Rotation.R180))
.with(When.create().set(Properties.WEST, true), BlockStateVariant.create().put(VariantSettings.MODEL, side).put(VariantSettings.UVLOCK, true).put(VariantSettings.Y, VariantSettings.Rotation.R270))
.with(When.create().set(Properties.DOWN, true), BlockStateVariant.create().put(VariantSettings.MODEL, side).put(VariantSettings.UVLOCK, true).put(VariantSettings.X, VariantSettings.Rotation.R90))
.with(When.create().set(Properties.UP, true), BlockStateVariant.create().put(VariantSettings.MODEL, side).put(VariantSettings.UVLOCK, true).put(VariantSettings.X, VariantSettings.Rotation.R270)));
Models.CUBE_ALL.upload(ModelIds.getItemModelId(hive.asItem()), TextureMap.all(ModelIds.getBlockSubModelId(hive, "_side")), modelCollector);
}
public void registerBale(Identifier blockId, Identifier baseBlockId, String endSuffex) {
Identifier top = baseBlockId.withPath(p -> "block/" + p + endSuffex);
Identifier side = baseBlockId.withPath(p -> "block/" + p + "_side");
TextureMap textures = new TextureMap().put(TextureKey.TOP, top).put(TextureKey.SIDE, side);
MultipartBlockStateSupplier supplier = MultipartBlockStateSupplier.create(Registries.BLOCK.getOrEmpty(blockId).orElseGet(() -> {
return Registry.register(Registries.BLOCK, blockId, new EdibleBlock(blockId, blockId, false));
}));
Map<Integer, Identifier> uploadedModels = new HashMap<>();
for (Direction.Axis axis : Direction.Axis.VALUES) {
for (int i = 0; i < EdibleBlock.SEGMENTS.length; i++) {
BooleanProperty segment = EdibleBlock.SEGMENTS[i];
segment.getName();
supplier.with(When.create().set(EdibleBlock.AXIS, axis).set(segment, true), BlockStateVariant.create()
.put(VariantSettings.MODEL, uploadedModels.computeIfAbsent(i, ii -> {
return BlockModels.BALE_MODELS[ii].getLeft().upload(blockId.withPath(p -> "block/" + p + BlockModels.BALE_MODELS[ii].getRight()), textures, modelCollector);
}))
.put(VariantSettings.X, axis == Direction.Axis.Y ? VariantSettings.Rotation.R0 : VariantSettings.Rotation.R90)
.put(VariantSettings.Y, axis == Direction.Axis.X ? VariantSettings.Rotation.R90 : VariantSettings.Rotation.R0)
);
}
}
blockStateCollector.accept(supplier);
}
public void registerWithStages(Block crop, Property<Integer> ageProperty, BlockModels.Factory modelFactory, int ... stages) {
if (ageProperty.getValues().size() != stages.length) {
throw new IllegalArgumentException();
}
int offset = ageProperty.getValues().iterator().next();
Int2ObjectOpenHashMap<Identifier> uploadedModels = new Int2ObjectOpenHashMap<>();
blockStateCollector.accept(VariantsBlockStateSupplier.create(crop)
.coordinate(BlockStateVariantMap.create(ageProperty)
.register(age -> BlockStateVariant.create().put(VariantSettings.MODEL, uploadedModels.computeIfAbsent(stages[age - offset], stage -> {
return modelFactory.upload(crop, "_stage" + stage, modelCollector);
})))));
}
public void registerWithStagesBuiltinModels(Block crop, Property<Integer> ageProperty, int ... stages) {
if (ageProperty.getValues().size() != stages.length) {
throw new IllegalArgumentException();
}
int offset = ageProperty.getValues().iterator().next();
blockStateCollector.accept(VariantsBlockStateSupplier.create(crop)
.coordinate(BlockStateVariantMap.create(ageProperty)
.register(age -> BlockStateVariant.create().put(VariantSettings.MODEL, ModelIds.getBlockSubModelId(crop, "_stage" + stages[age - offset])))));
}
public <T extends Enum<T> & StringIdentifiable> void registerTallCrop(Block crop,
Property<Integer> ageProperty,
EnumProperty<T> partProperty,
int[] ... ageTextureIndices) {
Map<String, Identifier> uploadedModels = new HashMap<>();
blockStateCollector.accept(VariantsBlockStateSupplier.create(crop).coordinate(BlockStateVariantMap.create(partProperty, ageProperty).register((part, age) -> {
int i = ageTextureIndices[part.ordinal()][age];
Identifier identifier = uploadedModels.computeIfAbsent("_" + part.asString() + "_stage" + i, variant -> createSubModel(crop, variant, Models.CROSS, TextureMap::cross));
return BlockStateVariant.create().put(VariantSettings.MODEL, identifier);
})));
}
public void registerPie(Block pie) {
TextureMap textures = new TextureMap()
.put(TextureKey.TOP, ModelIds.getBlockSubModelId(pie, "_top"))
.put(TextureKey.BOTTOM, ModelIds.getBlockSubModelId(pie, "_bottom"))
.put(TextureKey.SIDE, ModelIds.getBlockSubModelId(pie, "_side"))
.put(TextureKey.INSIDE, ModelIds.getBlockSubModelId(pie, "_inside"));
TextureMap stompedTextures = textures.copyAndAdd(TextureKey.TOP, ModelIds.getBlockSubModelId(pie, "_top_stomped"));
blockStateCollector.accept(VariantsBlockStateSupplier.create(pie).coordinate(BlockStateVariantMap.create(PieBlock.BITES, PieBlock.STOMPED).register((bites, stomped) -> {
return BlockStateVariant.create().put(VariantSettings.MODEL, BlockModels.PIE_MODELS[bites].upload(pie, (stomped ? "_stomped" : ""), stomped ? stompedTextures : textures, modelCollector));
})));
}
public void registerFloweringLeaves(Block block) {
Identifier baseModel = TexturedModel.LEAVES.upload(block, modelCollector);
Identifier floweringModel = Models.CUBE_ALL.upload(block, "_flowering", TextureMap.of(TextureKey.ALL, ModelIds.getBlockSubModelId(block, "_flowering")), modelCollector);
blockStateCollector.accept(MultipartBlockStateSupplier.create(block)
.with(BlockStateVariant.create().put(VariantSettings.MODEL, baseModel))
.with(When.create().set(FruitBearingBlock.STAGE, FruitBearingBlock.Stage.FLOWERING), BlockStateVariant.create().put(VariantSettings.MODEL, floweringModel)));
}
public void registerZapLeaves(Block block) {
Identifier baseModel = TexturedModel.LEAVES.upload(block, modelCollector);
Identifier floweringModel = Registries.BLOCK.getId(block).withPrefixedPath("block/flowering_");
Identifier airModel = ModelIds.getBlockModelId(Blocks.AIR);
blockStateCollector.accept(VariantsBlockStateSupplier.create(block)
.coordinate(BlockStateVariantMap.create(ZapAppleLeavesBlock.STAGE)
.register(stage -> BlockStateVariant.create()
.put(VariantSettings.MODEL, switch (stage) {
case HIBERNATING -> airModel;
case FLOWERING -> floweringModel;
default -> baseModel;
}))));
}
public void registerSprout(Block sprout) {
blockStateCollector.accept(VariantsBlockStateSupplier.create(sprout)
.coordinate(BlockStateVariantMap.create(Properties.AGE_7)
.register(age -> BlockStateVariant.create()
.put(VariantSettings.MODEL, Unicopia.id("block/apple_sprout_stage" + age)))));
}
public void registerShell(Block shell) {
blockStateCollector.accept(VariantsBlockStateSupplier.create(shell)
.coordinate(BlockStateVariantMap.create(ShellsBlock.COUNT)
.register(count -> BlockStateVariant.create()
.put(VariantSettings.MODEL, BlockModels.SHELL_MODELS[count - 1].upload(shell, TextureMap.of(BlockModels.SHELL, Registries.BLOCK.getId(shell).withPrefixedPath("item/")), modelCollector)))));
}
public void registerHull(Block block, Block core, Block shell) {
blockStateCollector.accept(VariantsBlockStateSupplier.create(
block,
BlockStateVariant.create().put(VariantSettings.MODEL, Models.CUBE_BOTTOM_TOP.upload(block, new TextureMap()
.put(TextureKey.BOTTOM, ModelIds.getBlockModelId(core))
.put(TextureKey.TOP, ModelIds.getBlockModelId(shell))
.put(TextureKey.SIDE, ModelIds.getBlockSubModelId(shell, "_half")), modelCollector))
).coordinate(createUpDefaultFacingVariantMap()));
}
}

View file

@ -1,32 +1,19 @@
package com.minelittlepony.unicopia.datagen.providers;
import java.util.List;
import java.util.Map;
import com.minelittlepony.unicopia.Race;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.block.UBlocks;
import com.minelittlepony.unicopia.item.BedsheetsItem;
import com.minelittlepony.unicopia.item.UItems;
import com.minelittlepony.unicopia.server.world.Tree;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.data.client.BlockStateModelGenerator;
import net.minecraft.data.client.BlockStateModelGenerator.TintType;
import net.minecraft.data.family.BlockFamily;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
import net.minecraft.state.property.Properties;
import net.minecraft.util.Identifier;
import net.minecraft.util.Pair;
import net.minecraft.data.client.ItemModelGenerator;
import net.minecraft.data.client.ModelIds;
import net.minecraft.data.client.TextureKey;
import net.minecraft.data.client.TextureMap;
import net.minecraft.data.client.TexturedModel;
public class UModelProvider extends FabricModelProvider {
public UModelProvider(FabricDataOutput output) {
@ -34,106 +21,8 @@ public class UModelProvider extends FabricModelProvider {
}
@Override
public void generateBlockStateModels(BlockStateModelGenerator modelGenerator) {
// cloud blocks
modelGenerator.registerCubeAllModelTexturePool(UBlocks.CLOUD).slab(UBlocks.CLOUD_SLAB);//.stairs(UBlocks.CLOUD_STAIRS);
modelGenerator.registerCubeAllModelTexturePool(UBlocks.ETCHED_CLOUD).slab(UBlocks.ETCHED_CLOUD_SLAB);//.stairs(UBlocks.ETCHED_CLOUD_STAIRS);
modelGenerator.registerCubeAllModelTexturePool(UBlocks.DENSE_CLOUD).slab(UBlocks.DENSE_CLOUD_SLAB);//.stairs(UBlocks.DENSE_CLOUD_STAIRS);
modelGenerator.registerCubeAllModelTexturePool(UBlocks.CLOUD_PLANKS).slab(UBlocks.CLOUD_PLANK_SLAB);//.stairs(UBlocks.CLOUD_PLANK_STAIRS);
modelGenerator.registerCubeAllModelTexturePool(UBlocks.CLOUD_BRICKS).slab(UBlocks.CLOUD_BRICK_SLAB);//.stairs(UBlocks.CLOUD_PLANK_STAIRS);
List.of(UBlocks.COMPACTED_CLOUD, UBlocks.COMPACTED_CLOUD_BRICKS, UBlocks.COMPACTED_CLOUD_PLANKS, UBlocks.COMPACTED_DENSE_CLOUD, UBlocks.COMPACTED_ETCHED_CLOUD).forEach(block -> {
BlockModels.registerCompactedBlock(modelGenerator, block);
});
BlockModels.registerChest(modelGenerator, UBlocks.CLOUD_CHEST, UBlocks.CLOUD);
BlockModels.registerBed(modelGenerator, UBlocks.CLOUD_BED, UBlocks.CLOUD);
BlockModels.registerBed(modelGenerator, UBlocks.CLOTH_BED, Blocks.SPRUCE_PLANKS);
// doors
List.of(UBlocks.STABLE_DOOR, UBlocks.DARK_OAK_DOOR, UBlocks.CRYSTAL_DOOR, UBlocks.CLOUD_DOOR).forEach(modelGenerator::registerDoor);
// chitin blocks
modelGenerator.registerCubeAllModelTexturePool(UBlocks.CHISELLED_CHITIN).stairs(UBlocks.CHISELLED_CHITIN_STAIRS).slab(UBlocks.CHISELLED_CHITIN_SLAB);
// palm wood
registerLogSet(modelGenerator, UBlocks.PALM_LOG, UBlocks.PALM_WOOD);
registerLogSet(modelGenerator, UBlocks.STRIPPED_PALM_LOG, UBlocks.STRIPPED_PALM_WOOD);
modelGenerator.registerCubeAllModelTexturePool(UBlocks.PALM_PLANKS).family(new BlockFamily.Builder(UBlocks.PALM_PLANKS)
.slab(UBlocks.PALM_SLAB).stairs(UBlocks.PALM_STAIRS).fence(UBlocks.PALM_FENCE).fenceGate(UBlocks.PALM_FENCE_GATE)
.button(UBlocks.PALM_BUTTON).pressurePlate(UBlocks.PALM_PRESSURE_PLATE).sign(UBlocks.PALM_SIGN, UBlocks.PALM_WALL_SIGN)
.door(UBlocks.PALM_DOOR).trapdoor(UBlocks.PALM_TRAPDOOR)
.group("wooden").unlockCriterionName("has_planks")
.build());
modelGenerator.registerHangingSign(UBlocks.STRIPPED_PALM_LOG, UBlocks.PALM_HANGING_SIGN, UBlocks.PALM_WALL_HANGING_SIGN);
modelGenerator.registerSimpleCubeAll(UBlocks.PALM_LEAVES);
// zap wood
modelGenerator.registerLog(UBlocks.ZAP_LOG)
.log(UBlocks.ZAP_LOG).wood(UBlocks.ZAP_WOOD)
.log(UBlocks.WAXED_ZAP_LOG).wood(UBlocks.WAXED_ZAP_WOOD);
modelGenerator.registerLog(UBlocks.STRIPPED_ZAP_LOG)
.log(UBlocks.STRIPPED_ZAP_LOG).wood(UBlocks.STRIPPED_ZAP_WOOD)
.log(UBlocks.WAXED_STRIPPED_ZAP_LOG).wood(UBlocks.WAXED_STRIPPED_ZAP_WOOD);
modelGenerator.registerCubeAllModelTexturePool(UBlocks.ZAP_PLANKS)
.family(new BlockFamily.Builder(UBlocks.ZAP_PLANKS)
.slab(UBlocks.ZAP_SLAB).stairs(UBlocks.ZAP_STAIRS).fence(UBlocks.ZAP_FENCE).fenceGate(UBlocks.ZAP_FENCE_GATE)
.group("wooden").unlockCriterionName("has_planks")
.build())
.same(UBlocks.WAXED_ZAP_PLANKS).family(new BlockFamily.Builder(UBlocks.WAXED_ZAP_PLANKS)
.slab(UBlocks.WAXED_ZAP_SLAB).stairs(UBlocks.WAXED_ZAP_STAIRS).fence(UBlocks.WAXED_ZAP_FENCE).fenceGate(UBlocks.WAXED_ZAP_FENCE_GATE)
.group("wooden").unlockCriterionName("has_planks")
.build());
BlockModels.registerZapLeaves(modelGenerator, UBlocks.ZAP_LEAVES);
modelGenerator.registerSingleton(UBlocks.FLOWERING_ZAP_LEAVES, TexturedModel.LEAVES);
// golden oak wood
modelGenerator.registerSimpleCubeAll(UBlocks.GOLDEN_OAK_LEAVES);
modelGenerator.registerLog(UBlocks.GOLDEN_OAK_LOG)
.log(UBlocks.GOLDEN_OAK_LOG);
// plants
Tree.REGISTRY.stream().filter(tree -> tree.sapling().isPresent()).forEach(tree -> {
modelGenerator.registerFlowerPotPlant(tree.sapling().get(), tree.pot().get(), TintType.NOT_TINTED);
});
modelGenerator.registerTintableCross(UBlocks.CURING_JOKE, TintType.NOT_TINTED);
modelGenerator.registerCrop(UBlocks.GOLD_ROOT, Properties.AGE_7, 0, 0, 1, 1, 2, 2, 2, 3);
BlockModels.registerCropWithoutItem(modelGenerator, UBlocks.OATS, UBlocks.OATS.getAgeProperty(), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
BlockModels.registerCropWithoutItem(modelGenerator, UBlocks.OATS_STEM, UBlocks.OATS_STEM.getAgeProperty(), 0, 1, 2, 3, 4, 5, 6);
BlockModels.registerCropWithoutItem(modelGenerator, UBlocks.OATS_CROWN, UBlocks.OATS_CROWN.getAgeProperty(), 0, 1);
BlockModels.registerTallCrop(modelGenerator, UBlocks.PINEAPPLE, Properties.AGE_7, Properties.BLOCK_HALF,
new int[] { 0, 1, 2, 3, 4, 5, 5, 6 },
new int[] { 0, 0, 1, 2, 3, 4, 5, 6 }
);
// leaves
List.of(UBlocks.GREEN_APPLE_LEAVES, UBlocks.SOUR_APPLE_LEAVES, UBlocks.SWEET_APPLE_LEAVES).forEach(block -> {
BlockModels.registerFloweringLeaves(modelGenerator, block);
});
BlockModels.createSproutStages(modelGenerator);
List.of(UBlocks.GREEN_APPLE_SPROUT, UBlocks.SOUR_APPLE_SPROUT, UBlocks.SWEET_APPLE_SPROUT, UBlocks.GOLDEN_OAK_SPROUT).forEach(block -> {
BlockModels.registerSprout(modelGenerator, block);
});
// fruit
Map.of(UBlocks.GREEN_APPLE, UItems.GREEN_APPLE,
UBlocks.GOLDEN_APPLE, Items.GOLDEN_APPLE,
UBlocks.MANGO, UItems.MANGO,
UBlocks.SOUR_APPLE, UItems.SOUR_APPLE,
UBlocks.SWEET_APPLE, UItems.SWEET_APPLE,
UBlocks.ZAP_APPLE, UItems.ZAP_APPLE,
UBlocks.ZAP_BULB, UItems.ZAP_BULB
).forEach((block, item) -> {
modelGenerator.registerSingleton(block, TextureMap.cross(Registries.ITEM.getId(item).withPrefixedPath("item/")), BlockModels.FRUIT);
});
// bales
List.of(
new Pair<>(new Identifier("hay_block"), "_top"),
new Pair<>(new Identifier("farmersdelight", "rice_bale"), "_top"),
new Pair<>(new Identifier("farmersdelight", "straw_bale"), "_end")
).forEach(block -> {
BlockModels.registerBale(modelGenerator, Unicopia.id(block.getLeft().getPath().replace("bale", "block")), block.getLeft(), block.getRight());
});
public void generateBlockStateModels(BlockStateModelGenerator modelGenerator0) {
UBlockStateModelGenerator.create(modelGenerator0).register();
}
@Override
@ -141,7 +30,7 @@ public class UModelProvider extends FabricModelProvider {
ItemModels.register(itemModelGenerator,
UItems.ACORN, UItems.APPLE_PIE_HOOF, UItems.APPLE_PIE_SLICE, UItems.APPLE_PIE,
UItems.BANANA, UItems.BOTCHED_GEM, UItems.BROKEN_SUNGLASSES, UItems.BURNED_JUICE, UItems.BURNED_TOAST,
UItems.CARAPACE, UItems.CLAM_SHELL, UItems.COOKED_ZAP_APPLE, UItems.CRISPY_HAY_FRIES, UItems.CRYSTAL_HEART, UItems.CRYSTAL_SHARD,
UItems.CARAPACE, UItems.CLAM_SHELL, UItems.COOKED_ZAP_APPLE, UItems.CLOUD_LUMP, UItems.CRISPY_HAY_FRIES, UItems.CRYSTAL_HEART, UItems.CRYSTAL_SHARD,
UItems.DAFFODIL_DAISY_SANDWICH, UItems.DRAGON_BREATH_SCROLL,
UItems.EMPTY_JAR,
UItems.FRIENDSHIP_BRACELET,
@ -158,52 +47,37 @@ public class UModelProvider extends FabricModelProvider {
UItems.SALT_CUBE, UItems.SCALLOP_SHELL, UItems.SHELLY, UItems.SOUR_APPLE_SEEDS, UItems.SOUR_APPLE, UItems.SPELLBOOK, UItems.STORM_CLOUD_JAR,
UItems.SWEET_APPLE_SEEDS, UItems.SWEET_APPLE,
UItems.TOAST, UItems.TOM, UItems.TURRET_SHELL,
UItems.WEIRD_ROCK, UItems.WHEAT_WORMS,
UItems.WEIRD_ROCK, UItems.WHEAT_WORMS, UBlocks.WEATHER_VANE.asItem(),
UItems.ZAP_APPLE_JAM_JAR, UItems.ZAP_APPLE, UItems.ZAP_BULB,
// discs
UItems.MUSIC_DISC_CRUSADE, UItems.MUSIC_DISC_FUNK, UItems.MUSIC_DISC_PET, UItems.MUSIC_DISC_POPULAR,
// baskets
UItems.ACACIA_BASKET, UItems.BAMBOO_BASKET, UItems.BIRCH_BASKET, UItems.CHERRY_BASKET,
UItems.DARK_OAK_BASKET, UItems.JUNGLE_BASKET, UItems.MANGROVE_BASKET, UItems.OAK_BASKET, UItems.SPRUCE_BASKET,
UItems.PALM_BASKET,
// boats
UItems.PALM_BOAT, UItems.PALM_CHEST_BOAT,
// horseshoes
UItems.COPPER_HORSE_SHOE, UItems.GOLDEN_HORSE_SHOE, UItems.IRON_HORSE_SHOE, UItems.NETHERITE_HORSE_SHOE
);
// spawn eggs
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_SPAWN_EGG,
UItems.BUTTERFLY_SPAWN_EGG, UItems.LOOT_BUG_SPAWN_EGG
);
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_SPAWN_EGG, UItems.BUTTERFLY_SPAWN_EGG, UItems.LOOT_BUG_SPAWN_EGG);
// amulets
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_AMULET,
UItems.ALICORN_AMULET, UItems.BROKEN_ALICORN_AMULET, UItems.PEARL_NECKLACE, UItems.PEGASUS_AMULET, UItems.UNICORN_AMULET
);
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_AMULET, UItems.ALICORN_AMULET, UItems.BROKEN_ALICORN_AMULET, UItems.PEARL_NECKLACE, UItems.PEGASUS_AMULET, UItems.UNICORN_AMULET);
// mugs
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_MUG,
UItems.CIDER, UItems.LOVE_BOTTLE, UItems.LOVE_BUCKET, UItems.LOVE_MUG, UItems.MUG
);
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_MUG, UItems.CIDER, UItems.LOVE_BOTTLE, UItems.LOVE_BUCKET, UItems.LOVE_MUG, UItems.MUG);
// jars
ItemModels.register(itemModelGenerator, ItemModels.BUILTIN_ENTITY, UItems.FILLED_JAR);
// eyewear
ItemModels.register(itemModelGenerator, ItemModels.TEMPLATE_EYEWEAR, UItems.SUNGLASSES);
// staffs
ItemModels.register(itemModelGenerator, ItemModels.HANDHELD_STAFF,
UItems.MEADOWBROOKS_STAFF
);
ItemModels.register(itemModelGenerator, ItemModels.HANDHELD_STAFF, UItems.MEADOWBROOKS_STAFF);
ItemModels.item("handheld_staff", TextureKey.LAYER0, TextureKey.LAYER1).upload(ModelIds.getItemModelId(UItems.MAGIC_STAFF), new TextureMap()
.put(TextureKey.LAYER0, ModelIds.getItemSubModelId(UItems.MAGIC_STAFF, "_base"))
.put(TextureKey.LAYER1, ModelIds.getItemSubModelId(UItems.MAGIC_STAFF, "_magic")), itemModelGenerator.writer);
// polearms
List.of(UItems.DIAMOND_POLEARM, UItems.GOLDEN_POLEARM, UItems.NETHERITE_POLEARM, UItems.STONE_POLEARM, UItems.WOODEN_POLEARM, UItems.IRON_POLEARM).forEach(item -> {
ItemModels.registerPolearm(itemModelGenerator, item);
});
List.of(UItems.DIAMOND_POLEARM, UItems.GOLDEN_POLEARM, UItems.NETHERITE_POLEARM, UItems.STONE_POLEARM, UItems.WOODEN_POLEARM, UItems.IRON_POLEARM).forEach(item -> ItemModels.registerPolearm(itemModelGenerator, item));
// sheets
ItemModels.register(itemModelGenerator, BedsheetsItem.ITEMS.values().stream().toArray(Item[]::new));
// badges
@ -212,6 +86,7 @@ public class UModelProvider extends FabricModelProvider {
.flatMap(id -> Registries.ITEM.getOrEmpty(id).stream())
.toArray(Item[]::new));
// butterflies
ItemModels.registerButterfly(itemModelGenerator, UItems.BUTTERFLY);
ItemModels.registerSpectralBlock(itemModelGenerator, UItems.SPECTRAL_CLOCK);
ModelOverrides.of(ItemModels.GENERATED)
@ -224,16 +99,11 @@ public class UModelProvider extends FabricModelProvider {
.addOverride(ModelIds.getItemSubModelId(item, "_bite2"), "damage", 0.6F)
.upload(item, itemModelGenerator);
});
}
private void registerLogSet(BlockStateModelGenerator modelGenerator, Block log, Block wood) {
modelGenerator.registerLog(log).log(log).wood(wood);
}
public void registerParentedAxisRotatedCubeColumn(BlockStateModelGenerator modelGenerator, Block modelSource, Block child) {
Identifier vertical = ModelIds.getBlockModelId(modelSource);
Identifier horizontal = ModelIds.getBlockSubModelId(modelSource, "_horizontal");
modelGenerator.blockStateCollector.accept(BlockStateModelGenerator.createAxisRotatedBlockState(child, vertical, horizontal));
modelGenerator.registerParentedItemModel(child, vertical);
// gemstone
ModelOverrides.of(ItemModels.GENERATED)
.addOverride(ModelIds.getItemSubModelId(UItems.GEMSTONE, "_pure"), "affinity", 0)
.addOverride(ModelIds.getItemSubModelId(UItems.GEMSTONE, "_corrupted"), "affinity", 1)
.upload(UItems.GEMSTONE, itemModelGenerator);
}
}

View file

@ -1,12 +0,0 @@
{
"variants": {
"bites=0,stomped=false": { "model": "unicopia:block/apple_pie" },
"bites=1,stomped=false": { "model": "unicopia:block/apple_pie_elbow" },
"bites=2,stomped=false": { "model": "unicopia:block/apple_pie_straight" },
"bites=3,stomped=false": { "model": "unicopia:block/apple_pie_corner" },
"bites=0,stomped=true": { "model": "unicopia:block/stomped_apple_pie" },
"bites=1,stomped=true": { "model": "unicopia:block/stomped_apple_pie_elbow" },
"bites=2,stomped=true": { "model": "unicopia:block/stomped_apple_pie_straight" },
"bites=3,stomped=true": { "model": "unicopia:block/stomped_apple_pie_corner" }
}
}

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "unicopia:block/bananas"
}
}
}

View file

@ -1,10 +0,0 @@
{
"variants": {
"facing=up": { "model": "unicopia:block/carved_cloud" },
"facing=down": { "model": "unicopia:block/carved_cloud", "x": 180 },
"facing=north": { "model": "unicopia:block/carved_cloud", "x": 90 },
"facing=south": { "model": "unicopia:block/carved_cloud", "x": -90 },
"facing=east": { "model": "unicopia:block/carved_cloud", "x": 90, "y": 90 },
"facing=west": { "model": "unicopia:block/carved_cloud", "x": 90, "y": -90 }
}
}

View file

@ -1,10 +0,0 @@
{
"variants": {
"facing=up": { "model": "unicopia:block/chiselled_chitin_hull" },
"facing=down": { "model": "unicopia:block/chiselled_chitin_hull", "x": 180 },
"facing=north": { "model": "unicopia:block/chiselled_chitin_hull", "x": 90 },
"facing=south": { "model": "unicopia:block/chiselled_chitin_hull", "x": -90 },
"facing=east": { "model": "unicopia:block/chiselled_chitin_hull", "x": 90, "y": 90 },
"facing=west": { "model": "unicopia:block/chiselled_chitin_hull", "x": 90, "y": -90 }
}
}

View file

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

View file

@ -1,10 +0,0 @@
{
"variants": {
"facing=up": { "model": "unicopia:block/chitin_spikes" },
"facing=down": { "model": "unicopia:block/chitin_spikes", "x": 180 },
"facing=north": { "model": "unicopia:block/chitin_spikes", "x": 90 },
"facing=south": { "model": "unicopia:block/chitin_spikes", "x": -90 },
"facing=east": { "model": "unicopia:block/chitin_spikes", "x": 90, "y": 90 },
"facing=west": { "model": "unicopia:block/chitin_spikes", "x": 90, "y": -90 }
}
}

View file

@ -1,8 +0,0 @@
{
"variants": {
"count=1": { "model": "unicopia:block/clam_shell_1" },
"count=2": { "model": "unicopia:block/clam_shell_2" },
"count=3": { "model": "unicopia:block/clam_shell_3" },
"count=4": { "model": "unicopia:block/clam_shell_4" }
}
}

View file

@ -1,209 +0,0 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_brick_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_brick_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "unicopia:block/cloud_brick_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View file

@ -1,209 +0,0 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_plank_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_plank_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "unicopia:block/cloud_plank_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View file

@ -1,209 +0,0 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "unicopia:block/cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "unicopia:block/cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "unicopia:block/cloud_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View file

@ -1,209 +0,0 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "unicopia:block/dense_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "unicopia:block/dense_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "unicopia:block/dense_cloud_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View file

@ -1,209 +0,0 @@
{
"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

@ -1,16 +0,0 @@
{
"variants": {
"age=0": {
"model": "unicopia:block/frosted_obsidian_0"
},
"age=1": {
"model": "unicopia:block/frosted_obsidian_1"
},
"age=2": {
"model": "unicopia:block/frosted_obsidian_2"
},
"age=3": {
"model": "unicopia:block/frosted_obsidian_3"
}
}
}

View file

@ -1,68 +0,0 @@
{
"multipart": [
{
"apply": {
"model": "unicopia:block/hive_core"
}
},
{
"apply": {
"model": "unicopia:block/hive_side",
"uvlock": true
},
"when": {
"north": true
}
},
{
"apply": {
"model": "unicopia:block/hive_side",
"uvlock": true,
"y": 90
},
"when": {
"east": true
}
},
{
"apply": {
"model": "unicopia:block/hive_side",
"uvlock": true,
"y": 180
},
"when": {
"south": true
}
},
{
"apply": {
"model": "unicopia:block/hive_side",
"uvlock": true,
"y": 270
},
"when": {
"west": true
}
},
{
"apply": {
"model": "unicopia:block/hive_side",
"uvlock": true,
"x": 90
},
"when": {
"down": true
}
},
{
"apply": {
"model": "unicopia:block/hive_side",
"uvlock": true,
"x": 270
},
"when": {
"up": true
}
}
]
}

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "minecraft:block/jungle_leaves"
}
}
}

View file

@ -1,7 +0,0 @@
{
"variants": {
"count=1": { "model": "unicopia:block/mysterious_egg_1" },
"count=2": { "model": "unicopia:block/mysterious_egg_2" },
"count=3": { "model": "unicopia:block/mysterious_egg_3" }
}
}

View file

@ -1,28 +0,0 @@
{
"variants": {
"age=0": {
"model": "unicopia:block/rocks_stage0"
},
"age=1": {
"model": "unicopia:block/rocks_stage1"
},
"age=2": {
"model": "unicopia:block/rocks_stage2"
},
"age=3": {
"model": "unicopia:block/rocks_stage3"
},
"age=4": {
"model": "unicopia:block/rocks_stage4"
},
"age=5": {
"model": "unicopia:block/rocks_stage5"
},
"age=6": {
"model": "unicopia:block/rocks_stage6"
},
"age=7": {
"model": "unicopia:block/rocks_stage7"
}
}
}

View file

@ -1,8 +0,0 @@
{
"variants": {
"count=1": { "model": "unicopia:block/scallop_shell_1" },
"count=2": { "model": "unicopia:block/scallop_shell_2" },
"count=3": { "model": "unicopia:block/scallop_shell_3" },
"count=4": { "model": "unicopia:block/scallop_shell_4" }
}
}

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "unicopia:block/shaping_bench"
}
}
}

View file

@ -1,8 +0,0 @@
{
"variants": {
"shape=drip": { "model": "unicopia:block/slime_pustule_drip" },
"shape=cap": { "model": "unicopia:block/slime_pustule_cap" },
"shape=string": { "model": "unicopia:block/slime_pustule_rope" },
"shape=pod": { "model": "unicopia:block/slime_pustule_pod" }
}
}

View file

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

View file

@ -1,7 +0,0 @@
{
"variants": {
"type=double": { "model": "unicopia:block/soggy_cloud" },
"type=bottom": { "model": "unicopia:block/soggy_cloud_slab" },
"type=top": { "model": "unicopia:block/soggy_cloud_slab_top" }
}
}

View file

@ -1,209 +0,0 @@
{
"variants": {
"facing=east,half=bottom,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner"
},
"facing=east,half=bottom,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=east,half=bottom,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer"
},
"facing=east,half=bottom,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs"
},
"facing=east,half=top,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=east,half=top,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=east,half=top,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"x": 180
},
"facing=north,half=bottom,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=north,half=bottom,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"y": 270
},
"facing=north,half=bottom,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"y": 270
},
"facing=north,half=top,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=north,half=top,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180
},
"facing=north,half=top,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=south,half=bottom,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner"
},
"facing=south,half=bottom,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer"
},
"facing=south,half=bottom,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=south,half=bottom,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"y": 90
},
"facing=south,half=top,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=south,half=top,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=south,half=top,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"x": 180,
"y": 90
},
"facing=west,half=bottom,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"y": 90
},
"facing=west,half=bottom,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"y": 180
},
"facing=west,half=bottom,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"y": 180
},
"facing=west,half=top,shape=inner_left": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=inner_right": {
"model": "unicopia:block/soggy_cloud_stairs_inner",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=outer_left": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 180
},
"facing=west,half=top,shape=outer_right": {
"model": "unicopia:block/soggy_cloud_stairs_outer",
"uvlock": true,
"x": 180,
"y": 270
},
"facing=west,half=top,shape=straight": {
"model": "unicopia:block/soggy_cloud_stairs",
"uvlock": true,
"x": 180,
"y": 180
}
}
}

View file

@ -1,90 +0,0 @@
{
"multipart": [
{
"apply": [
{
"model": "minecraft:block/soul_fire_floor0"
},
{
"model": "minecraft:block/soul_fire_floor1"
}
]
},
{
"apply": [
{
"model": "minecraft:block/soul_fire_side0"
},
{
"model": "minecraft:block/soul_fire_side1"
},
{
"model": "minecraft:block/soul_fire_side_alt0"
},
{
"model": "minecraft:block/soul_fire_side_alt1"
}
]
},
{
"apply": [
{
"model": "minecraft:block/soul_fire_side0",
"y": 90
},
{
"model": "minecraft:block/soul_fire_side1",
"y": 90
},
{
"model": "minecraft:block/soul_fire_side_alt0",
"y": 90
},
{
"model": "minecraft:block/soul_fire_side_alt1",
"y": 90
}
]
},
{
"apply": [
{
"model": "minecraft:block/soul_fire_side0",
"y": 180
},
{
"model": "minecraft:block/soul_fire_side1",
"y": 180
},
{
"model": "minecraft:block/soul_fire_side_alt0",
"y": 180
},
{
"model": "minecraft:block/soul_fire_side_alt1",
"y": 180
}
]
},
{
"apply": [
{
"model": "minecraft:block/soul_fire_side0",
"y": 270
},
{
"model": "minecraft:block/soul_fire_side1",
"y": 270
},
{
"model": "minecraft:block/soul_fire_side_alt0",
"y": 270
},
{
"model": "minecraft:block/soul_fire_side_alt1",
"y": 270
}
]
}
]
}

View file

@ -1,6 +0,0 @@
{
"variants": {
"snowy=false": { "model": "unicopia:block/surface_chitin" },
"snowy=true": { "model": "unicopia:block/surface_chitin_snowy" }
}
}

View file

@ -1,8 +0,0 @@
{
"variants": {
"count=1": { "model": "unicopia:block/turret_shell_1" },
"count=2": { "model": "unicopia:block/turret_shell_2" },
"count=3": { "model": "unicopia:block/turret_shell_3" },
"count=4": { "model": "unicopia:block/turret_shell_4" }
}
}

View file

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

View file

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

View file

@ -1,7 +0,0 @@
{
"variants": {
"": {
"model": "minecraft:block/air"
}
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_full",
"textures": {
"top": "unicopia:block/apple_pie_top",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_corner",
"textures": {
"top": "unicopia:block/apple_pie_top",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_elbow",
"textures": {
"top": "unicopia:block/apple_pie_top",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_straight",
"textures": {
"top": "unicopia:block/apple_pie_top",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

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

View file

@ -1,8 +0,0 @@
{
"parent": "minecraft:block/cube_bottom_top",
"textures": {
"bottom": "unicopia:block/chitin",
"top": "unicopia:block/chiselled_chitin",
"side": "unicopia:block/chiselled_chitin_half"
}
}

View file

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

View file

@ -1,6 +0,0 @@
{
"parent": "minecraft:block/crop",
"textures": {
"crop": "unicopia:block/chitin_spikes"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs",
"textures": {
"bottom": "unicopia:block/cloud_bricks",
"side": "unicopia:block/cloud_bricks",
"top": "unicopia:block/cloud_bricks"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_inner",
"textures": {
"bottom": "unicopia:block/cloud_bricks",
"side": "unicopia:block/cloud_bricks",
"top": "unicopia:block/cloud_bricks"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_outer",
"textures": {
"bottom": "unicopia:block/cloud_bricks",
"side": "unicopia:block/cloud_bricks",
"top": "unicopia:block/cloud_bricks"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs",
"textures": {
"bottom": "unicopia:block/cloud_planks",
"side": "unicopia:block/cloud_planks",
"top": "unicopia:block/cloud_planks"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_inner",
"textures": {
"bottom": "unicopia:block/cloud_planks",
"side": "unicopia:block/cloud_planks",
"top": "unicopia:block/cloud_planks"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_outer",
"textures": {
"bottom": "unicopia:block/cloud_planks",
"side": "unicopia:block/cloud_planks",
"top": "unicopia:block/cloud_planks"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs",
"textures": {
"bottom": "unicopia:block/dense_cloud",
"side": "unicopia:block/dense_cloud",
"top": "unicopia:block/dense_cloud"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_inner",
"textures": {
"bottom": "unicopia:block/dense_cloud",
"side": "unicopia:block/dense_cloud",
"top": "unicopia:block/dense_cloud"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_outer",
"textures": {
"bottom": "unicopia:block/dense_cloud",
"side": "unicopia:block/dense_cloud",
"top": "unicopia:block/dense_cloud"
}
}

View file

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

View file

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

View file

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

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

@ -1,6 +1,5 @@
{
"textures": {
"all": "unicopia:block/cloud",
"particle": "#all"
},
"elements": [

View file

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

View file

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

View file

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

View file

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

View file

@ -1,10 +1,5 @@
{
"parent": "minecraft:block/inner_stairs",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/cloud",
"top": "unicopia:block/cloud"
},
"elements": [
{
"from": [0, 0, 8],
@ -29,8 +24,8 @@
"from": [0, 0, 0],
"to": [8, 8, 8],
"faces": {
"north": {"uv": [8, 8, 16, 16], "texture": "#side", "cullface": "north"},
"west": {"uv": [0, 8, 8, 16], "texture": "#side", "cullface": "west"},
"north": {"uv": [8, 8, 16, 16], "texture": "#step", "cullface": "north"},
"west": {"uv": [0, 8, 8, 16], "texture": "#step", "cullface": "west"},
"up": {"uv": [0, 0, 8, 8], "texture": "#top"},
"down": {"uv": [0, 8, 8, 16], "texture": "#bottom", "cullface": "down"}
}
@ -39,9 +34,9 @@
"from": [8, 8, 0],
"to": [16, 16, 8],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "north"},
"east": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "east"},
"west": {"uv": [0, 0, 8, 8], "texture": "#side"},
"north": {"uv": [0, 0, 8, 8], "texture": "#step", "cullface": "north"},
"east": {"uv": [8, 0, 16, 8], "texture": "#step", "cullface": "east"},
"west": {"uv": [0, 0, 8, 8], "texture": "#step"},
"up": {"uv": [8, 0, 16, 8], "texture": "#top", "cullface": "up"}
}
},
@ -49,8 +44,8 @@
"from": [8, 8, 8],
"to": [16, 16, 16],
"faces": {
"east": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "south"},
"east": {"uv": [0, 0, 8, 8], "texture": "#step", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#step", "cullface": "south"},
"up": {"uv": [8, 8, 16, 16], "texture": "#top", "cullface": "up"}
}
},
@ -58,9 +53,9 @@
"from": [0, 8, 8],
"to": [8, 16, 16],
"faces": {
"north": {"uv": [8, 0, 16, 8], "texture": "#side"},
"south": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "west"},
"north": {"uv": [8, 0, 16, 8], "texture": "#step"},
"south": {"uv": [0, 0, 8, 8], "texture": "#step", "cullface": "south"},
"west": {"uv": [8, 0, 16, 8], "texture": "#step", "cullface": "west"},
"up": {"uv": [0, 8, 8, 16], "texture": "#top", "cullface": "up"}
}
}

View file

@ -1,18 +1,13 @@
{
"parent": "minecraft:block/outer_stairs",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/cloud",
"top": "unicopia:block/cloud"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 8, 8],
"faces": {
"north": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "north"},
"east": {"uv": [8, 8, 16, 16], "texture": "#side", "cullface": "east"},
"west": {"uv": [0, 8, 8, 16], "texture": "#side", "cullface": "west"},
"north": {"uv": [0, 8, 16, 16], "texture": "#step", "cullface": "north"},
"east": {"uv": [8, 8, 16, 16], "texture": "#step", "cullface": "east"},
"west": {"uv": [0, 8, 8, 16], "texture": "#step", "cullface": "west"},
"up": {"uv": [0, 0, 16, 8], "texture": "#top"},
"down": {"uv": [0, 8, 16, 16], "texture": "#bottom", "cullface": "down"}
}
@ -21,8 +16,8 @@
"from": [0, 0, 8],
"to": [8, 8, 16],
"faces": {
"south": {"uv": [0, 8, 8, 16], "texture": "#side", "cullface": "south"},
"west": {"uv": [8, 8, 16, 16], "texture": "#side", "cullface": "west"},
"south": {"uv": [0, 8, 8, 16], "texture": "#step", "cullface": "south"},
"west": {"uv": [8, 8, 16, 16], "texture": "#step", "cullface": "west"},
"up": {"uv": [0, 8, 8, 16], "texture": "#top"},
"down": {"uv": [0, 0, 8, 8], "texture": "#bottom", "cullface": "down"}
}
@ -31,11 +26,8 @@
"from": [8, 0, 8],
"to": [16, 8, 16],
"faces": {
"north": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 8, 8, 16], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 8, 16, 16], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "west"},
"up": {"uv": [0, 0, 16, 16], "texture": "#top"},
"down": {"uv": [8, 0, 16, 8], "texture": "#bottom", "cullface": "down"}
}
},
@ -43,10 +35,10 @@
"from": [8, 8, 8],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#side"},
"east": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [8, 0, 16, 8], "texture": "#side"},
"north": {"uv": [0, 0, 8, 8], "texture": "#step"},
"east": {"uv": [0, 0, 8, 8], "texture": "#step", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#step", "cullface": "south"},
"west": {"uv": [8, 0, 16, 8], "texture": "#step"},
"up": {"uv": [8, 8, 16, 16], "texture": "#top", "cullface": "up"}
}
}

View file

@ -8,10 +8,10 @@
"faces": {
"up": { "uv": [ 1, 1, 8, 8 ], "texture": "#top" },
"down": { "uv": [ 1, 8, 8, 15 ], "texture": "#bottom" },
"north": { "uv": [ 8, 11, 15, 16 ], "texture": "#sides" },
"south": { "uv": [ 1, 11, 8, 16 ], "texture": "#inner" },
"west": { "uv": [ 1, 11, 8, 16 ], "texture": "#sides" },
"east": { "uv": [ 8, 11, 15, 16 ], "texture": "#inner" }
"north": { "uv": [ 8, 11, 15, 16 ], "texture": "#side" },
"south": { "uv": [ 1, 11, 8, 16 ], "texture": "#inside" },
"west": { "uv": [ 1, 11, 8, 16 ], "texture": "#side" },
"east": { "uv": [ 8, 11, 15, 16 ], "texture": "#inside" }
}
}
]

View file

@ -8,10 +8,10 @@
"faces": {
"up": { "uv": [ 1, 1, 15, 8 ], "texture": "#top" },
"down": { "uv": [ 1, 8, 15, 15 ], "texture": "#bottom" },
"north": { "uv": [ 1, 11, 15, 16 ], "texture": "#sides" },
"south": { "uv": [ 1, 11, 15, 16 ], "texture": "#inner" },
"west": { "uv": [ 1, 11, 8, 16 ], "texture": "#sides" },
"east": { "uv": [ 8, 11, 15, 16 ], "texture": "#sides" }
"north": { "uv": [ 1, 11, 15, 16 ], "texture": "#side" },
"south": { "uv": [ 1, 11, 15, 16 ], "texture": "#inside" },
"west": { "uv": [ 1, 11, 8, 16 ], "texture": "#side" },
"east": { "uv": [ 8, 11, 15, 16 ], "texture": "#side" }
}
},
{ "from": [ 8, 0, 8 ],
@ -19,10 +19,10 @@
"faces": {
"up": { "uv": [ 8, 8, 15, 15 ], "texture": "#top" },
"down": { "uv": [ 8, 1, 15, 8 ], "texture": "#bottom" },
"north": { "uv": [ 1, 11, 8, 16 ], "texture": "#sides" },
"south": { "uv": [ 8, 11, 15, 16 ], "texture": "#sides" },
"west": { "uv": [ 8, 11, 15, 16 ], "texture": "#inner" },
"east": { "uv": [ 1, 11, 8, 16 ], "texture": "#sides" }
"north": { "uv": [ 1, 11, 8, 16 ], "texture": "#side" },
"south": { "uv": [ 8, 11, 15, 16 ], "texture": "#side" },
"west": { "uv": [ 8, 11, 15, 16 ], "texture": "#inside" },
"east": { "uv": [ 1, 11, 8, 16 ], "texture": "#side" }
}
}
]

View file

@ -8,10 +8,10 @@
"faces": {
"up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" },
"down": { "uv": [ 1, 1, 15, 15 ], "texture": "#bottom" },
"north": { "uv": [ 1, 11, 15, 16 ], "texture": "#sides" },
"south": { "uv": [ 1, 11, 15, 16 ], "texture": "#sides" },
"west": { "uv": [ 1, 11, 15, 16 ], "texture": "#sides" },
"east": { "uv": [ 1, 11, 15, 16 ], "texture": "#sides" }
"north": { "uv": [ 1, 11, 15, 16 ], "texture": "#side" },
"south": { "uv": [ 1, 11, 15, 16 ], "texture": "#side" },
"west": { "uv": [ 1, 11, 15, 16 ], "texture": "#side" },
"east": { "uv": [ 1, 11, 15, 16 ], "texture": "#side" }
}
}
]

View file

@ -8,10 +8,10 @@
"faces": {
"up": { "uv": [ 1, 1, 15, 8 ], "texture": "#top" },
"down": { "uv": [ 1, 8, 15, 15 ], "texture": "#bottom" },
"north": { "uv": [ 1, 11, 15, 16 ], "texture": "#sides" },
"south": { "uv": [ 1, 11, 15, 16 ], "texture": "#inner" },
"west": { "uv": [ 1, 11, 8, 16 ], "texture": "#sides" },
"east": { "uv": [ 8, 11, 15, 16 ], "texture": "#sides" }
"north": { "uv": [ 1, 11, 15, 16 ], "texture": "#side" },
"south": { "uv": [ 1, 11, 15, 16 ], "texture": "#inside" },
"west": { "uv": [ 1, 11, 8, 16 ], "texture": "#side" },
"east": { "uv": [ 8, 11, 15, 16 ], "texture": "#side" }
}
}
]

View file

@ -1,6 +0,0 @@
{
"parent": "unicopia:block/clam_shell_1",
"textures": {
"shell": "unicopia:item/scallop_shell"
}
}

View file

@ -1,6 +0,0 @@
{
"parent": "unicopia:block/clam_shell_2",
"textures": {
"shell": "unicopia:item/scallop_shell"
}
}

View file

@ -1,6 +0,0 @@
{
"parent": "unicopia:block/clam_shell_3",
"textures": {
"shell": "unicopia:item/scallop_shell"
}
}

View file

@ -1,6 +0,0 @@
{
"parent": "unicopia:block/clam_shell_4",
"textures": {
"shell": "unicopia:item/scallop_shell"
}
}

View file

@ -1,10 +1,5 @@
{
"parent": "minecraft:block/stairs",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/cloud",
"top": "unicopia:block/cloud"
},
"elements": [
{
"from": [8, 0, 0],
@ -20,9 +15,9 @@
"from": [0, 0, 0],
"to": [8, 8, 16],
"faces": {
"north": {"uv": [8, 8, 16, 16], "texture": "#side", "cullface": "north"},
"south": {"uv": [0, 8, 8, 16], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 8, 16, 16], "texture": "#side", "cullface": "west"},
"north": {"uv": [8, 8, 16, 16], "texture": "#step", "cullface": "north"},
"south": {"uv": [0, 8, 8, 16], "texture": "#step", "cullface": "south"},
"west": {"uv": [0, 8, 16, 16], "texture": "#step", "cullface": "west"},
"up": {"uv": [0, 0, 8, 16], "texture": "#top"},
"down": {"uv": [0, 0, 8, 16], "texture": "#bottom", "cullface": "down"}
}
@ -31,10 +26,10 @@
"from": [8, 8, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 8, 8], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 0, 16, 8], "texture": "#side", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 0, 16, 8], "texture": "#side"},
"north": {"uv": [0, 0, 8, 8], "texture": "#step", "cullface": "north"},
"east": {"uv": [0, 0, 16, 8], "texture": "#step", "cullface": "east"},
"south": {"uv": [8, 0, 16, 8], "texture": "#step", "cullface": "south"},
"west": {"uv": [0, 0, 16, 8], "texture": "#step"},
"up": {"uv": [8, 0, 16, 16], "texture": "#top", "cullface": "up"}
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "minecraft:block/cube_bottom_top",
"textures": {
"bottom": "unicopia:block/cloud",
"top": "unicopia:block/soggy_cloud_top",
"side": "unicopia:block/soggy_cloud_side"
}
}

View file

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

View file

@ -1,8 +0,0 @@
{
"parent": "minecraft:block/slab_top",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/soggy_cloud_slab_side",
"top": "unicopia:block/soggy_cloud_top"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/soggy_cloud_side",
"top": "unicopia:block/soggy_cloud_top"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_inner",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/soggy_cloud_side",
"top": "unicopia:block/soggy_cloud_top"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "unicopia:block/cloud_stairs_outer",
"textures": {
"bottom": "unicopia:block/cloud",
"side": "unicopia:block/soggy_cloud_side",
"top": "unicopia:block/soggy_cloud_top"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_full",
"textures": {
"top": "unicopia:block/apple_pie_top_stomped",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_corner",
"textures": {
"top": "unicopia:block/apple_pie_top_stomped",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_elbow",
"textures": {
"top": "unicopia:block/apple_pie_top_stomped",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,9 +0,0 @@
{
"parent": "unicopia:block/pie_straight",
"textures": {
"top": "unicopia:block/apple_pie_top_stomped",
"bottom": "unicopia:block/apple_pie_bottom",
"sides": "unicopia:block/apple_pie_side",
"inner": "unicopia:block/apple_pie_inner"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "minecraft:block/cube_bottom_top",
"textures": {
"bottom": "unicopia:block/chitin_bottom",
"top": "unicopia:block/chitin_top",
"side": "unicopia:block/chitin_side"
}
}

View file

@ -1,8 +0,0 @@
{
"parent": "minecraft:block/cube_bottom_top",
"textures": {
"bottom": "unicopia:block/chitin",
"top": "unicopia:block/chitin_top",
"side": "unicopia:block/chitin_side_snow_covered"
}
}

View file

@ -1,8 +1,6 @@
{
"textures": {
"top": "block/hay_block_top",
"particle": "block/hay_block_side",
"side": "block/hay_block_side"
"particle": "#side"
},
"elements": [
{

View file

@ -1,8 +1,6 @@
{
"textures": {
"top": "block/hay_block_top",
"particle": "block/hay_block_side",
"side": "block/hay_block_side"
"particle": "#side"
},
"elements": [
{

View file

@ -1,8 +1,6 @@
{
"textures": {
"top": "block/hay_block_top",
"particle": "block/hay_block_side",
"side": "block/hay_block_side"
"particle": "#side"
},
"elements": [
{

View file

@ -1,8 +1,6 @@
{
"textures": {
"top": "block/hay_block_top",
"particle": "block/hay_block_side",
"side": "block/hay_block_side"
"particle": "#side"
},
"elements": [
{

View file

@ -1,8 +1,6 @@
{
"textures": {
"top": "block/hay_block_top",
"particle": "block/hay_block_side",
"side": "block/hay_block_side"
"particle": "#side"
},
"elements": [
{

View file

@ -1,8 +1,6 @@
{
"textures": {
"top": "block/hay_block_top",
"particle": "block/hay_block_side",
"side": "block/hay_block_side"
"particle": "#side"
},
"elements": [
{

Some files were not shown because too many files have changed in this diff Show more