Posted May 28, 201510 yr After creating two oil buckets, custom fluid, then when testing it created infinite from the bucket, so i obviously did something wrong, and when trying to add the liquids into tanks it doesn't show a texture, or in portable tanks it shows lava, I'll add in my fluid classes and the bucket, ask if anything else is needed Filled bucket package com.iceminecrafter.IME.items; import com.iceminecrafter.IME.IcesMinecraftExpansion; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class MFCOilBucket extends ItemBucket { public MFCOilBucket(Block block) { super(block); this.setCreativeTab(IcesMinecraftExpansion.MFC); } public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, int x, int y, int z, EntityPlayer par3EntityPlayer) { if (this.tryPlaceContainedLiquid(par2World, x, y, z) && !par3EntityPlayer.capabilities.isCreativeMode) { return new ItemStack(Items.bucket); } else{ return par1ItemStack; } } public boolean tryPlaceContainedLiquid(World world, int x, int y, int z){ if(!world.isAirBlock(x,y,z)){ return false; }else { world.setBlock(x, y, z, IcesMinecraftExpansion.MFCCrudeOil, 0, 3); } return false; } } Fluid class package com.iceminecrafter.IME.blocks; import com.iceminecrafter.IME.IcesMinecraftExpansion; import net.minecraft.block.material.Material; import net.minecraftforge.fluids.BlockFluidClassic; import net.minecraftforge.fluids.Fluid; public class MFCCrudeOil extends BlockFluidClassic{ public MFCCrudeOil(Fluid fluid, Material material) { super(IcesMinecraftExpansion.CrudeOil, Material.water); } } Fluid block class package com.iceminecrafter.IME.blocks; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fluids.BlockFluidClassic; import net.minecraftforge.fluids.Fluid; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class MFCBlockCrudeOil extends BlockFluidClassic{ @SideOnly(Side.CLIENT) protected IIcon stillIcon; @SideOnly(Side.CLIENT) protected IIcon flowingIcon; public MFCBlockCrudeOil(Fluid fluid, Material material) { super(fluid, material); setCreativeTab(CreativeTabs.tabMisc); } @Override public IIcon getIcon(int side, int meta) { return (side == 0 || side == 1)? stillIcon : flowingIcon; } @SideOnly(Side.CLIENT) @Override public void registerBlockIcons(IIconRegister register) { stillIcon = register.registerIcon("metalforgecraft:CrudeOilStill"); flowingIcon = register.registerIcon("metalforgecraft:CrudeOilFlowing"); } @Override public boolean canDisplace(IBlockAccess world, int x, int y, int z) { if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false; return super.canDisplace(world, x, y, z); } @Override public boolean displaceIfPossible(World world, int x, int y, int z) { if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false; return super.displaceIfPossible(world, x, y, z); } } Main class fluid stuff CrudeOil = new Fluid("CrudeOil").setDensity(2000); FluidRegistry.registerFluid(CrudeOil); materialOil = new MaterialLiquid(MapColor.obsidianColor); MFCCrudeOil = new MFCCrudeOil(CrudeOil, materialOil).setBlockName("MFCCrudeOil").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":CrudeOilStill"); MFCOilBucket = new MFCOilBucket(MFCCrudeOil).setUnlocalizedName("MFCOilBucket").setMaxStackSize(1).setContainerItem(Items.bucket).setTextureName("metalforgecraft" + ":OilBucket"); MFCSolidCrudeOil = new MFCSolidCrudeOil().setBlockName("MFCSolidCrudeOil").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":CrudeOilStill"); MFCOilShale = new com.iceminecrafter.IME.blocks.MFCOilShale().setBlockName("MFCOilShale").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":OilShale"); ShaleOil = new Fluid("ShaleOil").setDensity(2000); FluidRegistry.registerFluid(ShaleOil); MFCShaleOil = new MFCShaleOil(ShaleOil, materialOil).setBlockName("MFCShaleOil").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":CrudeOilStill"); MFCShaleOilBucket = new MFCShaleOilBucket(MFCShaleOil).setUnlocalizedName("MFCShaleOilBucket").setMaxStackSize(1).setContainerItem(Items.bucket).setTextureName("metalforgecraft" + ":OilBucket"); Help is much appreciated. And if your just gonna say words to the effect of "Go do it yourself / find it out" don't even bother as I've looked and tried
May 28, 201510 yr You are not setting the block to your fluid ... so it goes water as default + it should be onItemUse method + you need to override I'm beginner in java and in minecraft modding. Please be specific. Any code examples are appreciated. Sorry for my english i'm from Czech republic. Please hit that thank you button if i helped
May 29, 201510 yr Author Thanks, fixed afew things, yet buckets are still infinite, and It wont accept the @Override notation above the onItemUse package com.iceminecrafter.IME.items; import com.iceminecrafter.IME.IcesMinecraftExpansion; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class MFCOilBucket extends ItemBucket { public MFCOilBucket(Block block) { super(block); this.setCreativeTab(IcesMinecraftExpansion.MFC); } public ItemStack onItemUse(ItemStack par1ItemStack, World par2World, int x, int y, int z, EntityPlayer par3EntityPlayer) { if (this.tryPlaceContainedLiquid(par2World, x, y, z) && !par3EntityPlayer.capabilities.isCreativeMode) { return new ItemStack(Items.bucket); } else{ return par1ItemStack; } } public boolean tryPlaceContainedLiquid(World world, int x, int y, int z){ if(!world.isAirBlock(x,y,z)){ return false; }else { world.setBlock(x, y, z, IcesMinecraftExpansion.MFCCrudeOil, 0, 3); } return false; } }
May 29, 201510 yr maybe its because you dont have correct parameters ? you should look to item.class to see theses are the correct parameters ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_ + its public boolean onItemUse I'm beginner in java and in minecraft modding. Please be specific. Any code examples are appreciated. Sorry for my english i'm from Czech republic. Please hit that thank you button if i helped
May 29, 201510 yr Ok, I can place it down now, yet I can't pick it back up... Call super.onItemUse instead of returning (in else block)... Please update your code, if you are wondering where is else block... Also, it could be better idea to use item fluid containers, but oh well... Check out my mods: BTAM Armor sets Avoid Exploding Creepers Tools compressor Anti Id Conflict Key bindings overhaul Colourfull blocks Invisi Zones
May 29, 201510 yr Author Filled bucket package com.iceminecrafter.IME.items; import com.iceminecrafter.IME.IcesMinecraftExpansion; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class MFCOilBucket extends ItemBucket { public MFCOilBucket(Block block) { super(block); this.setCreativeTab(IcesMinecraftExpansion.MFC); } public ItemStack onItemUse(ItemStack par1ItemStack, World par2World, int x, int y, int z, EntityPlayer par3EntityPlayer) { if (this.tryPlaceContainedLiquid(par2World, x, y, z) && !par3EntityPlayer.capabilities.isCreativeMode) { return new ItemStack(Items.bucket); } else{ return par1ItemStack; } } @Override public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_){ if(!p_77648_3_.isAirBlock(p_77648_4_,p_77648_5_,p_77648_6_)){ return false; }else { p_77648_3_.setBlock(p_77648_4_,p_77648_5_,p_77648_6_, IcesMinecraftExpansion.MFCCrudeOil, 0, 3); } return false; } } Liquids package com.iceminecrafter.IME.blocks; import com.iceminecrafter.IME.IcesMinecraftExpansion; import net.minecraft.block.material.Material; import net.minecraftforge.fluids.BlockFluidClassic; import net.minecraftforge.fluids.Fluid; public class MFCCrudeOil extends BlockFluidClassic{ public MFCCrudeOil(Fluid fluid, Material material) { super(IcesMinecraftExpansion.CrudeOil, IcesMinecraftExpansion.materialOil); } } Liquid Blocks package com.iceminecrafter.IME.blocks; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fluids.BlockFluidClassic; import net.minecraftforge.fluids.Fluid; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class MFCBlockCrudeOil extends BlockFluidClassic{ @SideOnly(Side.CLIENT) protected IIcon stillIcon; @SideOnly(Side.CLIENT) protected IIcon flowingIcon; public MFCBlockCrudeOil(Fluid fluid, Material material) { super(fluid, material); setCreativeTab(CreativeTabs.tabMisc); } @Override public IIcon getIcon(int side, int meta) { return (side == 0 || side == 1)? stillIcon : flowingIcon; } @SideOnly(Side.CLIENT) @Override public void registerBlockIcons(IIconRegister register) { stillIcon = register.registerIcon("metalforgecraft:CrudeOilStill"); flowingIcon = register.registerIcon("metalforgecraft:CrudeOilFlowing"); } @Override public boolean canDisplace(IBlockAccess world, int x, int y, int z) { if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false; return super.canDisplace(world, x, y, z); } @Override public boolean displaceIfPossible(World world, int x, int y, int z) { if (world.getBlock(x, y, z).getMaterial().isLiquid()) return false; return super.displaceIfPossible(world, x, y, z); } } Main Class //Fluid related (Do in order) CrudeOil = new Fluid("CrudeOil").setDensity(2000); FluidRegistry.registerFluid(CrudeOil); materialOil = new MaterialLiquid(MapColor.obsidianColor); MFCCrudeOil = new MFCCrudeOil(CrudeOil, materialOil).setBlockName("MFCCrudeOil").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":CrudeOilStill"); MFCOilBucket = new MFCOilBucket(MFCCrudeOil).setUnlocalizedName("MFCOilBucket").setMaxStackSize(1).setContainerItem(Items.bucket).setTextureName("metalforgecraft" + ":OilBucket"); MFCSolidCrudeOil = new MFCSolidCrudeOil().setBlockName("MFCSolidCrudeOil").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":CrudeOilStill"); MFCOilShale = new com.iceminecrafter.IME.blocks.MFCOilShale().setBlockName("MFCOilShale").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":OilShale"); ShaleOil = new Fluid("ShaleOil").setDensity(2000); FluidRegistry.registerFluid(ShaleOil); MFCShaleOil = new MFCShaleOil(ShaleOil, materialOil).setBlockName("MFCShaleOil").setCreativeTab(MFC).setBlockTextureName("metalforgecraft" + ":CrudeOilStill"); MFCShaleOilBucket = new MFCShaleOilBucket(MFCShaleOil).setUnlocalizedName("MFCShaleOilBucket").setMaxStackSize(1).setContainerItem(Items.bucket).setTextureName("metalforgecraft" + ":OilBucket");
May 29, 201510 yr Author Ok, I can place it down now, yet I can't pick it back up... Call super.onItemUse instead of returning (in else block)... Please update your code, if you are wondering where is else block... Also, it could be better idea to use item fluid containers, but oh well... I have no idea what you mean by any of this, and by update do you mean to 1.8? or just to a newer version of forge, as Im not planning on updating my mod for awhile due to it being in a custom modpack
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.