Compacted drawers
This commit is contained in:
parent
c77dae2467
commit
08d3805011
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"locked=false,subfacing=north": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer"
|
||||||
|
},
|
||||||
|
"locked=true,subfacing=north": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer_locked"
|
||||||
|
},
|
||||||
|
"locked=false,subfacing=south": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"locked=true,subfacing=south": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer_locked",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"locked=false,subfacing=west": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"locked=true,subfacing=west": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer_locked",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"locked=false,subfacing=east": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"locked=true,subfacing=east": {
|
||||||
|
"model": "functionalstorage:block/compacting_framed_drawer_locked",
|
||||||
|
"y": 90
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,6 +30,7 @@
|
||||||
"block.functionalstorage.framed_1": "Framed Drawer (1x1)",
|
"block.functionalstorage.framed_1": "Framed Drawer (1x1)",
|
||||||
"block.functionalstorage.framed_2": "Framed Drawer (1x2)",
|
"block.functionalstorage.framed_2": "Framed Drawer (1x2)",
|
||||||
"block.functionalstorage.framed_4": "Framed Drawer (2x2)",
|
"block.functionalstorage.framed_4": "Framed Drawer (2x2)",
|
||||||
|
"block.functionalstorage.compacting_framed_drawer": "Compacting Framed Drawer",
|
||||||
"configurationtool.configmode": "Config Mode: ",
|
"configurationtool.configmode": "Config Mode: ",
|
||||||
"configurationtool.configmode.locking": "Locking",
|
"configurationtool.configmode.locking": "Locking",
|
||||||
"configurationtool.configmode.toggle_numbers": "Hide/Show Amounts",
|
"configurationtool.configmode.toggle_numbers": "Hide/Show Amounts",
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "functionalstorage:block/compacting_framed_drawer",
|
||||||
|
"textures": {
|
||||||
|
"lock_icon": "functionalstorage:blocks/lock"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "functionalstorage:block/compacting_framed_drawer"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block"
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
"replace": false,
|
"replace": false,
|
||||||
"values": [
|
"values": [
|
||||||
"functionalstorage:compacting_drawer",
|
"functionalstorage:compacting_drawer",
|
||||||
|
"functionalstorage:compacting_framed_drawer",
|
||||||
"functionalstorage:storage_controller",
|
"functionalstorage:storage_controller",
|
||||||
"functionalstorage:armory_cabinet",
|
"functionalstorage:armory_cabinet",
|
||||||
"functionalstorage:ender_drawer"
|
"functionalstorage:ender_drawer"
|
||||||
|
|
|
@ -99,6 +99,7 @@ public class FunctionalStorage extends ModuleController {
|
||||||
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> DRAWER_CONTROLLER;
|
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> DRAWER_CONTROLLER;
|
||||||
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> ARMORY_CABINET;
|
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> ARMORY_CABINET;
|
||||||
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> ENDER_DRAWER;
|
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> ENDER_DRAWER;
|
||||||
|
public static Pair<RegistryObject<Block>, RegistryObject<BlockEntityType<?>>> FRAMED_COMPACTING_DRAWER;
|
||||||
|
|
||||||
public static RegistryObject<Item> LINKING_TOOL;
|
public static RegistryObject<Item> LINKING_TOOL;
|
||||||
public static HashMap<StorageUpgradeItem.StorageTier, RegistryObject<Item>> STORAGE_UPGRADES = new HashMap<>();
|
public static HashMap<StorageUpgradeItem.StorageTier, RegistryObject<Item>> STORAGE_UPGRADES = new HashMap<>();
|
||||||
|
@ -144,6 +145,7 @@ public class FunctionalStorage extends ModuleController {
|
||||||
.process(register -> ((RegistryEvent.Register) register).getRegistry()
|
.process(register -> ((RegistryEvent.Register) register).getRegistry()
|
||||||
.registerAll(FramedDrawerRecipe.SERIALIZER.setRegistryName(new ResourceLocation(MOD_ID, "framed_recipe")))).subscribe();
|
.registerAll(FramedDrawerRecipe.SERIALIZER.setRegistryName(new ResourceLocation(MOD_ID, "framed_recipe")))).subscribe();
|
||||||
NBTManager.getInstance().scanTileClassForAnnotations(FramedDrawerTile.class);
|
NBTManager.getInstance().scanTileClassForAnnotations(FramedDrawerTile.class);
|
||||||
|
NBTManager.getInstance().scanTileClassForAnnotations(CompactingFramedDrawerTile.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,6 +166,7 @@ public class FunctionalStorage extends ModuleController {
|
||||||
DRAWER_TYPES.get(value).forEach(blockRegistryObject -> TAB.addIconStacks(() -> new ItemStack(blockRegistryObject.getLeft().get())));
|
DRAWER_TYPES.get(value).forEach(blockRegistryObject -> TAB.addIconStacks(() -> new ItemStack(blockRegistryObject.getLeft().get())));
|
||||||
}
|
}
|
||||||
COMPACTING_DRAWER = getRegistries().registerBlockWithTile("compacting_drawer", () -> new CompactingDrawerBlock("compacting_drawer"));
|
COMPACTING_DRAWER = getRegistries().registerBlockWithTile("compacting_drawer", () -> new CompactingDrawerBlock("compacting_drawer"));
|
||||||
|
FRAMED_COMPACTING_DRAWER = getRegistries().registerBlockWithTile("compacting_framed_drawer", () -> new CompactingFramedDrawerBlock("compacting_framed_drawer"));
|
||||||
DRAWER_CONTROLLER = getRegistries().registerBlockWithTile("storage_controller", DrawerControllerBlock::new);
|
DRAWER_CONTROLLER = getRegistries().registerBlockWithTile("storage_controller", DrawerControllerBlock::new);
|
||||||
LINKING_TOOL = getRegistries().registerGeneric(Item.class, "linking_tool", LinkingToolItem::new);
|
LINKING_TOOL = getRegistries().registerGeneric(Item.class, "linking_tool", LinkingToolItem::new);
|
||||||
for (StorageUpgradeItem.StorageTier value : StorageUpgradeItem.StorageTier.values()) {
|
for (StorageUpgradeItem.StorageTier value : StorageUpgradeItem.StorageTier.values()) {
|
||||||
|
@ -215,6 +218,7 @@ public class FunctionalStorage extends ModuleController {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends CompactingDrawerTile>) COMPACTING_DRAWER.getRight().get(), p_173571_ -> new CompactingDrawerRenderer());
|
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends CompactingDrawerTile>) COMPACTING_DRAWER.getRight().get(), p_173571_ -> new CompactingDrawerRenderer());
|
||||||
|
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends CompactingDrawerTile>) FRAMED_COMPACTING_DRAWER.getRight().get(), p_173571_ -> new CompactingDrawerRenderer());
|
||||||
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends DrawerControllerTile>) DRAWER_CONTROLLER.getRight().get(), p -> new ControllerRenderer());
|
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends DrawerControllerTile>) DRAWER_CONTROLLER.getRight().get(), p -> new ControllerRenderer());
|
||||||
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends EnderDrawerTile>) ENDER_DRAWER.getRight().get(), p_173571_ -> new EnderDrawerRenderer());
|
registerRenderers.registerBlockEntityRenderer((BlockEntityType<? extends EnderDrawerTile>) ENDER_DRAWER.getRight().get(), p_173571_ -> new EnderDrawerRenderer());
|
||||||
}).subscribe();
|
}).subscribe();
|
||||||
|
@ -252,6 +256,7 @@ public class FunctionalStorage extends ModuleController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ItemBlockRenderTypes.setRenderLayer(COMPACTING_DRAWER.getLeft().get(), RenderType.cutout());
|
ItemBlockRenderTypes.setRenderLayer(COMPACTING_DRAWER.getLeft().get(), RenderType.cutout());
|
||||||
|
ItemBlockRenderTypes.setRenderLayer(FRAMED_COMPACTING_DRAWER.getLeft().get(), RenderType.cutout());
|
||||||
ItemBlockRenderTypes.setRenderLayer(ENDER_DRAWER.getLeft().get(), RenderType.cutout());
|
ItemBlockRenderTypes.setRenderLayer(ENDER_DRAWER.getLeft().get(), RenderType.cutout());
|
||||||
}).subscribe();
|
}).subscribe();
|
||||||
EventManager.forge(RenderTooltipEvent.Pre.class).process(itemTooltipEvent -> {
|
EventManager.forge(RenderTooltipEvent.Pre.class).process(itemTooltipEvent -> {
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
package com.buuz135.functionalstorage.block;
|
||||||
|
|
||||||
|
import com.buuz135.functionalstorage.FunctionalStorage;
|
||||||
|
import com.buuz135.functionalstorage.block.tile.CompactingDrawerTile;
|
||||||
|
import com.buuz135.functionalstorage.block.tile.CompactingFramedDrawerTile;
|
||||||
|
import com.buuz135.functionalstorage.block.tile.DrawerTile;
|
||||||
|
import com.buuz135.functionalstorage.block.tile.FramedDrawerTile;
|
||||||
|
import com.buuz135.functionalstorage.client.model.FramedDrawerModelData;
|
||||||
|
import com.buuz135.functionalstorage.util.DrawerWoodType;
|
||||||
|
import com.hrznstudio.titanium.recipe.generator.TitaniumShapedRecipeBuilder;
|
||||||
|
import com.hrznstudio.titanium.util.TileUtil;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.NonNullList;
|
||||||
|
import net.minecraft.data.recipes.FinishedRecipe;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.player.Player;
|
||||||
|
import net.minecraft.world.item.Item;
|
||||||
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.storage.loot.LootContext;
|
||||||
|
import net.minecraft.world.level.storage.loot.parameters.LootContextParams;
|
||||||
|
import net.minecraft.world.phys.HitResult;
|
||||||
|
import net.minecraftforge.common.Tags;
|
||||||
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class CompactingFramedDrawerBlock extends CompactingDrawerBlock{
|
||||||
|
|
||||||
|
public CompactingFramedDrawerBlock(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockEntityType.BlockEntitySupplier<CompactingDrawerTile> getTileEntityFactory() {
|
||||||
|
return (blockPos, state) -> new CompactingFramedDrawerTile(this, (BlockEntityType<CompactingDrawerTile>) FunctionalStorage.FRAMED_COMPACTING_DRAWER.getValue().get(), blockPos, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlacedBy(Level level, BlockPos pos, BlockState p_49849_, @Nullable LivingEntity p_49850_, ItemStack stack) {
|
||||||
|
super.setPlacedBy(level, pos, p_49849_, p_49850_, stack);
|
||||||
|
TileUtil.getTileEntity(level, pos, CompactingFramedDrawerTile.class).ifPresent(framedDrawerTile -> {
|
||||||
|
framedDrawerTile.setFramedDrawerModelData(FramedDrawerBlock.getDrawerModelData(stack));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ItemStack> getDrops(BlockState p_60537_, LootContext.Builder builder) {
|
||||||
|
NonNullList<ItemStack> stacks = NonNullList.create();
|
||||||
|
ItemStack stack = new ItemStack(this);
|
||||||
|
BlockEntity drawerTile = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY);
|
||||||
|
if (drawerTile instanceof CompactingFramedDrawerTile) {
|
||||||
|
if (!((CompactingFramedDrawerTile) drawerTile).isEverythingEmpty()) {
|
||||||
|
stack.getOrCreateTag().put("Tile", drawerTile.saveWithoutMetadata());
|
||||||
|
}
|
||||||
|
stack.getOrCreateTag().put("Style", ((CompactingFramedDrawerTile) drawerTile).getFramedDrawerModelData().serializeNBT());
|
||||||
|
}
|
||||||
|
stacks.add(stack);
|
||||||
|
return stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter level, BlockPos pos, Player player) {
|
||||||
|
BlockEntity entity = level.getBlockEntity(pos);
|
||||||
|
if (entity instanceof CompactingFramedDrawerTile framedDrawerTile){
|
||||||
|
ItemStack stack = new ItemStack(this);
|
||||||
|
stack.getOrCreateTag().put("Style", framedDrawerTile.getFramedDrawerModelData().serializeNBT());
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
return super.getCloneItemStack(state, target, level, pos, player);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerRecipe(Consumer<FinishedRecipe> consumer) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -319,7 +319,7 @@ public class DrawerBlock extends RotatableBlock<DrawerTile> {
|
||||||
@Override
|
@Override
|
||||||
public void appendHoverText(ItemStack p_49816_, @Nullable BlockGetter p_49817_, List<net.minecraft.network.chat.Component> tooltip, TooltipFlag p_49819_) {
|
public void appendHoverText(ItemStack p_49816_, @Nullable BlockGetter p_49817_, List<net.minecraft.network.chat.Component> tooltip, TooltipFlag p_49819_) {
|
||||||
super.appendHoverText(p_49816_, p_49817_, tooltip, p_49819_);
|
super.appendHoverText(p_49816_, p_49817_, tooltip, p_49819_);
|
||||||
if (p_49816_.hasTag()) {
|
if (p_49816_.hasTag() && p_49816_.getTag().contains("Tile")) {
|
||||||
TranslatableComponent text = new TranslatableComponent("drawer.block.contents");
|
TranslatableComponent text = new TranslatableComponent("drawer.block.contents");
|
||||||
tooltip.add(text.withStyle(ChatFormatting.GRAY));
|
tooltip.add(text.withStyle(ChatFormatting.GRAY));
|
||||||
tooltip.add(new TextComponent(""));
|
tooltip.add(new TextComponent(""));
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package com.buuz135.functionalstorage.block.tile;
|
||||||
|
|
||||||
|
import com.buuz135.functionalstorage.FunctionalStorage;
|
||||||
|
import com.buuz135.functionalstorage.client.model.FramedDrawerModelData;
|
||||||
|
import com.hrznstudio.titanium.annotation.Save;
|
||||||
|
import com.hrznstudio.titanium.block.BasicTileBlock;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraftforge.client.model.data.IModelData;
|
||||||
|
import net.minecraftforge.client.model.data.ModelDataMap;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class CompactingFramedDrawerTile extends CompactingDrawerTile{
|
||||||
|
@Save
|
||||||
|
private FramedDrawerModelData framedDrawerModelData;
|
||||||
|
|
||||||
|
public CompactingFramedDrawerTile(BasicTileBlock<CompactingDrawerTile> base, BlockEntityType<CompactingDrawerTile> blockEntityType, BlockPos pos, BlockState state) {
|
||||||
|
super(base, blockEntityType, pos, state);
|
||||||
|
this.framedDrawerModelData = new FramedDrawerModelData(new HashMap<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
public FramedDrawerModelData getFramedDrawerModelData() {
|
||||||
|
return framedDrawerModelData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFramedDrawerModelData(FramedDrawerModelData framedDrawerModelData) {
|
||||||
|
this.framedDrawerModelData = framedDrawerModelData;
|
||||||
|
markForUpdate();
|
||||||
|
if (level.isClientSide) requestModelDataUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public IModelData getModelData() {
|
||||||
|
return new ModelDataMap.Builder().withInitial(FramedDrawerModelData.FRAMED_PROPERTY, framedDrawerModelData).build();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package com.buuz135.functionalstorage.recipe;
|
package com.buuz135.functionalstorage.recipe;
|
||||||
|
|
||||||
|
|
||||||
|
import com.buuz135.functionalstorage.block.CompactingDrawerBlock;
|
||||||
import com.buuz135.functionalstorage.block.FramedDrawerBlock;
|
import com.buuz135.functionalstorage.block.FramedDrawerBlock;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
@ -28,14 +29,19 @@ public class FramedDrawerRecipe extends CustomRecipe {
|
||||||
return !first.isEmpty() && first.getItem() instanceof BlockItem && !second.isEmpty() && second.getItem() instanceof BlockItem && !drawer.isEmpty() && drawer.getItem() instanceof BlockItem && ((BlockItem) drawer.getItem()).getBlock() instanceof FramedDrawerBlock;
|
return !first.isEmpty() && first.getItem() instanceof BlockItem && !second.isEmpty() && second.getItem() instanceof BlockItem && !drawer.isEmpty() && drawer.getItem() instanceof BlockItem && ((BlockItem) drawer.getItem()).getBlock() instanceof FramedDrawerBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean matchesCompacting(ItemStack first, ItemStack second, ItemStack drawer) {
|
||||||
|
//System.out.println(((BlockItem) drawer.getItem()).getBlock().getClass());
|
||||||
|
return !first.isEmpty() && first.getItem() instanceof BlockItem && !second.isEmpty() && second.getItem() instanceof BlockItem && !drawer.isEmpty() && drawer.getItem() instanceof BlockItem && ((BlockItem) drawer.getItem()).getBlock() instanceof CompactingDrawerBlock;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean matches(CraftingContainer inv, Level worldIn) {
|
public boolean matches(CraftingContainer inv, Level worldIn) {
|
||||||
return matches(inv.getItem(0), inv.getItem(1), inv.getItem(2));
|
return matches(inv.getItem(0), inv.getItem(1), inv.getItem(2)) || matchesCompacting(inv.getItem(0), inv.getItem(1), inv.getItem(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack assemble(CraftingContainer inv) {
|
public ItemStack assemble(CraftingContainer inv) {
|
||||||
if (matches(inv.getItem(0), inv.getItem(1), inv.getItem(2))){
|
if (matches(inv.getItem(0), inv.getItem(1), inv.getItem(2)) || matchesCompacting(inv.getItem(0), inv.getItem(1), inv.getItem(2))){
|
||||||
return FramedDrawerBlock.fill(inv.getItem(0), inv.getItem(1), inv.getItem(2).copy());
|
return FramedDrawerBlock.fill(inv.getItem(0), inv.getItem(1), inv.getItem(2).copy());
|
||||||
}
|
}
|
||||||
return ItemStack.EMPTY;
|
return ItemStack.EMPTY;
|
||||||
|
|
|
@ -0,0 +1,157 @@
|
||||||
|
{
|
||||||
|
"loader": "functionalstorage:framed",
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"front": "functionalstorage:blocks/compacting_drawer_front",
|
||||||
|
"particle": "functionalstorage:blocks/compacting_drawer_side",
|
||||||
|
"side": "functionalstorage:blocks/compacting_drawer_side",
|
||||||
|
"lock_icon": "functionalstorage:blocks/unlock"
|
||||||
|
},
|
||||||
|
"retextured": [ "particle", "side", "front" ],
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [9, 1, 0.5],
|
||||||
|
"to": [15, 7, 2.5],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 9, 7, 15], "texture": "#front"},
|
||||||
|
"west": {"uv": [0, 0, 2, 6], "texture": "#front"},
|
||||||
|
"up": {"uv": [0, 0, 6, 2], "texture": "#front"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [1, 1, 0.5],
|
||||||
|
"to": [7, 7, 2.5],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [9, 9, 15, 15], "texture": "#front"},
|
||||||
|
"east": {"uv": [0, 0, 2, 6], "texture": "#front"},
|
||||||
|
"up": {"uv": [0, 0, 6, 2], "texture": "#front"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [1, 9, 0.5],
|
||||||
|
"to": [15, 15, 2.5],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 1, 15, 7], "texture": "#front"},
|
||||||
|
"down": {"uv": [0, 0, 14, 2], "texture": "#front"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [15, 1, 0],
|
||||||
|
"to": [16, 15, 15],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 1, 1, 15], "texture": "#side", "cullface": "north"},
|
||||||
|
"east": {"uv": [1, 1, 16, 15], "texture": "#side", "cullface": "east"},
|
||||||
|
"west": {"uv": [0, 1, 15, 15], "texture": "#side"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 15, 0],
|
||||||
|
"to": [16, 16, 16],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 1], "texture": "#side", "cullface": "north"},
|
||||||
|
"east": {"uv": [0, 0, 16, 1], "texture": "#side", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 0, 16, 1], "texture": "#side", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 0, 16, 1], "texture": "#side", "cullface": "west"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "up"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#side"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 1, 0],
|
||||||
|
"to": [1, 15, 15],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [15, 1, 16, 15], "texture": "#side", "cullface": "north"},
|
||||||
|
"east": {"uv": [1, 1, 16, 15], "texture": "#side"},
|
||||||
|
"west": {"uv": [0, 1, 15, 15], "texture": "#side", "cullface": "west"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 1, 16],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "north"},
|
||||||
|
"east": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "south"},
|
||||||
|
"west": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "west"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "texture": "#side"},
|
||||||
|
"down": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "down"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 1, 15],
|
||||||
|
"to": [16, 15, 16],
|
||||||
|
"rotation": {"angle": 0, "axis": "y", "origin": [-8, 0, -8]},
|
||||||
|
"faces": {
|
||||||
|
"east": {"uv": [0, 1, 1, 15], "texture": "#side", "cullface": "east"},
|
||||||
|
"south": {"uv": [0, 1, 16, 15], "texture": "#side", "cullface": "south"},
|
||||||
|
"west": {"uv": [15, 1, 16, 15], "texture": "#side", "cullface": "west"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "divider",
|
||||||
|
"from": [1, 7, 0],
|
||||||
|
"to": [15, 9, 1],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 7, 15, 9], "texture": "#side", "cullface": "north"},
|
||||||
|
"up": {"uv": [15, 8, 1, 7], "texture": "#side"},
|
||||||
|
"down": {"uv": [15, 8, 1, 9], "texture": "#side"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "divider",
|
||||||
|
"from": [7, 1, 0],
|
||||||
|
"to": [9, 7, 1],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [7, 9, 9, 15], "texture": "#side", "cullface": "north"},
|
||||||
|
"east": {"uv": [7, 9, 8, 15], "texture": "#side"},
|
||||||
|
"south": {"uv": [0, 0, 2, 6], "texture": "#side"},
|
||||||
|
"west": {"uv": [8, 9, 9, 15], "texture": "#side"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [7.5, 15, -0.01],
|
||||||
|
"to": [8.5, 16, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#lock_icon", "cullface": "north"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"rotation": [75, 45, 0],
|
||||||
|
"translation": [0, 2.5, 0],
|
||||||
|
"scale": [0.375, 0.375, 0.375]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"rotation": [0, 135, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"rotation": [0, 135, 0],
|
||||||
|
"scale": [0.4, 0.4, 0.4]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"translation": [0, 3, 0],
|
||||||
|
"scale": [0.25, 0.25, 0.25]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [30, 225, 0],
|
||||||
|
"scale": [0.625, 0.625, 0.625]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user