• 0

    posted a message on Project Fruit [1.1.7] Adds a whole new dimension made out of fruit!
    Project Fruit 1.1.7 has been released!



    Change log:

    - Fixed a bug that made the game crash when trying to craft lemon bricks.

    - Changed the drop rate of the lemon when breaking lemon leaves.

    - Changed the amount of hunger the lemon fills.
    Posted in: Minecraft Mods
  • 0

    posted a message on Project Fruit [1.1.7] Adds a whole new dimension made out of fruit!
    Yes, just click view all downloads and get Project Fruit-1.7.2-1.1.4.
    Posted in: Minecraft Mods
  • 0

    posted a message on Project Fruit [1.1.7] Adds a whole new dimension made out of fruit!
    Project Fruit 1.1.6 has been released!



    Change log:

    - Fixed a problem with all of the tools not breaking certain blocks properly.
    Posted in: Minecraft Mods
  • 0

    posted a message on Lemon Land [1.0.4] Lemon Sword, Tools, Biome and More!
    Lemon Land 1.0.4 is now available!



    Change log:

    - Fixed the lemon stone block not dropping lemonstone.

    - Fixed the lemon pickaxe not breaking things properly.
    Posted in: Minecraft Mods
  • 0

    posted a message on Lemon Land [1.0.4] Lemon Sword, Tools, Biome and More!
    Lemon Land 1.0.3 is now available!



    Change log:

    - Updated to work with Minecraft 1.7.10.
    Posted in: Minecraft Mods
  • 0

    posted a message on Project Fruit [1.1.7] Adds a whole new dimension made out of fruit!
    Project Fruit 1.1.5 has been released!

    Changelog
    - Updated to work with Minecraft 1.7.10

    - Fixed a problem with trees not generating in the fruit dimension.

    - Fixed a problem with the fruit portal not breaking properly.

    Posted in: Minecraft Mods
  • 0

    posted a message on Lemon Land [1.0.4] Lemon Sword, Tools, Biome and More!
    Quote from Pizza_Man64
    One of my favorites.

    Thanks!
    Posted in: Minecraft Mods
  • 1

    posted a message on Project Fruit [1.1.7] Adds a whole new dimension made out of fruit!
    With Project Fruit I built around the Lemon Land mod and added a whole new dimension that's made of fruit. When you enter the fruit dimension you'll see four different biomes. The lemon biome, the lime biome, orange biome and the blueberry biome.

    Be sure to follow me on twitter to see the latest news and pics.

    Installation:

    1: Download and install Forge.

    2: Download Project Fruit.

    3: Move “Project Fruit x.x.x.jar/.zip” to your mods folder inside your .minecraft folder.

    4. Enjoy the mod!

    All of the info can be found on my website!

    How you can help:

    We are not looking for anyone to help texture or code. We are looking for people to report bugs and give us ideas! So if you find a bug, please report it here. If you have an idea, please submit it here and mark it as a enhancement. Thank you!

    Posted in: Minecraft Mods
  • 1

    posted a message on Lemon Land [1.0.4] Lemon Sword, Tools, Biome and More!
    Do you love lemons? If so, this is the mod for you. We have lemons, a lemon sword, lemon tools, a lemon biome and more!

    How To Install

    1. Download and install Forge Modloader.
    2. Download Lemon Land.
    3. Move "Lemon Land x.x.x.jar/zip." to your mods folder inside your .minecraft folder.
    4. Enjoy the mod!

    Find all of the info on my website!

    Credits


    • TwistedCarny
    • R6xSNAKEx

    Copyright

    This mod (plugin, a patch to Minecraft source, henceforth "Mod" or "The Mod"), by the terms of http://www.minecraft.net/copyright.jsp is sole property of the Mod author (, henceforth "Owner" or "The Owner"). By default it may only be distributed on minecraftforums.net, planetminecraft.com. It may only be mirrored or reposted with advance written permission of the Owner. Electronic Mail is fine if you wait for a response. URL shorteners or other attempts to make money off The Owner's Mod are strictly forbidden without advance written permission

    TERMS AND CONDITIONS 0. USED TERMS MOD - modification, plugin, a piece of software that interfaces with the Minecraft client to extend, add, change or remove original capabilities. MOJANG - Mojang AB OWNER - , Original author(s) of the MOD. Under the copyright terms accepted when purchasing Minecraft (http://www.minecraft.net/copyright.jsp) the OWNER has full rights over their MOD despite use of MOJANG code. USER - End user of the mod, person installing the mod.

    1. LIABILITY THIS MOD IS PROVIDED 'AS IS' WITH NO WARRANTIES, IMPLIED OR OTHERWISE. THE OWNER OF THIS MOD TAKES NO RESPONSIBILITY FOR ANY DAMAGES INCURRED FROM THE USE OF THIS MOD. THIS MOD ALTERS FUNDAMENTAL PARTS OF THE MINECRAFT GAME, PARTS OF MINECRAFT MAY NOT WORK WITH THIS MOD INSTALLED. ALL DAMAGES CAUSED FROM THE USE OR MISUSE OF THIS MOD FALL ON THE USER.

    2. USE Use of this MOD to be installed, manually or automatically, is given to the USER without restriction.

    3. REDISTRIBUTION This MOD may only be distributed where uploaded, mirrored, or otherwise linked to by the OWNER solely. All mirrors of this mod must have advance written permission from the OWNER. ANY attempts to make money off of this MOD (selling, selling modified versions, adfly, sharecash, etc.) are STRICTLY FORBIDDEN, and the OWNER may claim damages or take other action to rectify the situation.

    4. DERIVATIVE WORKS/MODIFICATION This mod is provided freely and may be decompiled and modified for private use, either with a decompiler or a bytecode editor. Public distribution of modified versions of this MOD require advance written permission of the OWNER and may be subject to certain terms.

    Posted in: Minecraft Mods
  • 0

    posted a message on [Forge][1.7.2]GameRegistry.addBiome() replacement?
    I checked and they don't seem to have anything in there for registering biomes. So i'm gonna guess I need to wait for them to add something like it again or try to find a workaround.
    Posted in: Modification Development
  • 1

    posted a message on [Forge][1.7.2]GameRegistry.addBiome() replacement?
    Hello, I'm trying to update my mod to 1.7.2 and I have everything working except for my custom biome. I'm not sure how to register it anymore being that GameRegistry.addBiome() seems to be gone. I tried using BiomeDictionary.registerBiomeType() but that didn't seem to work.

    Is there a replacement for GameRegistry.addBiome() or do I need to wait for forge to add something else?
    Posted in: Modification Development
  • 0

    posted a message on [Forge] [1.6.4] Can't create portal in my custom dimension
    Thanks for the idea, I fixed it. In my LemonadeFluid class it was only trying to create the portal if the dimension id was > 0.
    Posted in: Modification Development
  • 0

    posted a message on [Forge] [1.6.4] Can't create portal in my custom dimension
    Hello, when I go to my custom dimension and I break the portal and try to build a new one it doesn't work. I have looked through my BlockFruitPortal code and I don't see anything wrong. If you have any ideas let me know.

    package net.fruitdimension.main;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockBreakable;
    import net.minecraft.block.BlockPortal;
    import net.minecraft.block.material.Material;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.player.EntityPlayerMP;
    import net.minecraft.item.ItemMonsterPlacer;
    import net.minecraft.util.AxisAlignedBB;
    import net.minecraft.world.IBlockAccess;
    import net.minecraft.world.World;
    
    public class BlockFruitPortal extends BlockBreakable {
    public BlockFruitPortal(int par1) {
    super(par1, "portal", Material.portal, false);
    this.setTickRandomly(true);
    this.setHardness(-1.0F);
    this.setStepSound(soundGlassFootstep);
    this.setLightValue(0.75F);
    }
    
    /**
    * Ticks the block if it's been scheduled
    */
    public void updateTick(World par1World, int par2, int par3, int par4,
    Random par5Random) {
    super.updateTick(par1World, par2, par3, par4, par5Random);
    if (par1World.provider.isSurfaceWorld()
    && par5Random.nextInt(2000) < par1World.difficultySetting) {
    int l;
    for (l = par3; !par1World.doesBlockHaveSolidTopSurface(par2, l,
    par4) && l > 0; --l) {
    ;
    }
    if (l > 0 && !par1World.isBlockNormalCube(par2, l + 1, par4)) {
    Entity entity = ItemMonsterPlacer.spawnCreature(par1World, 57,
    (double) par2 + 0.5D, (double) l + 1.1D,
    (double) par4 + 0.5D);
    if (entity != null) {
    entity.timeUntilPortal = entity.getPortalCooldown();
    }
    }
    }
    }
    
    /**
    * Returns a bounding box from the pool of bounding boxes (this means this
    * box can change after the pool has been cleared to be reused)
    */
    public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World,
    int par2, int par3, int par4) {
    return null;
    }
    
    /**
    * Updates the blocks bounds based on its current state. Args: world, x, y,
    * z
    */
    public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess,
    int par2, int par3, int par4) {
    float f;
    float f1;
    if (par1IBlockAccess.getBlockId(par2 - 1, par3, par4) != this.blockID
    && par1IBlockAccess.getBlockId(par2 + 1, par3, par4) != this.blockID) {
    f = 0.125F;
    f1 = 0.5F;
    this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F,
    0.5F + f1);
    } else {
    f = 0.5F;
    f1 = 0.125F;
    this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F,
    0.5F + f1);
    }
    }
    
    /**
    * Is this block (a) opaque and (B) a full 1m cube? This determines whether
    * or not to render the shared face of two adjacent blocks and also whether
    * the player can attach torches, redstone wire, etc to this block.
    */
    public boolean isOpaqueCube() {
    return false;
    }
    
    /**
    * If this block doesn't render as an ordinary block it will return False
    * (examples: signs, buttons, stairs, etc)
    */
    @Override
    public boolean renderAsNormalBlock() {
    return false;
    }
    
    /**
    * Checks to see if this location is valid to create a portal and will
    * return True if it does. Args: world, x, y, z
    */
    public boolean tryToCreatePortal(World par1World, int par2, int par3,
    int par4) {
    byte b0 = 0;
    byte b1 = 0;
    if (par1World.getBlockId(par2 - 1, par3, par4) == FruitDimension.lemonBrick.blockID
    || par1World.getBlockId(par2 + 1, par3, par4) == FruitDimension.lemonBrick.blockID) {
    b0 = 1;
    }
    if (par1World.getBlockId(par2, par3, par4 - 1) == FruitDimension.lemonBrick.blockID
    || par1World.getBlockId(par2, par3, par4 + 1) == FruitDimension.lemonBrick.blockID) {
    b1 = 1;
    }
    if (b0 == b1) {
    return false;
    } else {
    if (par1World.getBlockId(par2 - b0, par3, par4 - b1) == 0) {
    par2 -= b0;
    par4 -= b1;
    }
    int l;
    int i1;
    for (l = -1; l <= 2; ++l) {
    for (i1 = -1; i1 <= 3; ++i1) {
    boolean flag = l == -1 || l == 2 || i1 == -1 || i1 == 3;
    if (l != -1 && l != 2 || i1 != -1 && i1 != 3) {
    int j1 = par1World.getBlockId(par2 + b0 * l, par3 + i1,
    par4 + b1 * l);
    if (flag) {
    if (j1 != FruitDimension.lemonBrick.blockID) {
    return false;
    }
    } else if (j1 != 0
    && j1 != FruitDimension.lemonadeBlock.blockID) {
    return false;
    }
    }
    }
    }
    for (l = 0; l < 2; ++l) {
    for (i1 = 0; i1 < 3; ++i1) {
    par1World.setBlock(par2 + b0 * l, par3 + i1, par4 + b1 * l,
    FruitDimension.fruitPortal.blockID, 0, 2);
    }
    }
    return true;
    }
    }
    
    /**
    * Lets the block know when one of its neighbor changes. Doesn't know which
    * neighbor changed (coordinates passed are their own) Args: x, y, z,
    * neighbor blockID
    */
    public void onNeighborBlockChange(World par1World, int par2, int par3,
    int par4, int par5) {
    byte b0 = 0;
    byte b1 = 1;
    if (par1World.getBlockId(par2 - 1, par3, par4) == this.blockID
    || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID) {
    b0 = 1;
    b1 = 0;
    }
    int i1;
    for (i1 = par3; par1World.getBlockId(par2, i1 - 1, par4) == this.blockID; --i1) {
    ;
    }
    if (par1World.getBlockId(par2, i1 - 1, par4) != FruitDimension.lemonBrick.blockID) {
    par1World.setBlockToAir(par2, par3, par4);
    } else {
    int j1;
    for (j1 = 1; j1 < 4
    && par1World.getBlockId(par2, i1 + j1, par4) == this.blockID; ++j1) {
    ;
    }
    if (j1 == 3
    && par1World.getBlockId(par2, i1 + j1, par4) == FruitDimension.lemonBrick.blockID) {
    boolean flag = par1World.getBlockId(par2 - 1, par3, par4) == this.blockID
    || par1World.getBlockId(par2 + 1, par3, par4) == this.blockID;
    boolean flag1 = par1World.getBlockId(par2, par3, par4 - 1) == this.blockID
    || par1World.getBlockId(par2, par3, par4 + 1) == this.blockID;
    if (flag && flag1) {
    par1World.setBlockToAir(par2, par3, par4);
    } else {
    if ((par1World.getBlockId(par2 + b0, par3, par4 + b1) != FruitDimension.lemonBrick.blockID || par1World
    .getBlockId(par2 - b0, par3, par4 - b1) != this.blockID)
    && (par1World
    .getBlockId(par2 - b0, par3, par4 - b1) != FruitDimension.lemonBrick.blockID || par1World
    .getBlockId(par2 + b0, par3, par4 + b1) != this.blockID)) {
    par1World.setBlockToAir(par2, par3, par4);
    }
    }
    } else {
    par1World.setBlockToAir(par2, par3, par4);
    }
    }
    }
    
    @SideOnly(Side.CLIENT)
    /**
    * Returns true if the given side of this block type should be rendered, if the adjacent block is at the given
    * coordinates. Args: blockAccess, x, y, z, side
    */
    public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess,
    int par2, int par3, int par4, int par5) {
    if (par1IBlockAccess.getBlockId(par2, par3, par4) == this.blockID) {
    return false;
    } else {
    boolean flag = par1IBlockAccess.getBlockId(par2 - 1, par3, par4) == this.blockID
    && par1IBlockAccess.getBlockId(par2 - 2, par3, par4) != this.blockID;
    boolean flag1 = par1IBlockAccess.getBlockId(par2 + 1, par3, par4) == this.blockID
    && par1IBlockAccess.getBlockId(par2 + 2, par3, par4) != this.blockID;
    boolean flag2 = par1IBlockAccess.getBlockId(par2, par3, par4 - 1) == this.blockID
    && par1IBlockAccess.getBlockId(par2, par3, par4 - 2) != this.blockID;
    boolean flag3 = par1IBlockAccess.getBlockId(par2, par3, par4 + 1) == this.blockID
    && par1IBlockAccess.getBlockId(par2, par3, par4 + 2) != this.blockID;
    boolean flag4 = flag || flag1;
    boolean flag5 = flag2 || flag3;
    return flag4 && par5 == 4 ? true : (flag4 && par5 == 5 ? true
    : (flag5 && par5 == 2 ? true : flag5 && par5 == 3));
    }
    }
    
    /**
    * Returns the quantity of items to drop on block destruction.
    */
    public int quantityDropped(Random par1Random) {
    return 0;
    }
    
    /**
    * Triggered whenever an entity collides with this block (enters into the
    * block). Args: world, x, y, z, entity
    */
    public void onEntityCollidedWithBlock(World par1World, int par2, int par3,
    int par4, Entity par5Entity) {
    if ((par5Entity.ridingEntity == null)
    && (par5Entity.riddenByEntity == null)
    && ((par5Entity instanceof EntityPlayerMP))) {
    EntityPlayerMP thePlayer = (EntityPlayerMP) par5Entity;
    if (thePlayer.timeUntilPortal > 0) {
    thePlayer.timeUntilPortal = 10;
    } else if (thePlayer.dimension != FruitDimension.dimID) {
    thePlayer.timeUntilPortal = 10;
    thePlayer.mcServer
    .getConfigurationManager()
    .transferPlayerToDimension(
    thePlayer,
    FruitDimension.dimID,
    new FruitDimensionTeleporter(
    thePlayer.mcServer
    .worldServerForDimension(FruitDimension.dimID)));
    } else {
    thePlayer.timeUntilPortal = 10;
    thePlayer.mcServer.getConfigurationManager()
    .transferPlayerToDimension(
    thePlayer,
    0,
    new FruitDimensionTeleporter(thePlayer.mcServer
    .worldServerForDimension(0)));
    }
    }
    }
    
    @SideOnly(Side.CLIENT)
    /**
    * Returns which pass should this block be rendered on. 0 for solids and 1 for alpha
    */
    public int getRenderBlockPass() {
    return 1;
    }
    
    @SideOnly(Side.CLIENT)
    /**
    * A randomly called display update to be able to add particles or other items for display
    */
    public void randomDisplayTick(World par1World, int par2, int par3,
    int par4, Random par5Random) {
    if (par5Random.nextInt(100) == 0) {
    par1World.playSound((double) par2 + 0.5D, (double) par3 + 0.5D,
    (double) par4 + 0.5D, "portal.portal", 0.5F,
    par5Random.nextFloat() * 0.4F + 0.8F, false);
    }
    for (int l = 0; l < 4; ++l) {
    double d0 = (double) ((float) par2 + par5Random.nextFloat());
    double d1 = (double) ((float) par3 + par5Random.nextFloat());
    double d2 = (double) ((float) par4 + par5Random.nextFloat());
    double d3 = 0.0D;
    double d4 = 0.0D;
    double d5 = 0.0D;
    int i1 = par5Random.nextInt(2) * 2 - 1;
    d3 = ((double) par5Random.nextFloat() - 0.5D) * 0.5D;
    d4 = ((double) par5Random.nextFloat() - 0.5D) * 0.5D;
    d5 = ((double) par5Random.nextFloat() - 0.5D) * 0.5D;
    if (par1World.getBlockId(par2 - 1, par3, par4) != this.blockID
    && par1World.getBlockId(par2 + 1, par3, par4) != this.blockID) {
    d0 = (double) par2 + 0.5D + 0.25D * (double) i1;
    d3 = (double) (par5Random.nextFloat() * 2.0F * (float) i1);
    } else {
    d2 = (double) par4 + 0.5D + 0.25D * (double) i1;
    d5 = (double) (par5Random.nextFloat() * 2.0F * (float) i1);
    }
    par1World.spawnParticle("portal", d0, d1, d2, d3, d4, d5);
    }
    }
    
    @SideOnly(Side.CLIENT)
    /**
    * only called by clickMiddleMouseButton , and passed to inventory.setCurrentItem (along with isCreative)
    */
    public int idPicked(World par1World, int par2, int par3, int par4) {
    return 0;
    }
    }
    Posted in: Modification Development
  • To post a comment, please .