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.

SantacreeperLP

Members
  • Joined

  • Last visited

Everything posted by SantacreeperLP

  1. First thank you Can you probably help me to downgrade it to 1.7 because I've problems with GLStateManager? I haven't focus on rendering before so I'm not good at working with GL. I would be happy if you help me Thank you a lot. ~Legend
  2. Hey forge community, I've a question : Can you help me ? I want to create a Block where parts of the texture are visible if its dark like the Infused Shard Ore in Thaumcraft. Can you help me? I would be happy Thank you very much ~Legend
  3. Hey guys, I've created a tree with a normal worldgen like a oak. It works perfect, I've changed Blocks.leaves &log to my leaves& my log. But I want to generate a tree like net.minecraft.world.gen.feature.WorldGenBigTree; When I use my copy of that class as a worldgen, I can plant my sapling and get a huge oak tree. But I want my leaves and my log. Can you help me? Here's the source of the WorldGenBigTree package net.minecraft.world.gen.feature; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockSapling; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class WorldGenBigTree extends WorldGenAbstractTree { /** * Contains three sets of two values that provide complimentary indices for a given 'major' index - 1 and 2 for 0, 0 * and 2 for 1, and 0 and 1 for 2. */ static final byte[] otherCoordPairs = new byte[] {(byte)2, (byte)0, (byte)0, (byte)1, (byte)2, (byte)1}; /** random seed for GenBigTree */ Random rand = new Random(); /** Reference to the World object. */ World worldObj; int[] basePos = new int[] {0, 0, 0}; int heightLimit; int height; double heightAttenuation = 0.618D; double branchDensity = 1.0D; double branchSlope = 0.381D; double scaleWidth = 1.0D; double leafDensity = 1.0D; /** Currently always 1, can be set to 2 in the class constructor to generate a double-sized tree trunk for big trees. */ int trunkSize = 1; /** Sets the limit of the random value used to initialize the height limit. */ int heightLimitLimit = 12; /** Sets the distance limit for how far away the generator will populate leaves from the base leaf node. */ int leafDistanceLimit = 4; /** Contains a list of a points at which to generate groups of leaves. */ int[][] leafNodes; private static final String __OBFID = "CL_00000400"; public WorldGenBigTree(boolean p_i2008_1_) { super(p_i2008_1_); } /** * Generates a list of leaf nodes for the tree, to be populated by generateLeaves. */ void generateLeafNodeList() { this.height = (int)((double)this.heightLimit * this.heightAttenuation); if (this.height >= this.heightLimit) { this.height = this.heightLimit - 1; } int i = (int)(1.382D + Math.pow(this.leafDensity * (double)this.heightLimit / 13.0D, 2.0D)); if (i < 1) { i = 1; } int[][] aint = new int[i * this.heightLimit][4]; int j = this.basePos[1] + this.heightLimit - this.leafDistanceLimit; int k = 1; int l = this.basePos[1] + this.height; int i1 = j - this.basePos[1]; aint[0][0] = this.basePos[0]; aint[0][1] = j; aint[0][2] = this.basePos[2]; aint[0][3] = l; --j; while (i1 >= 0) { int j1 = 0; float f = this.layerSize(i1); if (f < 0.0F) { --j; --i1; } else { for (double d0 = 0.5D; j1 < i; ++j1) { double d1 = this.scaleWidth * (double)f * ((double)this.rand.nextFloat() + 0.328D); double d2 = (double)this.rand.nextFloat() * 2.0D * Math.PI; int k1 = MathHelper.floor_double(d1 * Math.sin(d2) + (double)this.basePos[0] + d0); int l1 = MathHelper.floor_double(d1 * Math.cos(d2) + (double)this.basePos[2] + d0); int[] aint1 = new int[] {k1, j, l1}; int[] aint2 = new int[] {k1, j + this.leafDistanceLimit, l1}; if (this.checkBlockLine(aint1, aint2) == -1) { int[] aint3 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; double d3 = Math.sqrt(Math.pow((double)Math.abs(this.basePos[0] - aint1[0]), 2.0D) + Math.pow((double)Math.abs(this.basePos[2] - aint1[2]), 2.0D)); double d4 = d3 * this.branchSlope; if ((double)aint1[1] - d4 > (double)l) { aint3[1] = l; } else { aint3[1] = (int)((double)aint1[1] - d4); } if (this.checkBlockLine(aint3, aint1) == -1) { aint[k][0] = k1; aint[k][1] = j; aint[k][2] = l1; aint[k][3] = aint3[1]; ++k; } } } --j; --i1; } } this.leafNodes = new int[k][4]; System.arraycopy(aint, 0, this.leafNodes, 0, k); } void func_150529_a(int p_150529_1_, int p_150529_2_, int p_150529_3_, float p_150529_4_, byte p_150529_5_, Block p_150529_6_) { int l = (int)((double)p_150529_4_ + 0.618D); byte b1 = otherCoordPairs[p_150529_5_]; byte b2 = otherCoordPairs[p_150529_5_ + 3]; int[] aint = new int[] {p_150529_1_, p_150529_2_, p_150529_3_}; int[] aint1 = new int[] {0, 0, 0}; int i1 = -l; int j1 = -l; for (aint1[p_150529_5_] = aint[p_150529_5_]; i1 <= l; ++i1) { aint1[b1] = aint[b1] + i1; j1 = -l; while (j1 <= l) { double d0 = Math.pow((double)Math.abs(i1) + 0.5D, 2.0D) + Math.pow((double)Math.abs(j1) + 0.5D, 2.0D); if (d0 > (double)(p_150529_4_ * p_150529_4_)) { ++j1; } else { aint1[b2] = aint[b2] + j1; Block block1 = this.worldObj.getBlock(aint1[0], aint1[1], aint1[2]); if (!block1.isAir(worldObj, aint1[0], aint1[1], aint1[2]) && !block1.isLeaves(worldObj, aint1[0], aint1[1], aint1[2])) { ++j1; } else { this.setBlockAndNotifyAdequately(this.worldObj, aint1[0], aint1[1], aint1[2], p_150529_6_, 0); ++j1; } } } } } /** * Gets the rough size of a layer of the tree. */ float layerSize(int p_76490_1_) { if ((double)p_76490_1_ < (double)((float)this.heightLimit) * 0.3D) { return -1.618F; } else { float f = (float)this.heightLimit / 2.0F; float f1 = (float)this.heightLimit / 2.0F - (float)p_76490_1_; float f2; if (f1 == 0.0F) { f2 = f; } else if (Math.abs(f1) >= f) { f2 = 0.0F; } else { f2 = (float)Math.sqrt(Math.pow((double)Math.abs(f), 2.0D) - Math.pow((double)Math.abs(f1), 2.0D)); } f2 *= 0.5F; return f2; } } float leafSize(int p_76495_1_) { return p_76495_1_ >= 0 && p_76495_1_ < this.leafDistanceLimit ? (p_76495_1_ != 0 && p_76495_1_ != this.leafDistanceLimit - 1 ? 3.0F : 2.0F) : -1.0F; } /** * Generates the leaves surrounding an individual entry in the leafNodes list. */ void generateLeafNode(int p_76491_1_, int p_76491_2_, int p_76491_3_) { int l = p_76491_2_; for (int i1 = p_76491_2_ + this.leafDistanceLimit; l < i1; ++l) { float f = this.leafSize(l - p_76491_2_); this.func_150529_a(p_76491_1_, l, p_76491_3_, f, (byte)1, Blocks.leaves); } } void func_150530_a(int[] p_150530_1_, int[] p_150530_2_, Block p_150530_3_) { int[] aint2 = new int[] {0, 0, 0}; byte b0 = 0; byte b1; for (b1 = 0; b0 < 3; ++b0) { aint2[b0] = p_150530_2_[b0] - p_150530_1_[b0]; if (Math.abs(aint2[b0]) > Math.abs(aint2[b1])) { b1 = b0; } } if (aint2[b1] != 0) { byte b2 = otherCoordPairs[b1]; byte b3 = otherCoordPairs[b1 + 3]; byte b4; if (aint2[b1] > 0) { b4 = 1; } else { b4 = -1; } double d0 = (double)aint2[b2] / (double)aint2[b1]; double d1 = (double)aint2[b3] / (double)aint2[b1]; int[] aint3 = new int[] {0, 0, 0}; int i = 0; for (int j = aint2[b1] + b4; i != j; i += b4) { aint3[b1] = MathHelper.floor_double((double)(p_150530_1_[b1] + i) + 0.5D); aint3[b2] = MathHelper.floor_double((double)p_150530_1_[b2] + (double)i * d0 + 0.5D); aint3[b3] = MathHelper.floor_double((double)p_150530_1_[b3] + (double)i * d1 + 0.5D); byte b5 = 0; int k = Math.abs(aint3[0] - p_150530_1_[0]); int l = Math.abs(aint3[2] - p_150530_1_[2]); int i1 = Math.max(k, l); if (i1 > 0) { if (k == i1) { b5 = 4; } else if (l == i1) { b5 = 8; } } this.setBlockAndNotifyAdequately(this.worldObj, aint3[0], aint3[1], aint3[2], p_150530_3_, b5); } } } /** * Generates the leaf portion of the tree as specified by the leafNodes list. */ void generateLeaves() { int i = 0; for (int j = this.leafNodes.length; i < j; ++i) { int k = this.leafNodes[0]; int l = this.leafNodes[1]; int i1 = this.leafNodes[2]; this.generateLeafNode(k, l, i1); } } /** * Indicates whether or not a leaf node requires additional wood to be added to preserve integrity. */ boolean leafNodeNeedsBase(int p_76493_1_) { return (double)p_76493_1_ >= (double)this.heightLimit * 0.2D; } /** * Places the trunk for the big tree that is being generated. Able to generate double-sized trunks by changing a * field that is always 1 to 2. */ void generateTrunk() { int i = this.basePos[0]; int j = this.basePos[1]; int k = this.basePos[1] + this.height; int l = this.basePos[2]; int[] aint = new int[] {i, j, l}; int[] aint1 = new int[] {i, k, l}; this.func_150530_a(aint, aint1, Blocks.log); if (this.trunkSize == 2) { ++aint[0]; ++aint1[0]; this.func_150530_a(aint, aint1, Blocks.log); ++aint[2]; ++aint1[2]; this.func_150530_a(aint, aint1, Blocks.log); aint[0] += -1; aint1[0] += -1; this.func_150530_a(aint, aint1, Blocks.log); } } /** * Generates additional wood blocks to fill out the bases of different leaf nodes that would otherwise degrade. */ void generateLeafNodeBases() { int i = 0; int j = this.leafNodes.length; for (int[] aint = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; i < j; ++i) { int[] aint1 = this.leafNodes; int[] aint2 = new int[] {aint1[0], aint1[1], aint1[2]}; aint[1] = aint1[3]; int k = aint[1] - this.basePos[1]; if (this.leafNodeNeedsBase(k)) { this.func_150530_a(aint, aint2, Blocks.log); } } } /** * Checks a line of blocks in the world from the first coordinate to triplet to the second, returning the distance * (in blocks) before a non-air, non-leaf block is encountered and/or the end is encountered. */ int checkBlockLine(int[] p_76496_1_, int[] p_76496_2_) { int[] aint2 = new int[] {0, 0, 0}; byte b0 = 0; byte b1; for (b1 = 0; b0 < 3; ++b0) { aint2[b0] = p_76496_2_[b0] - p_76496_1_[b0]; if (Math.abs(aint2[b0]) > Math.abs(aint2[b1])) { b1 = b0; } } if (aint2[b1] == 0) { return -1; } else { byte b2 = otherCoordPairs[b1]; byte b3 = otherCoordPairs[b1 + 3]; byte b4; if (aint2[b1] > 0) { b4 = 1; } else { b4 = -1; } double d0 = (double)aint2[b2] / (double)aint2[b1]; double d1 = (double)aint2[b3] / (double)aint2[b1]; int[] aint3 = new int[] {0, 0, 0}; int i = 0; int j; for (j = aint2[b1] + b4; i != j; i += b4) { aint3[b1] = p_76496_1_[b1] + i; aint3[b2] = MathHelper.floor_double((double)p_76496_1_[b2] + (double)i * d0); aint3[b3] = MathHelper.floor_double((double)p_76496_1_[b3] + (double)i * d1); Block block = this.worldObj.getBlock(aint3[0], aint3[1], aint3[2]); if (!this.isReplaceable(worldObj, aint3[0], aint3[1], aint3[2])) { break; } } return i == j ? -1 : Math.abs(i); } } /** * Returns a boolean indicating whether or not the current location for the tree, spanning basePos to to the height * limit, is valid. */ boolean validTreeLocation() { int[] aint = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; int[] aint1 = new int[] {this.basePos[0], this.basePos[1] + this.heightLimit - 1, this.basePos[2]}; Block block = this.worldObj.getBlock(this.basePos[0], this.basePos[1] - 1, this.basePos[2]); boolean isSoil = block.canSustainPlant(worldObj, basePos[0], basePos[1] - 1, basePos[2], ForgeDirection.UP, (BlockSapling)Blocks.sapling); if (!isSoil) { return false; } else { int i = this.checkBlockLine(aint, aint1); if (i == -1) { return true; } else if (i < 6) { return false; } else { this.heightLimit = i; return true; } } } /** * Rescales the generator settings, only used in WorldGenBigTree */ public void setScale(double p_76487_1_, double p_76487_3_, double p_76487_5_) { this.heightLimitLimit = (int)(p_76487_1_ * 12.0D); if (p_76487_1_ > 0.5D) { this.leafDistanceLimit = 5; } this.scaleWidth = p_76487_3_; this.leafDensity = p_76487_5_; } public boolean generate(World p_76484_1_, Random p_76484_2_, int p_76484_3_, int p_76484_4_, int p_76484_5_) { this.worldObj = p_76484_1_; long l = p_76484_2_.nextLong(); this.rand.setSeed(l); this.basePos[0] = p_76484_3_; this.basePos[1] = p_76484_4_; this.basePos[2] = p_76484_5_; if (this.heightLimit == 0) { this.heightLimit = 5 + this.rand.nextInt(this.heightLimitLimit); } if (!this.validTreeLocation()) { this.worldObj = null; //Fix vanilla Mem leak, holds latest world return false; } else { this.generateLeafNodeList(); this.generateLeaves(); this.generateTrunk(); this.generateLeafNodeBases(); this.worldObj = null; //Fix vanilla Mem leak, holds latest world return true; } } }
  4. more or less.. I don't really understand what you want to tell me :I
  5. can you send me the class please? I'm really testing since 3 hours and I don't get a solution. I would be happy
  6. yes , thats true, but the fancy leaves don't work too... No idea what's wrong
  7. You dont belive me? Look: https://www.dropbox.com/s/n5vv1yl9fndza9m/forgeproblem.PNG?dl=1 Can't you help me other? There must be something wrong. If a other block gets the texture, all works perfectly.
  8. [12:31:30] [Client thread/ERROR]: Using missing texture, unable to load alchemyexchange:textures/blocks/waterinvolved_leaves_opaue.png java.io.FileNotFoundException: alchemyexchange:textures/blocks/waterinvolved_leaves_opaue.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[simpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58) [TextureManager.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:582) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_11] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_11] at GradleStart.bounce(GradleStart.java:107) [start/:?] at GradleStart.startClient(GradleStart.java:100) [start/:?] at GradleStart.main(GradleStart.java:55) [start/:?]
  9. Hey guys, I've created a leaves block, but the texture don't render . Can you help me? package de.LegendPlayz.AlchemyExchange; import java.util.ArrayList; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockLeaves; import net.minecraft.block.BlockLeavesBase; import net.minecraft.block.material.Material; import net.minecraft.block.BlockLeaves; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import net.minecraft.block.Block; public class BlockWaterInvolvedLeaves extends BlockLeavesBase { public BlockWaterInvolvedLeaves(Material p_i45394_1_) { super(Material.leaves,false); this.setTickRandomly(true); this.setCreativeTab(CreativeTabs.tabDecorations); this.setHardness(0.2F); this.setLightOpacity(1); this.setStepSound(soundTypeGrass); String blockid = CurrentMainClass.MODID + ":" + this.getClass().getName(); this.setBlockName(blockid); this.setCreativeTab(CurrentMainClass.tabAlchemyExchange); } @Override public void updateTick (World world, int x, int y, int z, Random random) { if (!world.isRemote) { int meta = world.getBlockMetadata(x, y, z); if ((meta & 4) == 0) { boolean nearbyTree = false; byte range = 4; for (int posX = x - range; posX <= x + range; posX++) { for (int posY = y - range; posY <= y + range; posY++) { for (int posZ = z - range; posZ <= z + range; posZ++) { Block block = world.getBlock(posX, posY, posZ); if (block != null && block.canSustainLeaves(world, posX, posY, posZ)) nearbyTree = true; } } } if (!nearbyTree) this.removeLeaves(world, x, y, z); } } } public void removeLeaves (World world, int x, int y, int z) { this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); world.setBlock(x, y, z, Blocks.air, 0, 7); } @Override public int quantityDropped (Random var1) { return var1.nextInt(20) == 0 ? 1 : 0; } @Override public Item getItemDropped (int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(null); /*------------------------------------------------------------------------------------------------------------------*/ } @Override public void dropBlockAsItemWithChance (World par1World, int par2, int par3, int par4, int par5, float par6, int par7) { if (!par1World.isRemote) { ArrayList<ItemStack> items = getDrops(par1World, par2, par3, par4, par5, par7); for (ItemStack item : items) { if (par1World.rand.nextFloat() <= par6) { this.dropBlockAsItem(par1World, par2, par3, par4, item); } } } } public IIcon fastIcon; public IIcon fancyIcon; @Override @SideOnly(Side.CLIENT) public IIcon getIcon (int side, int metadata) { if (Blocks.leaves.isOpaqueCube()) return fancyIcon; else return fastIcon; } @SideOnly(Side.CLIENT) @Override public void registerBlockIcons (IIconRegister iconRegister) { fastIcon = iconRegister.registerIcon(CurrentMainClass.MODID + ":" + "waterinvolved_leaves_opaue"); fancyIcon = iconRegister.registerIcon(CurrentMainClass.MODID + ":" + "waterinvolved_leaves"); } /** * 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 */ @Override public boolean shouldSideBeRendered (IBlockAccess var1, int var2, int var3, int var4, int var5) { return this.field_150121_P ? super.shouldSideBeRendered(var1, var2, var3, var4, var5) : true; } public int getDamageValue (World par1World, int par2, int par3, int par4) { return this.damageDropped(par1World.getBlockMetadata(par2, par3, par4)) % 3; } @Override public int getLightOpacity (IBlockAccess world, int x, int y, int z) { int meta = world.getBlockMetadata(x, y, z) % 4; if (meta == 0) { return 255; } return super.getLightOpacity(world, x, y, z);//this.getLightOpacity(world, x, y, z);//lightOpacity[blockID]; } public String[] func_150125_e () { return null; } }
  10. Hey guys, I've a problem with my mod: I've addet a leaves block to the game. If I place the block , I can see through it. If I place another block behind the leaves block, I can see him through the leaves block. But If I place a leaves block behind the leaves block, I can't see the leaves block through the leaves block. Can you help me? Here's my class : package de.LegendPlayz.AlchemyExchange; import java.util.ArrayList; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockLeavesBase; import net.minecraft.block.material.Material; import net.minecraft.block.BlockLeaves; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IShearable; import net.minecraft.block.BlockLeaves; public class BlockWaterInvolvedLeaves extends BlockLeavesBase implements IShearable{ int[] field_150128_a; @SideOnly(Side.CLIENT) protected int field_150127_b; protected IIcon[][] field_150129_M = new IIcon[2][]; private boolean field_150121_P; private static final String __OBFID = "CL_00000263"; public BlockWaterInvolvedLeaves(Material p_i45394_1_) { super(Material.leaves, false); this.setTickRandomly(true); this.setCreativeTab(CreativeTabs.tabDecorations); this.setHardness(0.2F); this.setLightOpacity(1); this.setStepSound(soundTypeGrass); String blockid = CurrentMainClass.MODID + ":" + this.getClass().getName(); this.setBlockName(blockid); this.setBlockTextureName(CurrentMainClass.MODID + ":"+ "waterinvolved_planks"); this.setCreativeTab(CurrentMainClass.tabAlchemyExchange); } @Override public boolean isOpaqueCube() { //TODO: isOpaqueCube() return Blocks.leaves.isOpaqueCube(); //; } @Override public boolean renderAsNormalBlock() { return false; } @SideOnly(Side.CLIENT) public int aaA; @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { for (int i = 0; i < 2; ++i) { aaA = i; } return field_150129_M[(!isOpaqueCube() ? 0 : 1)] [aaA]; } @SideOnly(Side.CLIENT) public void setGraphicsLevel(boolean p_150122_1_) { this.field_150121_P = p_150122_1_; this.field_150127_b = p_150122_1_ ? 0 : 1; } public void registerBlockIcons(IIconRegister iconRegister) { field_150129_M = new IIcon[2][2]; for (int i = 0; i < 2; ++i) { field_150129_M[0] = iconRegister.registerIcon(CurrentMainClass.MODID + ":" + "waterinvolved_leaves"); field_150129_M[1] = iconRegister.registerIcon(CurrentMainClass.MODID + ":" + "waterinvolved_leaves_opaque"); } } @Override public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) { // TODO Auto-generated method stub return false; } @Override public ArrayList<ItemStack> onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) { // TODO Auto-generated method stub return null; } public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { byte b0 = 1; int i1 = b0 + 1; if (p_149749_1_.checkChunksExist(p_149749_2_ - i1, p_149749_3_ - i1, p_149749_4_ - i1, p_149749_2_ + i1, p_149749_3_ + i1, p_149749_4_ + i1)) { for (int j1 = -b0; j1 <= b0; ++j1) { for (int k1 = -b0; k1 <= b0; ++k1) { for (int l1 = -b0; l1 <= b0; ++l1) { Block block = p_149749_1_.getBlock(p_149749_2_ + j1, p_149749_3_ + k1, p_149749_4_ + l1); if (block.isLeaves(p_149749_1_, p_149749_2_ + j1, p_149749_3_ + k1, p_149749_4_ + l1)) { block.beginLeavesDecay(p_149749_1_, p_149749_2_ + j1, p_149749_3_ + k1, p_149749_4_ + l1); } } } } } } public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) { if (!p_149674_1_.isRemote) { int l = p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_); if ((l & != 0 && (l & 4) == 0) { byte b0 = 4; int i1 = b0 + 1; byte b1 = 32; int j1 = b1 * b1; int k1 = b1 / 2; if (this.field_150128_a == null) { this.field_150128_a = new int[b1 * b1 * b1]; } int l1; if (p_149674_1_.checkChunksExist(p_149674_2_ - i1, p_149674_3_ - i1, p_149674_4_ - i1, p_149674_2_ + i1, p_149674_3_ + i1, p_149674_4_ + i1)) { int i2; int j2; for (l1 = -b0; l1 <= b0; ++l1) { for (i2 = -b0; i2 <= b0; ++i2) { for (j2 = -b0; j2 <= b0; ++j2) { Block block = p_149674_1_.getBlock(p_149674_2_ + l1, p_149674_3_ + i2, p_149674_4_ + j2); if (!block.canSustainLeaves(p_149674_1_, p_149674_2_ + l1, p_149674_3_ + i2, p_149674_4_ + j2)) { if (block.isLeaves(p_149674_1_, p_149674_2_ + l1, p_149674_3_ + i2, p_149674_4_ + j2)) { this.field_150128_a[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -2; } else { this.field_150128_a[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -1; } } else { this.field_150128_a[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = 0; } } } } for (l1 = 1; l1 <= 4; ++l1) { for (i2 = -b0; i2 <= b0; ++i2) { for (j2 = -b0; j2 <= b0; ++j2) { for (int k2 = -b0; k2 <= b0; ++k2) { if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1] == l1 - 1) { if (this.field_150128_a[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) { this.field_150128_a[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; } if (this.field_150128_a[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) { this.field_150128_a[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; } if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] == -2) { this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] = l1; } if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] == -2) { this.field_150128_a[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] = l1; } if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] == -2) { this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] = l1; } if (this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] == -2) { this.field_150128_a[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] = l1; } } } } } } } l1 = this.field_150128_a[k1 * j1 + k1 * b1 + k1]; if (l1 >= 0) { p_149674_1_.setBlockMetadataWithNotify(p_149674_2_, p_149674_3_, p_149674_4_, l & -9, 4); } else { this.removeLeaves(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); } } } } @SideOnly(Side.CLIENT) public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_) { if (p_149734_1_.canLightningStrikeAt(p_149734_2_, p_149734_3_ + 1, p_149734_4_) && !World.doesBlockHaveSolidTopSurface(p_149734_1_, p_149734_2_, p_149734_3_ - 1, p_149734_4_) && p_149734_5_.nextInt(15) == 1) { double d0 = (double)((float)p_149734_2_ + p_149734_5_.nextFloat()); double d1 = (double)p_149734_3_ - 0.05D; double d2 = (double)((float)p_149734_4_ + p_149734_5_.nextFloat()); p_149734_1_.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D); } } private void removeLeaves(World p_150126_1_, int p_150126_2_, int p_150126_3_, int p_150126_4_) { this.dropBlockAsItem(p_150126_1_, p_150126_2_, p_150126_3_, p_150126_4_, p_150126_1_.getBlockMetadata(p_150126_2_, p_150126_3_, p_150126_4_), 0); p_150126_1_.setBlockToAir(p_150126_2_, p_150126_3_, p_150126_4_); } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random p_149745_1_) { return p_149745_1_.nextInt(20) == 0 ? 1 : 0; } public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(Blocks.sapling); } /** * Drops the block items with a specified chance of dropping the specified items */ public void dropBlockAsItemWithChance(World p_149690_1_, int p_149690_2_, int p_149690_3_, int p_149690_4_, int p_149690_5_, float p_149690_6_, int p_149690_7_) { super.dropBlockAsItemWithChance(p_149690_1_, p_149690_2_, p_149690_3_, p_149690_4_, p_149690_5_, 1.0f, p_149690_7_); } protected void func_150124_c(World p_150124_1_, int p_150124_2_, int p_150124_3_, int p_150124_4_, int p_150124_5_, int p_150124_6_) {} protected int func_150123_b(int p_150123_1_) { return 20; } public void harvestBlock(World p_149636_1_, EntityPlayer p_149636_2_, int p_149636_3_, int p_149636_4_, int p_149636_5_, int p_149636_6_) { { super.harvestBlock(p_149636_1_, p_149636_2_, p_149636_3_, p_149636_4_, p_149636_5_, p_149636_6_); } } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int p_149692_1_) { return p_149692_1_ & 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. */ protected ItemStack createStackedBlock(int p_149644_1_) { return new ItemStack(Item.getItemFromBlock(this), 1, p_149644_1_ & 3); } @Override public void beginLeavesDecay(World world, int x, int y, int z) { int i2 = world.getBlockMetadata(x, y, z); if ((i2 & == 0) { world.setBlockMetadataWithNotify(x, y, z, i2 | 8, 4); } world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) | 8, 4); } @Override public boolean isLeaves(IBlockAccess world, int x, int y, int z) { return true; } @Override public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); int chance = this.func_150123_b(metadata); if (fortune > 0) { chance -= 2 << fortune; if (chance < 10) chance = 10; } if (world.rand.nextInt(chance) == 0) ret.add(new ItemStack(this.getItemDropped(metadata, world.rand, fortune), 1, this.damageDropped(metadata))); chance = 200; if (fortune > 0) { chance -= 10 << fortune; if (chance < 40) chance = 40; } this.captureDrops(true); this.func_150124_c(world, x, y, z, metadata, chance); // Dammet mojang ret.addAll(this.captureDrops(false)); return ret; } /* { ; }*/ }
  11. Hey Guys, please help me. My forge crashs while debugging and I don't know why. ~Santa CRASH REPORT #[18:56:51] [main/INFO] [GradleStart]: No arguments specified, assuming client. [18:56:51] [main/INFO] [GradleStart]: Extra: [] Exception in thread "main" java.lang.RuntimeException: java.io.FileNotFoundException: C:\Users\Lorenz\.gradle\caches\minecraft\assets\indexes\{ASSET_INDEX}.json (Das System kann die angegebene Datei nicht finden) at com.google.common.base.Throwables.propagate(Throwables.java:160) at GradleStart.setupAssets(GradleStart.java:260) at GradleStart.startClient(GradleStart.java:82) at GradleStart.main(GradleStart.java:56) Caused by: java.io.FileNotFoundException: C:\Users\Lorenz\.gradle\caches\minecraft\assets\indexes\{ASSET_INDEX}.json (Das System kann die angegebene Datei nicht finden) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileReader.<init>(Unknown Source) at GradleStart.loadAssetsIndex(GradleStart.java:266) at GradleStart.setupAssets(GradleStart.java:204) ... 2 more Java HotSpot 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
  12. Hello, i want to make a splash potion, but i dont know how to make it Can somebody tell me how I can make a splash potion and how can I make that a lightning strikes on the place where the splash potion is landing? Sorry for my bad english and thanks PS: Wenn ihr aus Deutschland seit könnt ihr mir in Deutsch antworten ^^
  13. Hey , how can I make a crop that can be planted with a special item on farmland and that grows like wheat? Please help me ~Santa
  14. Hey guys, I've downloaded forge-1.7.10-src and I've done the following things: gradlew setupDecompWorkspace gradlew eclipse The project don't work in eclipse and is empty. Whats the matter? Please help me ~Santa
  15. Hey guys, I want to make an addon for Thaumcraft 4 but I don't know how I import Thaumcraft 4 into my Eclipse project. If I put it into the library and put Bauble too into it, Minecraft crashs. Can somebody help me?? ~Santa
  16. Hey guys, I want to know how to make a GUI like this: Can somebody halp me ? ~Santa
  17. No , It doesn't work. While I create the source folder, eclipse thinks the scala code was java code. How can I fix this?
  18. thank you very much, it works . And yes, ForgeMultipart is the reason why I've installed scala
  19. Hey guys, I've a problem: I want to write my minecraft forge modification in scala, I've installed Scala IDE for Eclipse and Its done. But I can't add a scala nature to the Minecraft project. If I click on 'add scala nature', It don't do something. Please help me, ~Santa
  20. Ok , here is it: for (int j = 0; j < MinecraftServer.getServer().worldServers.length; ++j) { WorldServer worldserver = MinecraftServer.getServer().worldServers[j]; worldserver.setWorldTime(worldserver.getWorldTime() + (long)par2); } but what exactly I've to do? Please help me ~Santa
  21. Hey guys, how can I set the time ( for example day) with onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10) ? Please answer me I would be happy ~Santa
  22. Hey guys, I want to make an Item that changes a Block when right Click on it. Can somebody help me? ~Santa
  23. And in the crafting recipe like this: GameRegistry.addShapelessRecipe(new ItemStack(Blocks.tallgrass, 1 , 0), new ItemStack(Blocks.tallgrass, 1 , 3), new ItemStack(ITEMNAMEOFTHEITEMTHATTAKESDAMAGE, 1, OreDictionary.WILDCARD_VALUE)); Hope that helps

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.