Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Thor597

Forge Modder
  • Joined

  • Last visited

Everything posted by Thor597

  1. Try making the block tick randomly with setTickRandomly() and set a tickRate i guess. Look at fire or another block that updates
  2. I made the same post before, no replies...
  3. You'll find out once you get into generating in the surface
  4. Oh my fucking god Your_Item.shiftedIndex
  5. I think he means like a TNT block
  6. I kinda need to know quickly as the mod i'm working on requires it
  7. Wait sorry it had to be *=
  8. Syntax error on token "*", invalid AssignmentOperator /** * 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 (!par1World.isRemote && par5Entity instanceof EntityMinecart) { EntityMinecart mineCart = (EntityMinecart)par5Entity; mineCart.motionY += 0.4F; mineCart.motionX * 3; mineCart.motionZ * 3; } }
  9. Heres my leaf block code that works, it might help you package thedecopack.medieval.blocks; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import net.minecraft.src.*; import java.util.ArrayList; import java.util.List; import java.util.Random; import thedecopack.medieval.DecoMedieval; import net.minecraftforge.common.IShearable; public class BlockMedievalCedarLeaves extends BlockLeavesBase implements IShearable { /** * The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can * switch the displayed version between fancy and fast graphics (fast is this index + 1). */ private int baseIndexInPNG; int[] adjacentTreeBlocks; boolean fancy = ((BlockLeaves)Block.blocksList[18]).graphicsLevel; protected BlockMedievalCedarLeaves(int par1, int par2) { super(par1, par2, Material.leaves, false); this.baseIndexInPNG = par2; this.setTickRandomly(true); this.setCreativeTab(DecoMedieval.medievalTab); } /** * ejects contained items into the world, and notifies neighbours of an update, as appropriate */ public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { byte var7 = 1; int var8 = var7 + 1; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { for (int var9 = -var7; var9 <= var7; ++var9) { for (int var10 = -var7; var10 <= var7; ++var10) { for (int var11 = -var7; var11 <= var7; ++var11) { int var12 = par1World.getBlockId(par2 + var9, par3 + var10, par4 + var11); if (Block.blocksList[var12] != null) { Block.blocksList[var12].beginLeavesDecay(par1World, par2 + var9, par3 + var10, par4 + var11); } } } } } } /** * Ticks the block if it's been scheduled */ public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) { if (!par1World.isRemote) { int var6 = par1World.getBlockMetadata(par2, par3, par4); if ((var6 & != 0 && (var6 & 4) == 0) { byte var7 = 4; int var8 = var7 + 1; byte var9 = 32; int var10 = var9 * var9; int var11 = var9 / 2; if (this.adjacentTreeBlocks == null) { this.adjacentTreeBlocks = new int[var9 * var9 * var9]; } int var12; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { int var13; int var14; int var15; for (var12 = -var7; var12 <= var7; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { var15 = par1World.getBlockId(par2 + var12, par3 + var13, par4 + var14); Block block = Block.blocksList[var15]; if (block != null && block.canSustainLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0; } else if (block != null && block.isLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2; } else { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1; } } } } for (var12 = 1; var12 <= 4; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { for (var15 = -var7; var15 <= var7; ++var15) { if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) { if (this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12; } } } } } } } var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11]; if (var12 >= 0) { par1World.setBlockMetadata(par2, par3, par4, var6 & -9); } else { this.removeLeaves(par1World, par2, par3, par4); } } } } public int getBlockTextureFromSideAndMetadata(int par1, int par2) { fancy = ((BlockLeaves)Block.blocksList[18]).graphicsLevel; return this.fancy ? this.baseIndexInPNG + 1 : this.baseIndexInPNG; } @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 (par1World.canLightningStrikeAt(par2, par3 + 1, par4) && !par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && par5Random.nextInt(15) == 1) { double var6 = (double)((float)par2 + par5Random.nextFloat()); double var8 = (double)par3 - 0.05D; double var10 = (double)((float)par4 + par5Random.nextFloat()); par1World.spawnParticle("dripWater", var6, var8, var10, 0.0D, 0.0D, 0.0D); } } private void removeLeaves(World par1World, int par2, int par3, int par4) { this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); par1World.setBlockWithNotify(par2, par3, par4, 0); } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random par1Random) { return par1Random.nextInt(20) == 0 ? 1 : 0; } /** * Returns the ID of the items to drop on destruction. */ public int idDropped(int par1, Random par2Random, int par3) { return MedievalBlocks.redCedarSaplingID; } /** * Drops the block items with a specified chance of dropping the specified items */ public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) { if (!par1World.isRemote) { byte var8 = 20; if ((par5 & 3) == 3) { var8 = 40; } if (par1World.rand.nextInt(var8) == 0) { int var9 = this.idDropped(par5, par1World.rand, par7); this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(var9, 1, this.damageDropped(par5))); } if ((par5 & 3) == 0 && par1World.rand.nextInt(200) == 0) { this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(Item.appleRed, 1, 0)); } } } @Override @SideOnly(Side.CLIENT) public int getBlockTexture(IBlockAccess par1iBlockAccess, int par2, int par3, int par4, int par5) { int meta = par1iBlockAccess.getBlockMetadata(par2, par3, par4); return this.getBlockTextureFromSideAndMetadata(par5, meta); } /** * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the * block and l is the block's subtype/damage. */ public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6) { super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6); } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int par1) { return par1 & 3; } /** * 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 !this.fancy; } @Override public boolean isShearable(ItemStack item, World world, int x, int y, int z) { return true; } @Override public ArrayList<ItemStack> onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3)); return ret; } @Override public void beginLeavesDecay(World world, int x, int y, int z) { world.setBlockMetadata(x, y, z, world.getBlockMetadata(x, y, z) | ; } @Override public boolean isLeaves(World world, int x, int y, int z) { return true; } public String getTextureFile() { return DecoMedieval.instance.blockTextureFile(); } }
  10. Hello! I have been having a problem with my custom Launching Rail where the minecart is launched into the air however it has too much vertical speed and needs more horizontal speed. I have been looking around in the EntityMinecart class however I have not found anything that can help me doing this. Rail Code: package thedecopack.medieval.blocks; import net.minecraft.src.*; import java.util.List; import java.util.Random; import thedecopack.medieval.DecoMedieval; public class BlockMedievalJumpRail extends BlockRail { public BlockMedievalJumpRail(int par1, int par2) { super(par1, par2, true); setCreativeTab(DecoMedieval.medievalTab); } /** * 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 (!par1World.isRemote && par5Entity instanceof EntityMinecart) { EntityMinecart mineCart = (EntityMinecart)par5Entity; mineCart.motionY += 0.4F; } } public float getRailMaxSpeed(World world, EntityMinecart cart, int y, int x, int z) { return 0.4F; } public String getTextureFile() { return DecoMedieval.instance.blockTextureFile(); } }
  11. I tried to search my workspace for where it creates recipes and crap, but I dont think the whole recipe system works in the same way furnace and crafting recipes. So yeah, Is there a way to add a recipe for the brewing stand?
  12. Is there a way to add a recipe for the brewing stand?
  13. I have this problem with a mod im developing where I have a norwegian translation thing for the mod however, when I recompile it errors on the lines with norwegian characters such as 'ø' take this for example: public static int redCedarPlanksID; public static Block redCedarPlanks; public MedievalBlocks() { this.redCedarPlanks = (new BlockMedieval(redCedarPlanksID, 0, Material.wood)).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundWoodFootstep).setBlockName("medievalCedarPlanks").setRequiresSelfNotify(); RegisterBlocks(new Block[] { redCedarPlanks }); this.namesNorwegian("nb_NO"); } public void namesNorwegian(String lang) { LanguageRegistry.instance().addNameForObject(redCedarPlanks, lang, "Røde Sederplanker"); } private void RegisterBlocks(Block ablock []) { Block ablock1[] = ablock; int i = ablock1.length; for(int j = 0; j < i; j++) { Block block = ablock1[j]; GameRegistry.registerBlock(block); } } I get this error when recompiling: == MCP 7.23 (data: 7.23, client: 1.4.5, server: 1.4.5) == # found ff, ff patches, srgs, name csvs, doc csvs, param csvs, renumber csv, ast yle, astyle config == Recompiling client == > Cleaning bin > Recompiling '"C:\Program Files\Java\jdk1.7.0_02\bin\javac" -encoding UTF-8 -Xlint:-options - deprecation -g -sourc...' failed : 1 == ERRORS FOUND == src\common\thedecopack\medieval\blocks\MedievalBlocks.java:134: error: unmappabl e character for encoding UTF-8 LanguageRegistry.instance().addNameForObject(redCedarPlanks, lan g, "R?de Sederplanker"); ^
  14. OMG, was listening to Banjo Kazooie music, then saw the word: "hot swapping"
  15. Do I need the code in my clienttickhandler? Adding the getBlockTextureFromSide thing and getting the boolean from BlockLeaves didnt work aswell current code: package thedecopack.medieval.blocks; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import net.minecraft.src.*; import java.util.ArrayList; import java.util.List; import java.util.Random; import thedecopack.medieval.DecoMedieval; import net.minecraftforge.common.IShearable; public class BlockMedievalCedarLeaves extends BlockLeavesBase implements IShearable { /** * The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can * switch the displayed version between fancy and fast graphics (fast is this index + 1). */ private int baseIndexInPNG; int[] adjacentTreeBlocks; boolean fancy = ((BlockLeaves)Block.blocksList[18]).graphicsLevel; protected BlockMedievalCedarLeaves(int par1, int par2) { super(par1, par2, Material.leaves, false); this.baseIndexInPNG = par2; this.setTickRandomly(true); this.setCreativeTab(DecoMedieval.medievalTab); } /** * ejects contained items into the world, and notifies neighbours of an update, as appropriate */ public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { byte var7 = 1; int var8 = var7 + 1; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { for (int var9 = -var7; var9 <= var7; ++var9) { for (int var10 = -var7; var10 <= var7; ++var10) { for (int var11 = -var7; var11 <= var7; ++var11) { int var12 = par1World.getBlockId(par2 + var9, par3 + var10, par4 + var11); if (Block.blocksList[var12] != null) { Block.blocksList[var12].beginLeavesDecay(par1World, par2 + var9, par3 + var10, par4 + var11); } } } } } } /** * Ticks the block if it's been scheduled */ public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) { if (!par1World.isRemote) { int var6 = par1World.getBlockMetadata(par2, par3, par4); if ((var6 & != 0 && (var6 & 4) == 0) { byte var7 = 4; int var8 = var7 + 1; byte var9 = 32; int var10 = var9 * var9; int var11 = var9 / 2; if (this.adjacentTreeBlocks == null) { this.adjacentTreeBlocks = new int[var9 * var9 * var9]; } int var12; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { int var13; int var14; int var15; for (var12 = -var7; var12 <= var7; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { var15 = par1World.getBlockId(par2 + var12, par3 + var13, par4 + var14); Block block = Block.blocksList[var15]; if (block != null && block.canSustainLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0; } else if (block != null && block.isLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2; } else { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1; } } } } for (var12 = 1; var12 <= 4; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { for (var15 = -var7; var15 <= var7; ++var15) { if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) { if (this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12; } } } } } } } var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11]; if (var12 >= 0) { par1World.setBlockMetadata(par2, par3, par4, var6 & -9); } else { this.removeLeaves(par1World, par2, par3, par4); } } } } public int getBlockTextureFromSideAndMetadata(int par1, int par2) { return this.fancy ? this.baseIndexInPNG + 1 : this.baseIndexInPNG; } @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 (par1World.canLightningStrikeAt(par2, par3 + 1, par4) && !par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && par5Random.nextInt(15) == 1) { double var6 = (double)((float)par2 + par5Random.nextFloat()); double var8 = (double)par3 - 0.05D; double var10 = (double)((float)par4 + par5Random.nextFloat()); par1World.spawnParticle("dripWater", var6, var8, var10, 0.0D, 0.0D, 0.0D); } } private void removeLeaves(World par1World, int par2, int par3, int par4) { this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); par1World.setBlockWithNotify(par2, par3, par4, 0); } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random par1Random) { return par1Random.nextInt(20) == 0 ? 1 : 0; } /** * Returns the ID of the items to drop on destruction. */ public int idDropped(int par1, Random par2Random, int par3) { return MedievalBlocks.redCedarSaplingID; } /** * Drops the block items with a specified chance of dropping the specified items */ public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) { if (!par1World.isRemote) { byte var8 = 20; if ((par5 & 3) == 3) { var8 = 40; } if (par1World.rand.nextInt(var8) == 0) { int var9 = this.idDropped(par5, par1World.rand, par7); this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(var9, 1, this.damageDropped(par5))); } if ((par5 & 3) == 0 && par1World.rand.nextInt(200) == 0) { this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(Item.appleRed, 1, 0)); } } } @Override @SideOnly(Side.CLIENT) public int getBlockTexture(IBlockAccess par1iBlockAccess, int par2, int par3, int par4, int par5) { int meta = par1iBlockAccess.getBlockMetadata(par2, par3, par4); return this.getBlockTextureFromSideAndMetadata(par5, meta); } /** * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the * block and l is the block's subtype/damage. */ public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6) { super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6); } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int par1) { return par1 & 3; } /** * 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 !this.fancy; } @Override public boolean isShearable(ItemStack item, World world, int x, int y, int z) { return true; } @Override public ArrayList<ItemStack> onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3)); return ret; } @Override public void beginLeavesDecay(World world, int x, int y, int z) { world.setBlockMetadata(x, y, z, world.getBlockMetadata(x, y, z) | ; } @Override public boolean isLeaves(World world, int x, int y, int z) { return true; } public String getTextureFile() { return DecoMedieval.instance.blockTextureFile(); } }
  16. I preloaded my textures, but now it has created 3 extra blocks that look exactly the same except of being a slightly different shade of color however, they still dont change texture when changing settings. Also I think it does the extra 3 blocks because of the coloring on default leaves, but if I have to extend leaves I need to use the coloring shit. current code: package thedecopack.medieval.blocks; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import net.minecraft.src.*; import java.util.ArrayList; import java.util.List; import java.util.Random; import thedecopack.medieval.DecoMedieval; import net.minecraftforge.common.IShearable; public class BlockMedievalCedarLeaves extends BlockLeaves implements IShearable { /** * The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can * switch the displayed version between fancy and fast graphics (fast is this index + 1). */ private int baseIndexInPNG; int[] adjacentTreeBlocks; protected BlockMedievalCedarLeaves(int par1, int par2) { super(par1, par2); this.baseIndexInPNG = par2; this.setTickRandomly(true); this.setCreativeTab(DecoMedieval.medievalTab); } /** * ejects contained items into the world, and notifies neighbours of an update, as appropriate */ public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { byte var7 = 1; int var8 = var7 + 1; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { for (int var9 = -var7; var9 <= var7; ++var9) { for (int var10 = -var7; var10 <= var7; ++var10) { for (int var11 = -var7; var11 <= var7; ++var11) { int var12 = par1World.getBlockId(par2 + var9, par3 + var10, par4 + var11); if (Block.blocksList[var12] != null) { Block.blocksList[var12].beginLeavesDecay(par1World, par2 + var9, par3 + var10, par4 + var11); } } } } } } /** * Ticks the block if it's been scheduled */ public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) { if (!par1World.isRemote) { int var6 = par1World.getBlockMetadata(par2, par3, par4); if ((var6 & != 0 && (var6 & 4) == 0) { byte var7 = 4; int var8 = var7 + 1; byte var9 = 32; int var10 = var9 * var9; int var11 = var9 / 2; if (this.adjacentTreeBlocks == null) { this.adjacentTreeBlocks = new int[var9 * var9 * var9]; } int var12; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { int var13; int var14; int var15; for (var12 = -var7; var12 <= var7; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { var15 = par1World.getBlockId(par2 + var12, par3 + var13, par4 + var14); Block block = Block.blocksList[var15]; if (block != null && block.canSustainLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0; } else if (block != null && block.isLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2; } else { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1; } } } } for (var12 = 1; var12 <= 4; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { for (var15 = -var7; var15 <= var7; ++var15) { if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) { if (this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12; } } } } } } } var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11]; if (var12 >= 0) { par1World.setBlockMetadata(par2, par3, par4, var6 & -9); } else { this.removeLeaves(par1World, par2, par3, par4); } } } } public int getBlockTextureFromSideAndMetadata(int par1, int par2) { return this.graphicsLevel ? this.baseIndexInPNG + 1 : this.baseIndexInPNG; } @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 (par1World.canLightningStrikeAt(par2, par3 + 1, par4) && !par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && par5Random.nextInt(15) == 1) { double var6 = (double)((float)par2 + par5Random.nextFloat()); double var8 = (double)par3 - 0.05D; double var10 = (double)((float)par4 + par5Random.nextFloat()); par1World.spawnParticle("dripWater", var6, var8, var10, 0.0D, 0.0D, 0.0D); } } private void removeLeaves(World par1World, int par2, int par3, int par4) { this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); par1World.setBlockWithNotify(par2, par3, par4, 0); } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random par1Random) { return par1Random.nextInt(20) == 0 ? 1 : 0; } /** * Returns the ID of the items to drop on destruction. */ public int idDropped(int par1, Random par2Random, int par3) { return MedievalBlocks.redCedarSaplingID; } /** * Drops the block items with a specified chance of dropping the specified items */ public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) { if (!par1World.isRemote) { byte var8 = 20; if ((par5 & 3) == 3) { var8 = 40; } if (par1World.rand.nextInt(var8) == 0) { int var9 = this.idDropped(par5, par1World.rand, par7); this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(var9, 1, this.damageDropped(par5))); } if ((par5 & 3) == 0 && par1World.rand.nextInt(200) == 0) { this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(Item.appleRed, 1, 0)); } } } /** * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the * block and l is the block's subtype/damage. */ public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6) { super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6); } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int par1) { return par1 & 3; } /** * 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 !this.graphicsLevel; } @Override public boolean isShearable(ItemStack item, World world, int x, int y, int z) { return true; } @Override public ArrayList<ItemStack> onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3)); return ret; } @Override public void beginLeavesDecay(World world, int x, int y, int z) { world.setBlockMetadata(x, y, z, world.getBlockMetadata(x, y, z) | ; } @Override public boolean isLeaves(World world, int x, int y, int z) { return true; } public String getTextureFile() { return DecoMedieval.instance.blockTextureFile(); } } Block Object: this.redCedarLeaves = (BlockMedievalCedarLeaves)(new BlockMedievalCedarLeaves(redCedarLeavesID, 32)).setHardness(0.2F).setLightOpacity(1).setStepSound(Block.soundGrassFootstep).setBlockName("medievalCedarLeaves").setRequiresSelfNotify();
  17. Wait, I think I forgot to preload my textures
  18. Now all my blocks are without a texture and some of them are named the name of my leaves
  19. even if I remove the stuff inside my setGraphicsLevel it still doesnt work
  20. This doesnt work, it doesnt change the texture at all: package thedecopack.medieval.blocks; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import net.minecraft.src.*; import java.util.ArrayList; import java.util.List; import java.util.Random; import thedecopack.medieval.DecoMedieval; import net.minecraftforge.common.IShearable; public class BlockMedievalCedarLeaves extends BlockLeaves implements IShearable { /** * The base index in terrain.png corresponding to the fancy version of the leaf texture. This is stored so we can * switch the displayed version between fancy and fast graphics (fast is this index + 1). */ private int baseIndexInPNG; int[] adjacentTreeBlocks; protected BlockMedievalCedarLeaves(int par1, int par2) { super(par1, par2); this.baseIndexInPNG = par2; this.setTickRandomly(true); this.setCreativeTab(DecoMedieval.medievalTab); } /** * ejects contained items into the world, and notifies neighbours of an update, as appropriate */ public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { byte var7 = 1; int var8 = var7 + 1; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { for (int var9 = -var7; var9 <= var7; ++var9) { for (int var10 = -var7; var10 <= var7; ++var10) { for (int var11 = -var7; var11 <= var7; ++var11) { int var12 = par1World.getBlockId(par2 + var9, par3 + var10, par4 + var11); if (Block.blocksList[var12] != null) { Block.blocksList[var12].beginLeavesDecay(par1World, par2 + var9, par3 + var10, par4 + var11); } } } } } } /** * Ticks the block if it's been scheduled */ public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) { if (!par1World.isRemote) { int var6 = par1World.getBlockMetadata(par2, par3, par4); if ((var6 & != 0 && (var6 & 4) == 0) { byte var7 = 4; int var8 = var7 + 1; byte var9 = 32; int var10 = var9 * var9; int var11 = var9 / 2; if (this.adjacentTreeBlocks == null) { this.adjacentTreeBlocks = new int[var9 * var9 * var9]; } int var12; if (par1World.checkChunksExist(par2 - var8, par3 - var8, par4 - var8, par2 + var8, par3 + var8, par4 + var8)) { int var13; int var14; int var15; for (var12 = -var7; var12 <= var7; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { var15 = par1World.getBlockId(par2 + var12, par3 + var13, par4 + var14); Block block = Block.blocksList[var15]; if (block != null && block.canSustainLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = 0; } else if (block != null && block.isLeaves(par1World, par2 + var12, par3 + var13, par4 + var14)) { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -2; } else { this.adjacentTreeBlocks[(var12 + var11) * var10 + (var13 + var11) * var9 + var14 + var11] = -1; } } } } for (var12 = 1; var12 <= 4; ++var12) { for (var13 = -var7; var13 <= var7; ++var13) { for (var14 = -var7; var14 <= var7; ++var14) { for (var15 = -var7; var15 <= var7; ++var15) { if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11] == var12 - 1) { if (this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 - 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11 + 1) * var10 + (var14 + var11) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 - 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11 + 1) * var9 + var15 + var11] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + (var15 + var11 - 1)] = var12; } if (this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] == -2) { this.adjacentTreeBlocks[(var13 + var11) * var10 + (var14 + var11) * var9 + var15 + var11 + 1] = var12; } } } } } } } var12 = this.adjacentTreeBlocks[var11 * var10 + var11 * var9 + var11]; if (var12 >= 0) { par1World.setBlockMetadata(par2, par3, par4, var6 & -9); } else { this.removeLeaves(par1World, par2, par3, par4); } } } } @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 (par1World.canLightningStrikeAt(par2, par3 + 1, par4) && !par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && par5Random.nextInt(15) == 1) { double var6 = (double)((float)par2 + par5Random.nextFloat()); double var8 = (double)par3 - 0.05D; double var10 = (double)((float)par4 + par5Random.nextFloat()); par1World.spawnParticle("dripWater", var6, var8, var10, 0.0D, 0.0D, 0.0D); } } private void removeLeaves(World par1World, int par2, int par3, int par4) { this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); par1World.setBlockWithNotify(par2, par3, par4, 0); } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random par1Random) { return par1Random.nextInt(20) == 0 ? 1 : 0; } /** * Returns the ID of the items to drop on destruction. */ public int idDropped(int par1, Random par2Random, int par3) { return MedievalBlocks.redCedarSaplingID; } /** * Drops the block items with a specified chance of dropping the specified items */ public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) { if (!par1World.isRemote) { byte var8 = 20; if ((par5 & 3) == 3) { var8 = 40; } if (par1World.rand.nextInt(var8) == 0) { int var9 = this.idDropped(par5, par1World.rand, par7); this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(var9, 1, this.damageDropped(par5))); } if ((par5 & 3) == 0 && par1World.rand.nextInt(200) == 0) { this.dropBlockAsItem_do(par1World, par2, par3, par4, new ItemStack(Item.appleRed, 1, 0)); } } } /** * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the * block and l is the block's subtype/damage. */ public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6) { super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6); } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int par1) { return par1 & 3; } /** * 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 !this.graphicsLevel; } @SideOnly(Side.CLIENT) /** * Pass true to draw this block using fancy graphics, or false for fast graphics. */ public void setGraphicsLevel(boolean par1) { this.graphicsLevel = par1; this.blockIndexInTexture = this.baseIndexInPNG + (par1 ? 0 : 1); } @Override public boolean isShearable(ItemStack item, World world, int x, int y, int z) { return true; } @Override public ArrayList<ItemStack> onSheared(ItemStack item, World world, int x, int y, int z, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 3)); return ret; } @Override public void beginLeavesDecay(World world, int x, int y, int z) { world.setBlockMetadata(x, y, z, world.getBlockMetadata(x, y, z) | ; } @Override public boolean isLeaves(World world, int x, int y, int z) { return true; } public String getTextureFile() { return DecoMedieval.instance.blockTextureFile(); } }
  21. Whoops, I sent the wrong thing. When I wake up in the morning ill post the leaves

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.