Jump to content

SackCastellon

Members
  • Posts

    180
  • Joined

  • Last visited

Everything posted by SackCastellon

  1. I'm adding some different "attributes" to some of my tools: nbt.setInteger("HarvestLevel", 2); nbt.setInteger("MaxDamage", 500); nbt.setFloat("EfficiencyOnProperMaterial", 3.0F); nbt.setFloat("DamageVsEntity", 5.0F); nbt.setInteger("Enchantability", 40); * Those values are examples, there are about 400 total combinations The rest of attributes are easily get, because the methods have an ItemStack parameter. For example, the maxDamage: @Override public int getMaxDamage(ItemStack stack) { NBTTagCompound nbt = stack.getTagCompound(); return nbt.getInteger("MaxDamage"); } But unfortunately, the getItemEnchantability() method is the only one without an ItemStack parameter: @Override public int getItemEnchantability() { // TODO Auto-generated method stub return super.getItemEnchantability(); } So, I'm wondering if there is any way to get the NBT Tag, without an ItemStack parameter. Thanks for helping. SackCastellon.
  2. Here is my code: package com.sackcastellon.betterwood.item; import java.util.List; import java.util.Random; import java.util.Set; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.ForgeHooks; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class NBT extends Item { private String toolClass = "pickaxe"; private Random random = new Random(); public NBT() { super(); this.setUnlocalizedName("nbt"); this.setCreativeTab(CreativeTabs.tabBlock); } /** * Initialization of NBT Tags * @param item Total number of items based on NBT Tags * @return <b>ItemStack</b> The ItemStack with the proper NBT Tags */ private ItemStack getItemStack(int item) { ItemStack itemStack = new ItemStack(this); itemStack.stackTagCompound = new NBTTagCompound(); NBTTagCompound nbt = itemStack.getTagCompound(); nbt.setString("info", "lore " + item); switch(item) { case 0: nbt.setFloat("EfficiencyOnProperMaterial", 2.0F); nbt.setInteger("Enchantability", 15); nbt.setString("ToolMaterial", "WOOD"); nbt.setString("itemRepair", "wood"); nbt.setFloat("damageVsEntity", 2.0F + 0.0F); nbt.setInteger("HarvestLevel", 0); nbt.setInteger("MaxDamage", 59); break; case 1: nbt.setFloat("EfficiencyOnProperMaterial", 4.0F); nbt.setInteger("Enchantability", 5); nbt.setString("ToolMaterial", "STONE"); nbt.setString("itemRepair", "stone"); nbt.setFloat("damageVsEntity", 2.0F + 1.0F); nbt.setInteger("HarvestLevel", 1); nbt.setInteger("MaxDamage", 131); break; case 2: nbt.setFloat("EfficiencyOnProperMaterial", 6.0F); nbt.setInteger("Enchantability", 14); nbt.setString("ToolMaterial", "IRON"); nbt.setString("itemRepair", "iron"); nbt.setFloat("damageVsEntity", 2.0F + 2.0F); nbt.setInteger("HarvestLevel", 2); nbt.setInteger("MaxDamage", 250); break; case 3: nbt.setFloat("EfficiencyOnProperMaterial", 8.0F); nbt.setInteger("Enchantability", 10); nbt.setString("ToolMaterial", "EMERALD"); nbt.setString("itemRepair", "diamond"); nbt.setFloat("damageVsEntity", 2.0F + 3.0F); nbt.setInteger("HarvestLevel", 3); nbt.setInteger("MaxDamage", 1561); break; default: break; } return itemStack; } /** * Add information based on NBT Tags<br> * <b>Tag:</b> "info" */ @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean flag) { if(itemStack.stackTagCompound != null) { if(itemStack.stackTagCompound.hasKey("info")) { list.add(itemStack.stackTagCompound.getString("info")); } if(itemStack.stackTagCompound.hasKey("id")) { list.add("ID is " + itemStack.stackTagCompound.getShort("id")); } } } /** * Sub items to be shown on Creative Tabs, based on NBT Tags<br> * Initialization of NBT Tags */ @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void getSubItems(Item item, CreativeTabs tabs, List list) { for(int i = 0; i < 4; ++i) { list.add(this.getItemStack(i)); } } /** * Get maximum item damage based on NBT Tags<br> * <b>Tag:</b> "MaxDamage" */ @Override public int getMaxDamage(ItemStack stack) { return stack.stackTagCompound.getInteger("MaxDamage"); } @Override public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) { if ((double)block.getBlockHardness(world, x, y, z) != 0.0D) { stack.damageItem(1, entity); } return true; } /** * Returns True is the item is renderer in full 3D when hold. */ @Override @SideOnly(Side.CLIENT) public boolean isFull3D() { return true; } @Override public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) { // TODO return false; } @SuppressWarnings({ "unchecked", "rawtypes", "deprecation" }) @Override public Multimap getAttributeModifiers(ItemStack stack) { Multimap multimap = super.getItemAttributeModifiers(); multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Tool modifier", (double)stack.stackTagCompound.getFloat("damageVsEntity"), 0)); return multimap; } @Override public float getDigSpeed(ItemStack stack, Block block, int meta) { if (ForgeHooks.isToolEffective(stack, block, meta)) { return 4.0F; } return super.getDigSpeed(stack, block, meta); } @Override public int getHarvestLevel(ItemStack stack, String toolClass) { int level = super.getHarvestLevel(stack, toolClass); if (level == -1 && toolClass != null && toolClass.equals(this.toolClass )) { return stack.stackTagCompound.getInteger("HarvestLevel"); } else { return level; } } @Override public Set<String> getToolClasses(ItemStack stack) { return toolClass != null ? ImmutableSet.of(toolClass) : super.getToolClasses(stack); } } PD: This is the code of the "tools" i was testing. PD2: I've notice that if i remove the method "getAttributeModifiers" the OP strength goes away, but then my tool have an item default damage to mobs
  3. I was testing the damage of my tools to entities, when i notice they where always where killed by one hit so i tested it with the wither, and... well, better if you see it: *.mp4 PD: That was Eclipse not Launcher Does anyone knows why this is happening and how to solve it??
  4. OK, i will try to find some method to remove the potion effects from the player, because even if he drinks milk the effect still remains :'( If i find something i will tell you, thanks for helping
  5. But it is checking if the player is in an area of 5 blocks from a block, so if the player is more away than 5 blocks then it should stop adding the effect, I think. EDIT: I understood you bad. No it is checking if the potion is NOT active, so it is not re-adding it on every entity update.
  6. This is my code, and should work fine, it adds the potion effect to the player, but on countdown get 0:00 it keeps the effect, and the countdown also keeps on 0:00 @Override @SuppressWarnings("rawtypes") public void updateEntity() { super.updateEntity(); double minX = (float)(this.xCoord - range); double minY = (float)(this.yCoord - range); double minZ = (float)(this.zCoord - range); double maxX = (float)((this.xCoord + 1) + range); double maxY = (float)((this.yCoord + 1) + range); double maxZ = (float)((this.zCoord + 1) + range); List list = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getAABBPool().getAABB(minX, minY, minZ, maxX, maxY, maxZ)); if(list.size() != 0) { for(int i = 0; i < list.size(); ++i) { EntityPlayer player = (EntityPlayer) list.get(i); if(!player.isPotionActive(10)) { player.addPotionEffect(new PotionEffect(10, 400)); } } } } Thanks in advance for helping
  7. I have a problem with this code: public void updateEntity() { super.updateEntity(); float f = 5.0F; double minX = (float)this.xCoord - f; double minY = this.yCoord - f; double minZ = this.zCoord - f; double maxX = (this.xCoord + 1) + f; double maxY = (this.yCoord + 1) + f; double maxZ = (this.zCoord + 1) + f; List list = this.worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getAABBPool().getAABB(minX, minY, minZ, maxX, maxY, maxZ)); if(list.size() != 0) { for(int i = 0; i < list.size(); ++i) { EntityPlayer entityPlayer = (EntityPlayer) list.get(i); entityPlayer.addPotionEffect(new PotionEffect(10, 2, 0, false)); } } If the player is nearer then 5 block from my custom one, the he gets a potion effect, but when he goes away more than 5 block, he still has the potion effect. How can i remove it if the player goes away?
  8. Will this return a list of the players within 5 blocks from my custom one? double range = 5.0; List list = world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x - range, y - range, z - range, x + range, y + range, z + range));
  9. I want to add a potion effect to to a player, if the player is near a block (10 square blocks for example), and remove it if the player goes away. Basically somethink like the beacon does, but i've not found anything
  10. I want my custom block (custom log) to emit light ( setLightLevel(float) ) if certain blocks an near him (not next to, 1, 2, 3, 5,... blocks away), also if the block is "placed" by the world generation (or if placed when a tree is grown), and not if the block is placed by a player. Hope it is possible. Thanks for helping
  11. To just add chat messages, type this: EntityPlayer.addChatMessage(new ChatComponentText("Hello World!"))
  12. Yes, the trees from worldgen has no rotated logs (at least the ones i saw) and the treen grew by bonemeal, have a chance of generate with the bottom log rotated.
  13. Can someone help me please!?
  14. Thank you, that was the problem. Just added this, and now it works: @Override @SideOnly(Side.CLIENT) public AxisAlignedBB getRenderBoundingBox() { return INFINITE_EXTENT_AABB; } That was the first thing i thought, anyway thanks
  15. I've got this beam: https://dl.dropboxusercontent.com/u/184200482/img/beam_bug_ok.png[/img] But if i look up (by the way a lose the view of the block) the beam stop rendering https://dl.dropboxusercontent.com/u/184200482/img/beam_bug_bad.png[/img] My code Block.class package com.sackcastellon.treeoflife.block; import java.util.Random; import com.sackcastellon.treeoflife.TreeOfLife; import com.sackcastellon.treeoflife.tileentity.TileEntityRoot; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.util.ForgeDirection; public class BlockRoot extends BlockContainer { public BlockRoot() { super(Material.wood); this.setCreativeTab(TreeOfLife.tabTol); } @Override public TileEntity createNewTileEntity(World var1, int var2) { return new TileEntityRoot(); } @Override public boolean isOpaqueCube() { return false; } @Override public IIcon getIcon(int side, int meta) { return Blocks.glass.getIcon(side, meta); } @Override public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { // TODO Auto-generated method stub super.onNeighborBlockChange(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); } @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { // TODO Auto-generated method stub return super.getItemDropped(p_149650_1_, p_149650_2_, p_149650_3_); } @Override public int damageDropped(int p_149692_1_) { // TODO Auto-generated method stub return super.damageDropped(p_149692_1_); } @Override public void registerBlockIcons(IIconRegister p_149651_1_) { // TODO Auto-generated method stub super.registerBlockIcons(p_149651_1_); } @Override public int quantityDropped(int meta, int fortune, Random random) { // TODO Auto-generated method stub return super.quantityDropped(meta, fortune, random); } @Override public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction, IPlantable plantable) { // TODO Auto-generated method stub return super.canSustainPlant(world, x, y, z, direction, plantable); } @Override public void onNeighborChange(IBlockAccess world, int x, int y, int z, int tileX, int tileY, int tileZ) { // TODO Auto-generated method stub super.onNeighborChange(world, x, y, z, tileX, tileY, tileZ); } } TileEntity.class package com.sackcastellon.treeoflife.tileentity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; public class TileEntityRoot extends TileEntity { private boolean field_146015_k = true; @SideOnly(Side.CLIENT) private long field_146016_i; @SideOnly(Side.CLIENT) private float field_146014_j; @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } @SideOnly(Side.CLIENT) public float func_146002_i() { if (!this.field_146015_k ) { return 0.0F; } else { int i = (int)(this.worldObj.getTotalWorldTime() - this.field_146016_i); this.field_146016_i = this.worldObj.getTotalWorldTime(); if (i > 1) { this.field_146014_j -= (float)i / 40.0F; if (this.field_146014_j < 0.0F) { this.field_146014_j = 0.0F; } } this.field_146014_j += 0.025F; if (this.field_146014_j > 1.0F) { this.field_146014_j = 1.0F; } return this.field_146014_j; } } } TileEntityRenderer.class package com.sackcastellon.treeoflife.renderer; import org.lwjgl.opengl.GL11; import com.sackcastellon.treeoflife.tileentity.TileEntityRoot; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) public class TileEntityRootRenderer extends TileEntitySpecialRenderer { private static final ResourceLocation field_147523_b = new ResourceLocation("textures/entity/beacon_beam.png"); public void renderTileEntityAt(TileEntityRoot entity, double x, double y, double z, float p_147522_8_) { float f1 = entity.func_146002_i(); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); if (f1 > 0.0F) { Tessellator tessellator = Tessellator.instance; this.bindTexture(field_147523_b); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); GL11.glDepthMask(true); OpenGlHelper.glBlendFunc(770, 1, 1, 0); float f2 = (float)entity.getWorldObj().getTotalWorldTime() + p_147522_8_; float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); byte b0 = 1; double d3 = (double)f2 * 0.025D * (1.0D - (double)(b0 & 1) * 2.5D); tessellator.startDrawingQuads(); tessellator.setColorRGBA(255, 60, 200, 32); double d5 = (double)b0 * 0.2D; double d7 = 0.5D + Math.cos(d3 + 2.356194490192345D) * d5; double d9 = 0.5D + Math.sin(d3 + 2.356194490192345D) * d5; double d11 = 0.5D + Math.cos(d3 + (Math.PI / 4D)) * d5; double d13 = 0.5D + Math.sin(d3 + (Math.PI / 4D)) * d5; double d15 = 0.5D + Math.cos(d3 + 3.9269908169872414D) * d5; double d17 = 0.5D + Math.sin(d3 + 3.9269908169872414D) * d5; double d19 = 0.5D + Math.cos(d3 + 5.497787143782138D) * d5; double d21 = 0.5D + Math.sin(d3 + 5.497787143782138D) * d5; double d23 = (double)(256.0F * f1); double d25 = 0.0D; double d27 = 1.0D; double d28 = (double)(-1.0F + f3); double d29 = (double)(256.0F * f1) * (0.5D / d5) + d28; double bottom = 1.0D; tessellator.addVertexWithUV(x + d7, y + d23, z + d9, d27, d29); tessellator.addVertexWithUV(x + d7, y + bottom, z + d9, d27, d28); tessellator.addVertexWithUV(x + d11, y + bottom, z + d13, d25, d28); tessellator.addVertexWithUV(x + d11, y + d23, z + d13, d25, d29); tessellator.addVertexWithUV(x + d19, y + d23, z + d21, d27, d29); tessellator.addVertexWithUV(x + d19, y + bottom, z + d21, d27, d28); tessellator.addVertexWithUV(x + d15, y + bottom, z + d17, d25, d28); tessellator.addVertexWithUV(x + d15, y + d23, z + d17, d25, d29); tessellator.addVertexWithUV(x + d11, y + d23, z + d13, d27, d29); tessellator.addVertexWithUV(x + d11, y + bottom, z + d13, d27, d28); tessellator.addVertexWithUV(x + d19, y + bottom, z + d21, d25, d28); tessellator.addVertexWithUV(x + d19, y + d23, z + d21, d25, d29); tessellator.addVertexWithUV(x + d15, y + d23, z + d17, d27, d29); tessellator.addVertexWithUV(x + d15, y + bottom, z + d17, d27, d28); tessellator.addVertexWithUV(x + d7, y + bottom, z + d9, d25, d28); tessellator.addVertexWithUV(x + d7, y + d23, z + d9, d25, d29); tessellator.draw(); GL11.glEnable(GL11.GL_BLEND); OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glDepthMask(false); tessellator.startDrawingQuads(); tessellator.setColorRGBA(255, 255, 255, 32); double d30 = 0.2D; double d4 = 0.2D; double d6 = 0.8D; double d8 = 0.2D; double d10 = 0.2D; double d12 = 0.8D; double d14 = 0.8D; double d16 = 0.8D; double d18 = (double)(256.0F * f1); double d20 = 0.0D; double d22 = 1.0D; double d24 = (double)(-1.0F + f3); double d26 = (double)(256.0F * f1) + d24; tessellator.addVertexWithUV(x + d30, y + d18, z + d4, d22, d26); tessellator.addVertexWithUV(x + d30, y + bottom, z + d4, d22, d24); tessellator.addVertexWithUV(x + d6, y + bottom, z + d8, d20, d24); tessellator.addVertexWithUV(x + d6, y + d18, z + d8, d20, d26); tessellator.addVertexWithUV(x + d14, y + d18, z + d16, d22, d26); tessellator.addVertexWithUV(x + d14, y + bottom, z + d16, d22, d24); tessellator.addVertexWithUV(x + d10, y + bottom, z + d12, d20, d24); tessellator.addVertexWithUV(x + d10, y + d18, z + d12, d20, d26); tessellator.addVertexWithUV(x + d6, y + d18, z + d8, d22, d26); tessellator.addVertexWithUV(x + d6, y + bottom, z + d8, d22, d24); tessellator.addVertexWithUV(x + d14, y + bottom, z + d16, d20, d24); tessellator.addVertexWithUV(x + d14, y + d18, z + d16, d20, d26); tessellator.addVertexWithUV(x + d10, y + d18, z + d12, d22, d26); tessellator.addVertexWithUV(x + d10, y + bottom, z + d12, d22, d24); tessellator.addVertexWithUV(x + d30, y + bottom, z + d4, d20, d24); tessellator.addVertexWithUV(x + d30, y + d18, z + d4, d20, d26); tessellator.draw(); GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDepthMask(true); } GL11.glAlphaFunc(GL11.GL_GREATER, 0.5F); } public void renderTileEntityAt(TileEntity entity, double x, double y, double z, float par5) { this.renderTileEntityAt((TileEntityRoot)entity, x, y, z, par5); } } As always thanks for helping
  16. First, the half of this code does nothing: @Override public Item getItemDropped(int metadata, Random random, int fortune) { int drop = random.nextInt(2); if(drop == 0) { itemDropped = Items.bed; } else { itemDropped = Items.egg; } if(drop == 1) { itemDropped = Items.apple; } else { itemDropped = Items.coal; } return itemDropped; } If the "drop" is equal to 1 then drops an apple, and if don't (so if it's 0) then drops coal. So it will never drop beds or egg. (this happens because the last lines overrides the first ones) Second as the block only drops apples or coal, it will only drop 4 apples else if(itemDropped == Items.apple) { quantityDropped = 4; } Or 1 coal: else { quantityDropped = 1; }
  17. Ok, now i understand you, but i don't know why it happens. Could you show me all your class or just the quantityDropped() method?
  18. I'm not really sure about what do you mean exactly
  19. switch(rand.nextInt(5)) { case 0: case 1: case 2: case 3: itemDropped = Items.bed; break; case 4: itemDropped = Items.blaze_powder; break; } There are 1/5 posiblities of drop a blaze powder and 4/5 of drop a bed That code is equal to this: int drop = rand.nextInt(5); if(drop == 0 || drop == 1 || drop == 2 || drop == 3) { itemDropped = Items.bed; } else { itemDropped = Items.blaze_powder; }
  20. To make the block always drop 4 items (apples, arrows, etc.) just type this: @Override public int quantityDropped(int meta, int fortune, Random random) { return 4; } If you want the block to drop 1, 2, 3, 4,... items depending in the item dropped (like one time 4 apples, another time 3 arrows, another time 7 books....) then type this: private Item itemDropped = null; private int quantityDropped = 0; @Override public Item getItemDropped(int metadata, Random random, int fortune) { int drop = random.nextInt(; if (drop == 0) { itemDropped = Items.apple; } else if (drop == 1) { itemDropped = Items.arrow; } else if (drop == 2) { itemDropped = Items.gold_ingot; } else if (drop == 3) { itemDropped = Items.bed; } else if (drop == 4) { itemDropped = Items.leather; } else if (drop == 5) { itemDropped = Items.book; } else if (drop == 6) { itemDropped = Items.lava_bucket; } else { itemDropped = Items.diamond; } return itemDropped; } @Override public int quantityDropped(int meta, int fortune, Random random) { if(itemDropped == Items.apple) { quantityDropped = 3; } else if(itemDropped == Items.arrow) { quantityDropped = 4; } else { quantityDropped = 7; } return quantityDropped; } Adding some randomness to the quantity dropped: quantityDropped = 5 + random.nextInt(6); // quantity dropped from 5 to 10 items You can add more else if statements on the quantityDropped() method EDIT: Tip, you can use switch instead a lot of else statements, on getItemDropped . E.g: switch(rand.nextInt(6)) { case 1: return Item1; case 2: return Item2; case 3: return Item3; case 4: return Item4; case 5: return Item5; default: return ItemDefault; }
  21. Just add this line to the getIcon() method: this.setGraphicsLevel(Minecraft.getMinecraft().gameSettings.fancyGraphics); It should look like this: @SideOnly(Side.CLIENT) public IIcon getIcon(int par1, int par2) { this.setGraphicsLevel(Minecraft.getMinecraft().gameSettings.fancyGraphics); return (par2 & 3) == 1 ? this.icon[this.field_150127_b][1] : ((par2 & 3) == 3 ? this.icon[this.field_150127_b][3] : ((par2 & 3) == 2 ? this.icon[this.field_150127_b][2] : this.icon[this.field_150127_b][0])); } P.S.: I also had the same problem, a few days ago: [1.7.2] [solved] Custom Leaves always render transparent
  22. What do you mean? And how can i fix it?
  23. What do you mean on return the String, type it on the chat? E.g.: <BlockTest> You activated me
×
×
  • Create New...

Important Information

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