diff --git a/build.properties b/build.properties index 6c9c2ce36..0231ce683 100644 --- a/build.properties +++ b/build.properties @@ -1,3 +1,3 @@ minecraft_version=1.8 -forge_version=7.10.93.1001-1.8 +forge_version=8.0.2.1009-1.8 mod_version=3.0.0 diff --git a/src/main/java/biomesoplenty/api/block/BOPPlant.java b/src/main/java/biomesoplenty/api/block/BOPPlant.java index f3ac83ff5..3edb36c65 100644 --- a/src/main/java/biomesoplenty/api/block/BOPPlant.java +++ b/src/main/java/biomesoplenty/api/block/BOPPlant.java @@ -15,8 +15,10 @@ import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; +import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumWorldBlockLayer; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; @@ -34,10 +36,16 @@ public class BOPPlant extends BOPBlock this.setStepSound(Block.soundTypeGrass); } + @Override + public boolean canReplace(World world, BlockPos pos, EnumFacing side, ItemStack stack) + { + return super.canPlaceBlockOnSide(world, pos, side) && this.canBlockStay(world, pos, this.getStateFromMeta(stack.getMetadata())); + } + @Override public boolean canPlaceBlockAt(World world, BlockPos pos) { - return super.canPlaceBlockAt(world, pos) && this.canBlockStay(world, pos, world.getBlockState(pos)); + return super.canPlaceBlockAt(world, pos) && this.canBlockStay(world, pos, this.getDefaultState()); } public boolean canBlockStay(World world, BlockPos pos, IBlockState state) @@ -93,4 +101,11 @@ public class BOPPlant extends BOPBlock { return EnumWorldBlockLayer.CUTOUT; } + + @Override + @SideOnly(Side.CLIENT) + public Block.EnumOffsetType getOffsetType() + { + return Block.EnumOffsetType.XZ; + } } diff --git a/src/main/java/biomesoplenty/common/block/BlockBOPFlower.java b/src/main/java/biomesoplenty/common/block/BlockBOPFlower.java index 2461d07a0..2ac408af9 100644 --- a/src/main/java/biomesoplenty/common/block/BlockBOPFlower.java +++ b/src/main/java/biomesoplenty/common/block/BlockBOPFlower.java @@ -16,6 +16,15 @@ 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.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemShears; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; @@ -39,7 +48,34 @@ public class BlockBOPFlower extends BOPPlant super(VARIANT_PROP); } - //TODO: Add light for glowflowers (Requires Forge) + //TODO: Add light for glowflowers and enderlotus (Requires Forge) + + //TODO: Make enderlotus require spectral moss + //TODO: Make bromeliads require hard dirt, hardened clay or sand + + @Override + public void harvestBlock(World world, EntityPlayer player, BlockPos pos, IBlockState state, TileEntity tileentity) + { + super.harvestBlock(world, player, pos, state, tileentity); + + FlowerType type = (FlowerType)state.getValue(VARIANT_PROP); + + if (type == FlowerType.DEATHBLOOM && (player.getCurrentEquippedItem() == null || !(player.getCurrentEquippedItem().getItem() instanceof ItemShears))) + { + player.addPotionEffect(new PotionEffect(Potion.wither.id, 300)); + } + } + + @Override + public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) + { + FlowerType type = (FlowerType)state.getValue(VARIANT_PROP); + + if (entity instanceof EntityLivingBase && type == FlowerType.DEATHBLOOM) + { + ((EntityLivingBase)entity).addPotionEffect(new PotionEffect(Potion.wither.id, 200)); + } + } @Override protected BlockState createBlockState() @@ -70,19 +106,20 @@ public class BlockBOPFlower extends BOPPlant this.setBlockBounds(0.3F, 0.0F, 0.3F, 0.7F, 0.5F, 0.7F); break; + case ENDERLOTUS: + this.setBlockBounds(0.3F, 0.0F, 0.3F, 0.7F, 0.4F, 0.7F); + break; + + case DANDELION: + this.setBlockBounds(0.3F, 0.0F, 0.3F, 0.7F, 0.6F, 0.7F); + break; + default: this.setBlockBounds(0.1F, 0.0F, 0.1F, 0.9F, 0.8F, 0.9F); break; } } - @Override - @SideOnly(Side.CLIENT) - public Block.EnumOffsetType getOffsetType() - { - return Block.EnumOffsetType.XZ; - } - @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, BlockPos pos, IBlockState state, Random rand) @@ -94,6 +131,8 @@ public class BlockBOPFlower extends BOPPlant } } + //TODO: Readd eyebulb in as a seperate block + //TODO: Readd dandelion blowing public static enum FlowerType implements IBOPVariant { CLOVER, @@ -105,7 +144,10 @@ public class BlockBOPFlower extends BOPPlant PINK_DAFFODIL, WILDFLOWER, VIOLET, - WHITE_ANEMONE; + WHITE_ANEMONE, + ENDERLOTUS, + BROMELIAD, + DANDELION; @Override public String getBaseName() diff --git a/src/main/java/biomesoplenty/common/init/ModBlocks.java b/src/main/java/biomesoplenty/common/init/ModBlocks.java index 13b4698dc..c33fecf50 100644 --- a/src/main/java/biomesoplenty/common/init/ModBlocks.java +++ b/src/main/java/biomesoplenty/common/init/ModBlocks.java @@ -11,6 +11,7 @@ package biomesoplenty.common.init; import static biomesoplenty.api.block.BOPBlocks.*; import net.minecraft.block.Block; import net.minecraft.item.Item; +import net.minecraftforge.fml.common.registry.GameRegistry; import biomesoplenty.api.block.BOPBlock; import biomesoplenty.api.block.IBOPVariant; import biomesoplenty.client.util.ModelHelper; @@ -22,7 +23,6 @@ import biomesoplenty.common.block.BlockBOPLog2; import biomesoplenty.common.block.BlockBOPLog3; import biomesoplenty.common.block.BlockBOPLog4; import biomesoplenty.common.item.ItemBlockWithVariants; -import biomesoplenty.common.util.RegistryUtil; import biomesoplenty.core.BiomesOPlenty; public class ModBlocks @@ -44,7 +44,7 @@ public class ModBlocks if (block.hasVariants()) { - RegistryUtil.registerBlock(block, ItemBlockWithVariants.class, name); + GameRegistry.registerBlock(block, ItemBlockWithVariants.class, name); for (IBOPVariant variant : block.getVariants()) { @@ -56,7 +56,7 @@ public class ModBlocks } else { - RegistryUtil.registerBlock(block, name); + GameRegistry.registerBlock(block, name); ModelHelper.addVariantName(Item.getItemFromBlock(block), BiomesOPlenty.MOD_ID + ":" + name); BiomesOPlenty.proxy.registerBlockForMeshing(block, 0, name); diff --git a/src/main/java/biomesoplenty/common/util/RegistryUtil.java b/src/main/java/biomesoplenty/common/util/RegistryUtil.java deleted file mode 100644 index 59735b070..000000000 --- a/src/main/java/biomesoplenty/common/util/RegistryUtil.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright 2014, 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.util; - -import java.util.Iterator; -import java.util.Map; - -import biomesoplenty.core.BiomesOPlenty; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; -import net.minecraftforge.fml.common.registry.GameRegistry; - -public class RegistryUtil -{ - public static Block registerBlock(Block block, String name) - { - return registerBlock(block, ItemBlock.class, name); - } - - public static Block registerBlock(Block block, Class itemclass, String name) - { - return registerBlock(block, itemclass, name, new Object[]{}); - } - - public static Block registerBlock(Block block, Class itemclass, String name, Object... itemCtorArgs) - { - block = GameRegistry.registerBlock(block, itemclass, name, itemCtorArgs); - - Iterator iterator = block.getBlockState().getValidStates().iterator(); - - while (iterator.hasNext()) - { - IBlockState iblockstate = (IBlockState)iterator.next(); - int id = Block.blockRegistry.getIDForObject(block) << 4 | block.getMetaFromState(iblockstate); - Block.BLOCK_STATE_IDS.put(iblockstate, id); - } - - return block; - } -} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flower.json b/src/main/resources/assets/biomesoplenty/blockstates/flower.json index 7d925b05a..8ecde031d 100755 --- a/src/main/resources/assets/biomesoplenty/blockstates/flower.json +++ b/src/main/resources/assets/biomesoplenty/blockstates/flower.json @@ -9,6 +9,9 @@ "variant=pink_daffodil": { "model": "biomesoplenty:pink_daffodil" }, "variant=wildflower": { "model": "biomesoplenty:wildflower" }, "variant=violet": { "model": "biomesoplenty:violet" }, - "variant=white_anemone": { "model": "biomesoplenty:white_anemone" } + "variant=white_anemone": { "model": "biomesoplenty:white_anemone" }, + "variant=enderlotus": { "model": "biomesoplenty:enderlotus" }, + "variant=bromeliad": { "model": "biomesoplenty:bromeliad" }, + "variant=dandelion": { "model": "biomesoplenty:dandelion" } } } diff --git a/src/main/resources/assets/biomesoplenty/lang/en_US.lang b/src/main/resources/assets/biomesoplenty/lang/en_US.lang index 9c4e75f95..6dee65d3d 100644 --- a/src/main/resources/assets/biomesoplenty/lang/en_US.lang +++ b/src/main/resources/assets/biomesoplenty/lang/en_US.lang @@ -10,6 +10,9 @@ tile.flower.pink_daffodil.name=Pink Dafodil tile.flower.wildflower.name=Wildflower tile.flower.violet.name=Violet tile.flower.white_anemone.name=White Anemone +tile.flower.enderlotus.name=Enderlotus +tile.flower.bromeliad.name=Bromeliad +tile.flower.dandelion.name=Dandelion Puff tile.log.sacred_oak.name=Sacred Oak Wood tile.log.cherry.name=Cherry Wood diff --git a/src/main/resources/assets/biomesoplenty/models/block/bromeliad.json b/src/main/resources/assets/biomesoplenty/models/block/bromeliad.json new file mode 100644 index 000000000..377034969 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bromeliad.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:blocks/bromeliad" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dandelion.json b/src/main/resources/assets/biomesoplenty/models/block/dandelion.json new file mode 100644 index 000000000..eb3af97bd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dandelion.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:blocks/dandelion" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/enderlotus.json b/src/main/resources/assets/biomesoplenty/models/block/enderlotus.json new file mode 100644 index 000000000..cfa4bf16f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/enderlotus.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:blocks/enderlotus" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/bromeliad.json b/src/main/resources/assets/biomesoplenty/models/item/bromeliad.json new file mode 100644 index 000000000..d8e9a8b66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bromeliad.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "biomesoplenty:blocks/bromeliad" + }, + "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 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dandelion.json b/src/main/resources/assets/biomesoplenty/models/item/dandelion.json new file mode 100644 index 000000000..e145c7d32 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dandelion.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "biomesoplenty:blocks/dandelion" + }, + "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 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/enderlotus.json b/src/main/resources/assets/biomesoplenty/models/item/enderlotus.json new file mode 100644 index 000000000..2d34b0c12 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/enderlotus.json @@ -0,0 +1,18 @@ +{ + "parent": "builtin/generated", + "textures": { + "layer0": "biomesoplenty:blocks/enderlotus" + }, + "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 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/bromeliad.png b/src/main/resources/assets/biomesoplenty/textures/blocks/bromeliad.png new file mode 100644 index 000000000..c30a63abb Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/bromeliad.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/dandelion.png b/src/main/resources/assets/biomesoplenty/textures/blocks/dandelion.png new file mode 100644 index 000000000..bc6063a4c Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/dandelion.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/enderlotus.png b/src/main/resources/assets/biomesoplenty/textures/blocks/enderlotus.png new file mode 100644 index 000000000..32643090a Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/enderlotus.png differ diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/waterlily.png b/src/main/resources/assets/biomesoplenty/textures/blocks/waterlily.png new file mode 100644 index 000000000..0306097a9 Binary files /dev/null and b/src/main/resources/assets/biomesoplenty/textures/blocks/waterlily.png differ