"Finished" terrarium jars (More variants coming soon!)

This commit is contained in:
Matt Caughey 2016-01-22 18:10:43 -05:00
parent 0544f7edb3
commit ef22f37cab
27 changed files with 351 additions and 133 deletions

View File

@ -138,7 +138,7 @@ public class BOPBlocks
public static Block double_plant;
public static Block honey_block;
public static Block jar_block;
public static Block terrarium;
public static Block honey;
public static Fluid honey_fluid;

View File

@ -21,6 +21,7 @@ import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPLeaves;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlant;
@ -71,7 +72,7 @@ public class BiomeGenWetland extends BOPBiome
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(9);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("willow", 5, (new GeneratorBasicTree.Builder()).log(BOPWoods.WILLOW).leaves(BOPTrees.WILLOW).minHeight(8).maxHeight(12).minLeavesRadius(2).vine(Blocks.vine.getDefaultState()).create());
treeGenerator.add("willow", 5, (new GeneratorBasicTree.Builder()).log(BOPWoods.WILLOW).leaves(BOPTrees.WILLOW).minHeight(8).maxHeight(12).minLeavesRadius(2).vine(BlockBOPLeaves.paging.getVariantState(BOPTrees.WILLOW)).create());
treeGenerator.add("spruce", 4, (new GeneratorTaigaTree.Builder()).maxHeight(13).create()); // TODO: implement pine cones
// grasses

View File

@ -22,7 +22,8 @@ public class BiomeExtExtremeHills extends ExtendedBiomeWrapper
super(BiomeGenBase.extremeHills);
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(1);
GeneratorWeighted treeGenerator = new GeneratorWeighted(2);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("jacaranda", 3, (new GeneratorBasicTree.Builder()).minHeight(4).maxHeight(7).log(BOPWoods.JACARANDA).leaves(BOPTrees.JACARANDA).create());
// grasses

View File

