diff --git a/src/main/java/vazkii/botania/common/block/BlockRoot.java b/src/main/java/vazkii/botania/common/block/BlockRoot.java new file mode 100644 index 000000000..07204d101 --- /dev/null +++ b/src/main/java/vazkii/botania/common/block/BlockRoot.java @@ -0,0 +1,48 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under the + * Botania License: http://botaniamod.net/license.php + * + * File Created @ [Jul 7, 2015, 4:27:47 PM (GMT)] + */ +package vazkii.botania.common.block; + +import java.util.ArrayList; +import java.util.Random; + +import vazkii.botania.common.item.ModItems; +import vazkii.botania.common.lib.LibBlockNames; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class BlockRoot extends BlockMod { + + public BlockRoot() { + super(Material.plants); + setHardness(1.2F); + setStepSound(soundTypeWood); + setBlockName(LibBlockNames.ROOT); + } + + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return ModItems.manaResource; + } + + @Override + public int damageDropped(int p_149692_1_) { + return 20; + } + + @Override + public int quantityDropped(Random r) { + return 2 + r.nextInt(2); + } + +} diff --git a/src/main/java/vazkii/botania/common/block/ModBlocks.java b/src/main/java/vazkii/botania/common/block/ModBlocks.java index 95cc70cc6..9a2405f7f 100644 --- a/src/main/java/vazkii/botania/common/block/ModBlocks.java +++ b/src/main/java/vazkii/botania/common/block/ModBlocks.java @@ -231,6 +231,7 @@ public final class ModBlocks { public static Block hourglass; public static Block ghostRail; public static Block sparkChanger; + public static Block root; public static void init() { flower = new BlockModFlower(); @@ -305,7 +306,8 @@ public final class ModBlocks { hourglass = new BlockHourglass(); ghostRail = new BlockGhostRail(); sparkChanger = new BlockSparkChanger(); - + root = new BlockRoot(); + ModFluffBlocks.init(); for(int i = 0; i < 16; i++) diff --git a/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java b/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java index 8a3c36261..8038dcae6 100644 --- a/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java +++ b/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java @@ -107,6 +107,8 @@ public final class BotaniaCreativeTab extends CreativeTabs { addBlock(ModBlocks.spawnerClaw); addItem(ModItems.blackHoleTalisman); + if(Botania.gardenOfGlassLoaded) + addBlock(ModBlocks.root); addBlock(ModBlocks.livingrock); addBlock(ModBlocks.livingwood); addBlock(ModBlocks.openCrate); diff --git a/src/main/java/vazkii/botania/common/item/ModItems.java b/src/main/java/vazkii/botania/common/item/ModItems.java index e4c89eabe..45c342ed9 100644 --- a/src/main/java/vazkii/botania/common/item/ModItems.java +++ b/src/main/java/vazkii/botania/common/item/ModItems.java @@ -405,6 +405,8 @@ public final class ModItems { OreDictionary.registerOre(LibOreDict.MANASTEEL_NUGGET, new ItemStack(manaResource, 1, 17)); OreDictionary.registerOre(LibOreDict.TERRASTEEL_NUGGET, new ItemStack(manaResource, 1, 18)); OreDictionary.registerOre(LibOreDict.ELEMENTIUM_NUGGET, new ItemStack(manaResource, 1, 19)); + OreDictionary.registerOre(LibOreDict.ROOT, new ItemStack(manaResource, 1, 20)); + OreDictionary.registerOre(LibOreDict.PEBBLE, new ItemStack(manaResource, 1, 21)); OreDictionary.registerOre(LibOreDict.VIAL, new ItemStack(vial, 1, 0)); OreDictionary.registerOre(LibOreDict.FLASK, new ItemStack(vial, 1, 1)); diff --git a/src/main/java/vazkii/botania/common/item/material/ItemManaResource.java b/src/main/java/vazkii/botania/common/item/material/ItemManaResource.java index 6854ab867..3e1c80307 100644 --- a/src/main/java/vazkii/botania/common/item/material/ItemManaResource.java +++ b/src/main/java/vazkii/botania/common/item/material/ItemManaResource.java @@ -45,7 +45,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class ItemManaResource extends ItemMod implements IFlowerComponent, IElvenItem, IPickupAchievement { - final int types = 20; + final int types = 22; IIcon[] icons; public IIcon tailIcon = null; @@ -115,7 +115,8 @@ public class ItemManaResource extends ItemMod implements IFlowerComponent, IElve @SideOnly(Side.CLIENT) public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for(int i = 0; i < types; i++) - par3List.add(new ItemStack(par1, 1, i)); + if(Botania.gardenOfGlassLoaded || (i != 20 && i != 21)) + par3List.add(new ItemStack(par1, 1, i)); } @Override diff --git a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java index 0390c2362..7acadddd4 100644 --- a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java @@ -87,6 +87,7 @@ public final class LibBlockNames { public static final String HOURGLASS = "hourglass"; public static final String GHOST_RAIL = "ghostRail"; public static final String SPARK_CHANGER = "sparkChanger"; + public static final String ROOT = "root"; public static final String SUBTILE_PUREDAISY = "puredaisy"; public static final String SUBTILE_MANASTAR = "manastar"; diff --git a/src/main/java/vazkii/botania/common/lib/LibItemNames.java b/src/main/java/vazkii/botania/common/lib/LibItemNames.java index 54eba7757..5da4cb2d4 100644 --- a/src/main/java/vazkii/botania/common/lib/LibItemNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibItemNames.java @@ -187,6 +187,8 @@ public final class LibItemNames { "manaString", "manasteelNugget", "terrasteelNugget", - "elementiumNugget" + "elementiumNugget", + "root", + "pebble" }; } diff --git a/src/main/java/vazkii/botania/common/lib/LibOreDict.java b/src/main/java/vazkii/botania/common/lib/LibOreDict.java index c5c2bb08f..3af3e791a 100644 --- a/src/main/java/vazkii/botania/common/lib/LibOreDict.java +++ b/src/main/java/vazkii/botania/common/lib/LibOreDict.java @@ -38,6 +38,8 @@ public final class LibOreDict { public static final String MANASTEEL_NUGGET = "nuggetManasteel"; public static final String TERRASTEEL_NUGGET = "nuggetTerrasteel"; public static final String ELEMENTIUM_NUGGET = "nuggetElvenElementium"; + public static final String ROOT = "root"; + public static final String PEBBLE = "pebble"; public static final String VIAL = "bVial"; public static final String FLASK = "bFlask"; diff --git a/src/main/java/vazkii/botania/common/world/WorldTypeSkyblock.java b/src/main/java/vazkii/botania/common/world/WorldTypeSkyblock.java index 85255098e..39df20308 100644 --- a/src/main/java/vazkii/botania/common/world/WorldTypeSkyblock.java +++ b/src/main/java/vazkii/botania/common/world/WorldTypeSkyblock.java @@ -13,15 +13,16 @@ package vazkii.botania.common.world; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraft.world.WorldType; -import net.minecraft.world.biome.WorldChunkManager; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkProviderFlat; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; -import cpw.mods.fml.common.FMLCommonHandler; +import vazkii.botania.common.block.ModBlocks; +import vazkii.botania.common.item.ModItems; import cpw.mods.fml.common.eventhandler.SubscribeEvent; public class WorldTypeSkyblock extends WorldType { @@ -74,20 +75,43 @@ public class WorldTypeSkyblock extends WorldType { if(isWorldSkyblock(world)) { ChunkCoordinates coords = world.getSpawnPoint(); if(world.getBlock(coords.posX, coords.posY - 4, coords.posZ) != Blocks.bedrock) { - for(int i = 0; i < 3; i++) - for(int j = 0; j < 4; j++) - for(int k = 0; k < 3; k++) - world.setBlock(coords.posX - 1 + i, coords.posY - 1 - j, coords.posZ - 1 + k, j == 0 ? Blocks.grass : Blocks.dirt); - world.setBlock(coords.posX, coords.posY - 4, coords.posZ, Blocks.bedrock); + createSkyblock(world, coords.posX, coords.posY, coords.posZ); if(player instanceof EntityPlayerMP) { EntityPlayerMP pmp = (EntityPlayerMP) player; pmp.setPositionAndUpdate(coords.posX + 0.5, coords.posY + 1.6, coords.posZ + 0.5); + pmp.inventory.addItemStackToInventory(new ItemStack(ModItems.lexicon)); } } } - } } + public void createSkyblock(World world, int x, int y, int z) { + for(int i = 0; i < 3; i++) + for(int j = 0; j < 4; j++) + for(int k = 0; k < 3; k++) + world.setBlock(x - 1 + i, y - 1 - j, z - 1 + k, j == 0 ? Blocks.grass : Blocks.dirt); + world.setBlock(x - 1, y - 2, z, Blocks.flowing_water); + world.setBlock(x + 1, y + 2, z + 1, ModBlocks.manaFlame); + + int[][] rootPositions = new int[][] { + { -1, -3, -1 }, + { -2, -4, -1 }, + { -2, -4, -2 }, + { +1, -4, -1 }, + { +1, -5, -1 }, + { +2, -5, -1 }, + { +2, -6, +0 }, + { +0, -4, +2 }, + { +0, -5, +2 }, + { +0, -5, +3 }, + { +0, -6, +3 }, + }; + for(int[] root : rootPositions) + world.setBlock(x + root[0], y + root[1], z + root[2], ModBlocks.root); + + world.setBlock(x, y - 4, z, Blocks.bedrock); + } + } diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index d722aeb98..07d7bc4ed 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -989,6 +989,7 @@ tile.botania:incensePlate.name=Incense Plate tile.botania:hourglass.name=Hovering Hourglass tile.botania:ghostRail.name=Spectral Rail tile.botania:sparkChanger.name=Spark Tinkerer +tile.botania:livingRoot.name=Living Root # FLOWER NAMES tile.botania:flower..name=Botania Flower @@ -1402,6 +1403,8 @@ item.botania:terraAxe.name=Terra Truncator item.botania:manasteelNugget.name=Manasteel Nugget item.botania:terrasteelNugget.name=Terrasteel Nugget item.botania:elementiumNugget.name=Elementium Nugget +item.botania:root.name=Living Root +item.botania:pebble.name=Pebble # BREW NAMES botania.brew.fallback=Fallback diff --git a/src/main/resources/assets/botania/textures/blocks/root.png b/src/main/resources/assets/botania/textures/blocks/root.png new file mode 100644 index 000000000..35aa475e7 Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/root.png differ diff --git a/src/main/resources/assets/botania/textures/items/pebble.png b/src/main/resources/assets/botania/textures/items/pebble.png new file mode 100644 index 000000000..97906d266 Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/pebble.png differ diff --git a/src/main/resources/assets/botania/textures/items/root.png b/src/main/resources/assets/botania/textures/items/root.png new file mode 100644 index 000000000..e1b386741 Binary files /dev/null and b/src/main/resources/assets/botania/textures/items/root.png differ