"Finished" terrarium jars (More variants coming soon!)
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
130
src/main/java/biomesoplenty/common/block/BlockBOPTerrarium.java
Normal 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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"variants": {
|
||||
"normal": { "model": "biomesoplenty:jar" }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"variants": {
|
||||
"variant=fern": { "model": "biomesoplenty:terrarium_fern" },
|
||||
"variant=mushroom": { "model": "biomesoplenty:terrarium_mushroom" }
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"parent": "builtin/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/jar_filled_terrarium"
|
||||
"layer0": "biomesoplenty:items/terrarium_fern"
|
||||
},
|
||||
"display": {
|
||||
"thirdperson": {
|
|
@ -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 ]
|
||||
}
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 256 B |
After Width: | Height: | Size: 233 B |
After Width: | Height: | Size: 253 B |
After Width: | Height: | Size: 233 B |
After Width: | Height: | Size: 282 B |
After Width: | Height: | Size: 221 B |
After Width: | Height: | Size: 236 B |
After Width: | Height: | Size: 220 B |
Before Width: | Height: | Size: 356 B |
After Width: | Height: | Size: 345 B |
After Width: | Height: | Size: 360 B |