@ -1,95 +0,0 @@
/*******************************************************************************
* Copyright 2014-2016, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.block;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockBOPHalfOtherSlab.SlabType;
import biomesoplenty.common.item.ItemBOPBlock;
import biomesoplenty.common.item.ItemJarFilled;
public class BlockBOPJar extends Block implements IBOPBlock
{
// implement IBOPBlock
@Override
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
@Override
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
@Override
public IProperty[] getPresetProperties() { return new IProperty[] {}; }
@Override
public IProperty[] getNonRenderingProperties() { return null; }
@Override
public String getStateName(IBlockState state) {return "";}
public BlockBOPJar() {
// use rock as default material
this(Material.glass);
}
public BlockBOPJar(Material material)
{
super(material);
// set some defaults
this.setHardness(1.0F);
this.setStepSound(Block.soundTypeGlass);
this.setCreativeTab(null);
}
@Override
public boolean isOpaqueCube()
{
return false;
}
// not full cube
@Override
public boolean isFullCube()
{
return false;
}
@Override
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune)
{
List<ItemStack> ret = new ArrayList<ItemStack>();
//Drop two of the corresponding half slab for this block
ret.add(new ItemStack(BOPItems.jar_filled, 1, ItemJarFilled.JarContents.TERRARIUM.ordinal()));
return ret;
}
@Override
public EnumWorldBlockLayer getBlockLayer()
{
return EnumWorldBlockLayer.CUTOUT;
}
}

View File

@ -0,0 +1,130 @@
/*******************************************************************************
* Copyright 2014-2016, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.util.IStringSerializable;
import net.minecraft.world.IBlockAccess;
import biomesoplenty.api.block.IBOPBlock;
import biomesoplenty.common.item.ItemBOPBlock;
public class BlockBOPTerrarium extends Block implements IBOPBlock
{
// add properties
public static enum TerrariumType implements IStringSerializable
{
FERN, MUSHROOM;
@Override
public String getName()
{
return this.name().toLowerCase();
}
@Override
public String toString()
{
return this.getName();
}
};
public static final PropertyEnum VARIANT = PropertyEnum.create("variant", TerrariumType.class);
@Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { VARIANT });}
// implement IBOPBlock
// need to use a custom item class because of the unique way lilies are placed
@Override
public Class<? extends ItemBlock> getItemClass() { return ItemBOPBlock.class; }
@Override
public int getItemRenderColor(IBlockState state, int tintIndex) { return this.getRenderColor(state); }
@Override
public IProperty[] getPresetProperties() { return new IProperty[] {VARIANT}; }
@Override
public IProperty[] getNonRenderingProperties() { return null; }
@Override
public String getStateName(IBlockState state) {
TerrariumType type = (TerrariumType) state.getValue(VARIANT);
switch (type)
{
default:
return "terrarium_"+type.getName();
}
}
public BlockBOPTerrarium()
{
super(Material.glass);
this.setHardness(1.0F);
this.setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, TerrariumType.FERN));
this.setBlockBoundsByRadiusAndHeight(0.8F , 0.8F);
}
public void setBlockBoundsByRadiusAndHeight(float radius, float height)
{
this.setBlockBoundsByRadiusAndHeight(radius, height, false);
}
public void setBlockBoundsByRadiusAndHeight(float radius, float height, boolean fromTop)
{
this.setBlockBounds(0.5F - radius, (fromTop ? 1.0F - height : 0.0F), 0.5F - radius, 0.5F + radius, (fromTop ? 1.0F : height), 0.5F + radius);
}
@Override
public IBlockState getStateFromMeta(int meta)
{
// only one property to worry about, the variant, so just map [0 => MEDIUM, 1 => SMALL, 2 => TINY]
return this.getDefaultState().withProperty(VARIANT, TerrariumType.values()[meta]);
}
@Override
public int getMetaFromState(IBlockState state)
{
// only one property to worry about, the variant, so just map [0 => MEDIUM, 1 => SMALL, 2 => TINY]
return ((TerrariumType) state.getValue(VARIANT)).ordinal();
}
// our blocks usually drop their current state as opposed to a single 'default' state
@Override
public int damageDropped(IBlockState state)
{
return this.getMetaFromState(state);
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean isFullCube()
{
return false;
}
@Override
public EnumWorldBlockLayer getBlockLayer()
{
return EnumWorldBlockLayer.CUTOUT;
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos) {
this.setBlockBoundsByRadiusAndHeight(0.2F, 1.0F);
}
}

View File

@ -221,7 +221,7 @@ public class ModBlocks
double_plant = registerBlock( new BlockBOPDoublePlant(), "double_plant" );
honey_block = registerBlock( new BlockBOPHoney(), "honey_block" );
jar_block = registerBlock( new BlockBOPJar(), "jar_block" );
terrarium = registerBlock( new BlockBOPTerrarium(), "terrarium" );
// fluids

View File

@ -8,16 +8,6 @@
package biomesoplenty.common.init;
import com.google.common.base.CaseFormat;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.*;
import biomesoplenty.common.crafting.BiomeEssenceRecipe;
import biomesoplenty.common.enums.*;
import biomesoplenty.common.handler.FurnaceFuelHandler;
import biomesoplenty.common.item.ItemDart;
import biomesoplenty.common.item.ItemJarFilled;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.EnumDyeColor;
@ -25,6 +15,39 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.item.BOPItems;
import biomesoplenty.common.block.BlockBOPBones;
import biomesoplenty.common.block.BlockBOPDoor;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPFence;
import biomesoplenty.common.block.BlockBOPFenceGate;
import biomesoplenty.common.block.BlockBOPFlower;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPHalfOtherSlab;
import biomesoplenty.common.block.BlockBOPHalfWoodSlab;
import biomesoplenty.common.block.BlockBOPHive;
import biomesoplenty.common.block.BlockBOPLeaves;
import biomesoplenty.common.block.BlockBOPLog;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlanks;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.block.BlockBOPSapling;
import biomesoplenty.common.block.BlockBOPSeaweed;
import biomesoplenty.common.block.BlockBOPTerrarium;
import biomesoplenty.common.block.BlockBOPWoodStairs;
import biomesoplenty.common.crafting.BiomeEssenceRecipe;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.handler.FurnaceFuelHandler;
import biomesoplenty.common.item.ItemDart;
import biomesoplenty.common.item.ItemJarFilled;
import com.google.common.base.CaseFormat;
public class ModCrafting
{
@ -212,13 +235,14 @@ public class ModCrafting
//Plants
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.shroompowder), new Object[] {new ItemStack(BOPBlocks.mushroom, 1, BlockBOPMushroom.MushroomType.TOADSTOOL.ordinal())});
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.jar_filled, 1, ItemJarFilled.JarContents.POISON.ordinal()), new Object[] {BlockBOPPlant.paging.getVariantItem(BOPPlants.POISONIVY), new ItemStack(BOPItems.jar_empty)});
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.jar_filled, 1, ItemJarFilled.JarContents.TERRARIUM.ordinal()), new Object[] {new ItemStack(BOPBlocks.moss), new ItemStack(BOPItems.jar_empty)});
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.ricebowl), new Object[] {Items.bowl, BlockBOPPlant.paging.getVariantItem(BOPPlants.WILDRICE)});
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.saladfruit), new Object[] {Items.bowl, BOPItems.berries, Items.apple, Items.melon});
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.saladveggie), new Object[] {Items.bowl, BOPItems.wildcarrots, Items.carrot, Items.potato});
GameRegistry.addShapelessRecipe(new ItemStack(BOPItems.saladshroom), new Object[] {Items.bowl, new ItemStack(BOPBlocks.mushroom, 1, BlockBOPMushroom.MushroomType.TOADSTOOL.ordinal()), new ItemStack(BOPBlocks.mushroom, 1, BlockBOPMushroom.MushroomType.PORTOBELLO.ordinal()), new ItemStack(BOPBlocks.mushroom, 1, BlockBOPMushroom.MushroomType.BLUE_MILK_CAP.ordinal())});
//Terrariums
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(BOPBlocks.terrarium, 1, BlockBOPTerrarium.TerrariumType.FERN.ordinal()), new Object[] {"blockGrass", new ItemStack(Blocks.tallgrass, 1, 2), new ItemStack(BOPItems.jar_empty)}));
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(BOPBlocks.terrarium, 1, BlockBOPTerrarium.TerrariumType.MUSHROOM.ordinal()), new Object[] {"blockGrass", new ItemStack(Blocks.red_mushroom), new ItemStack(BOPItems.jar_empty)}));
}
@ -263,6 +287,13 @@ public class ModCrafting
OreDictionary.registerOre("blockMeatRaw", new ItemStack(BOPBlocks.flesh, 1, 0));
OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.LOAMY.ordinal()));
OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.SILTY.ordinal()));
OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.SANDY.ordinal()));
OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.DAISY.ordinal()));
OreDictionary.registerOre("blockGrass", new ItemStack(BOPBlocks.grass, 1, BlockBOPGrass.BOPGrassType.ORIGIN.ordinal()));
OreDictionary.registerOre("blockGrass", new ItemStack(Blocks.grass));
OreDictionary.registerOre("foodMushroompowder", new ItemStack(BOPItems.shroompowder));
OreDictionary.registerOre("foodFruitsalad", new ItemStack(BOPItems.saladfruit));
OreDictionary.registerOre("foodVeggiesalad", new ItemStack(BOPItems.saladveggie));
@ -295,7 +326,6 @@ public class ModCrafting
OreDictionary.registerOre("record", new ItemStack(BOPItems.record_corruption));
OreDictionary.registerOre("record", new ItemStack(BOPItems.record_wanderer));
for (BOPGems gem : BOPGems.values())
{
// TODO: for some reason, Amethyst was not included in these sections in the 1.7 code - check this is correct, deliberate behavior

View File

@ -31,7 +31,7 @@ public class ItemJarFilled extends Item
public enum JarContents implements IStringSerializable
{
HONEY, POISON, PIXIE, TERRARIUM;
HONEY, POISON, PIXIE;
@Override
public String getName()
@ -151,7 +151,7 @@ public class ItemJarFilled extends Item
}
return stack;
case HONEY: case POISON: case TERRARIUM: default:
case HONEY: case POISON: default:
return stack;
}
}
@ -173,7 +173,7 @@ public class ItemJarFilled extends Item
return this.releasePixie(stack, world, player, releasePoint);
// TODO: are you supposed to be able to pour out honey? How much should you get? Why don't we just use buckets?
case HONEY: case POISON: case TERRARIUM: default:
case HONEY: case POISON: default:
return false;
}
}

View File

@ -1,5 +0,0 @@
{
"variants": {
"normal": { "model": "biomesoplenty:jar" }
}
}

View File

@ -0,0 +1,6 @@
{
"variants": {
"variant=fern": { "model": "biomesoplenty:terrarium_fern" },
"variant=mushroom": { "model": "biomesoplenty:terrarium_mushroom" }
}
}

View File

@ -125,7 +125,6 @@ item.jar_empty.name=Empty Jar
item.jar_filled_honey.name=Honey Jar
item.jar_filled_pixie.name=Pixie Jar
item.jar_filled_poison.name=Poison Extract Jar
item.jar_filled_terrarium.name=Terrarium Jar
item.lush_flower_band.name=Lush Flower Band
item.magic_door.name=Magic Door
item.mahogany_door.name=Mahogany Door
@ -438,6 +437,8 @@ tile.stone.shale.name=Shale
tile.stone.polished_shale.name=Polished Shale
tile.stone_formations.stalagmite.name=Stalagmite
tile.stone_formations.stalactite.name=Stalactite
tile.terrarium.terrarium_fern.name=Fern Terrarium
tile.terrarium.terrarium_mushroom.name=Mushroom Terrarium
tile.tree_moss.name=Tree Moss
tile.turnip_block.name=Turnip
tile.umbran_fence.name=Umbran Fence

View File

@ -10,7 +10,11 @@
"5": "biomesoplenty:blocks/jar_bottom_side",
"6": "biomesoplenty:blocks/jar_bottom",
"7": "biomesoplenty:blocks/jar_stopper_side",
"8": "biomesoplenty:blocks/jar_stopper_top"
"8": "biomesoplenty:blocks/jar_stopper_top",
"9": "biomesoplenty:blocks/jar_fern_grass_side",
"10": "biomesoplenty:blocks/jar_fern_grass_top",
"11": "biomesoplenty:blocks/jar_fern_grass_bottom",
"12": "biomesoplenty:blocks/jar_fern"
},
"elements": [
{
@ -62,6 +66,39 @@
"up": { "texture": "#8", "uv": [ 6.0, 5.0, 11.0, 10.0 ] },
"down": { "texture": "#8", "uv": [ 6.0, 5.0, 11.0, 10.0 ] }
}
},
{
"name": "Plant Base",
"from": [ 5.0, 1.0, 5.0 ],
"to": [ 12.0, 5.0, 12.0 ],
"faces": {
"north": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"east": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"south": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"west": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"up": { "texture": "#10", "uv": [ 5.0, 5.0, 12.0, 12.0 ] },
"down": { "texture": "#11", "uv": [ 5.0, 5.0, 12.0, 12.0 ] }
}
},
{
"name": "Plant Cross 1",
"from": [ 5.0, 5.0, 8.0 ],
"to": [ 12.0, 10.0, 8.0 ],
"rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": -45.0 },
"faces": {
"north": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] },
"south": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] }
}
},
{
"name": "Plant Cross 2",
"from": [ 5.0, 5.0, 8.0 ],
"to": [ 12.0, 10.0, 8.0 ],
"rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] },
"south": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] }
}
}
]
}

View File

@ -0,0 +1,104 @@
{
"__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"ambientocclusion": false,
"textures": {
"0": "biomesoplenty:blocks/jar_main_side",
"1": "biomesoplenty:blocks/jar_main_top",
"2": "biomesoplenty:blocks/jar_main_bottom",
"3": "biomesoplenty:blocks/jar_opening_side",
"4": "biomesoplenty:blocks/jar_opening_top",
"5": "biomesoplenty:blocks/jar_bottom_side",
"6": "biomesoplenty:blocks/jar_bottom",
"7": "biomesoplenty:blocks/jar_stopper_side",
"8": "biomesoplenty:blocks/jar_stopper_top",
"9": "biomesoplenty:blocks/jar_mushroom_grass_side",
"10": "biomesoplenty:blocks/jar_mushroom_grass_top",
"11": "biomesoplenty:blocks/jar_mushroom_grass_bottom",
"12": "biomesoplenty:blocks/jar_mushroom"
},
"elements": [
{
"name": "Jar",
"from": [ 4.0, 1.0, 4.0 ],
"to": [ 13.0, 9.0, 13.0 ],
"faces": {
"north": { "texture": "#0", "uv": [ 4.0, 7.0, 13.0, 15.0 ] },
"east": { "texture": "#0", "uv": [ 4.0, 7.0, 13.0, 15.0 ] },
"south": { "texture": "#0", "uv": [ 4.0, 7.0, 13.0, 15.0 ] },
"west": { "texture": "#0", "uv": [ 4.0, 7.0, 13.0, 15.0 ] },
"up": { "texture": "#1", "uv": [ 4.0, 4.0, 13.0, 13.0 ] },
"down": { "texture": "#2", "uv": [ 4.0, 4.0, 13.0, 13.0 ] }
}
},
{
"name": "Opening",
"from": [ 5.0, 9.0, 5.0 ],
"to": [ 12.0, 12.0, 12.0 ],
"faces": {
"north": { "texture": "#3", "uv": [ 5.0, 4.0, 12.0, 7.0 ] },
"east": { "texture": "#3", "uv": [ 5.0, 4.0, 12.0, 7.0 ] },
"south": { "texture": "#3", "uv": [ 5.0, 4.0, 12.0, 7.0 ] },
"west": { "texture": "#3", "uv": [ 5.0, 4.0, 12.0, 7.0 ] },
"up": { "texture": "#4", "uv": [ 5.0, 5.0, 12.0, 12.0 ] }
}
},
{
"name": "Bottom",
"from": [ 5.0, 0.0, 5.0 ],
"to": [ 12.0, 1.0, 12.0 ],
"faces": {
"north": { "texture": "#5", "uv": [ 5.0, 16.0, 12.0, 15.0 ] },
"east": { "texture": "#5", "uv": [ 5.0, 16.0, 12.0, 15.0 ] },
"south": { "texture": "#5", "uv": [ 5.0, 16.0, 12.0, 15.0 ] },
"west": { "texture": "#5", "uv": [ 5.0, 16.0, 12.0, 15.0 ] },
"down": { "texture": "#6", "uv": [ 5.0, 5.0, 12.0, 12.0 ] }
}
},
{
"name": "Stopper",
"from": [ 6.0, 10.0, 6.0 ],
"to": [ 11.0, 13.0, 11.0 ],
"faces": {
"north": { "texture": "#7", "uv": [ 6.0, 3.0, 11.0, 6.0 ] },
"east": { "texture": "#7", "uv": [ 6.0, 3.0, 11.0, 6.0 ] },
"south": { "texture": "#7", "uv": [ 6.0, 3.0, 11.0, 6.0 ] },
"west": { "texture": "#7", "uv": [ 6.0, 3.0, 11.0, 6.0 ] },
"up": { "texture": "#8", "uv": [ 6.0, 5.0, 11.0, 10.0 ] },
"down": { "texture": "#8", "uv": [ 6.0, 5.0, 11.0, 10.0 ] }
}
},
{
"name": "Plant Base",
"from": [ 5.0, 1.0, 5.0 ],
"to": [ 12.0, 5.0, 12.0 ],
"faces": {
"north": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"east": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"south": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"west": { "texture": "#9", "uv": [ 5.0, 10.0, 12.0, 14.0 ] },
"up": { "texture": "#10", "uv": [ 5.0, 5.0, 12.0, 12.0 ] },
"down": { "texture": "#11", "uv": [ 5.0, 5.0, 12.0, 12.0 ] }
}
},
{
"name": "Plant Cross 1",
"from": [ 5.0, 5.0, 8.0 ],
"to": [ 12.0, 10.0, 8.0 ],
"rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": -45.0 },
"faces": {
"north": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] },
"south": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] }
}
},
{
"name": "Plant Cross 2",
"from": [ 5.0, 5.0, 8.0 ],
"to": [ 12.0, 10.0, 8.0 ],
"rotation": { "origin": [ 8.0, 8.0, 8.0 ], "axis": "y", "angle": 45.0 },
"faces": {
"north": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] },
"south": { "texture": "#12", "uv": [ 5.0, 5.0, 12.0, 10.0 ] }
}
}
]
}

View File

@ -1,10 +0,0 @@
{
"parent": "biomesoplenty:block/jar_block",
"display": {
"thirdperson": {
"rotation": [ 10, -45, 170 ],
"translation": [ 0, 1.5, -2.75 ],
"scale": [ 0.375, 0.375, 0.375 ]
}
}
}

View File

@ -1,7 +1,7 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:items/jar_filled_terrarium"
"layer0": "biomesoplenty:items/terrarium_fern"
},
"display": {
"thirdperson": {

View File

@ -0,0 +1,18 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:items/terrarium_mushroom"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B