Jump to content

Atheera

Members
  • Posts

    57
  • Joined

  • Last visited

Everything posted by Atheera

  1. Why does it matter what version it is for, mod as mod?
  2. Hey man, I got it working with damage and everything. I hope you don't mind me using your class. Arrow class: package extendedobsidian.atheera.com.entity; import extendedobsidian.atheera.com.Core; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityObsidianInfusedArrow extends EntityArrow { public EntityObsidianInfusedArrow(World world) { super(world); } public EntityObsidianInfusedArrow(World world, double x, double y, double z) { super(world, x, y, z); } public EntityObsidianInfusedArrow(World world, EntityLivingBase shooter, EntityLivingBase target, float motionMulti, float precision) { super(world, shooter, target, motionMulti, precision); } public EntityObsidianInfusedArrow(World world, EntityLivingBase shooter, float motionMulti) { super(world, shooter, motionMulti); this.setDamage(6.0D); } @Override public void onCollideWithPlayer(EntityPlayer player) { if( !this.worldObj.isRemote ) { NBTTagCompound origNBT = new NBTTagCompound(); this.writeEntityToNBT(origNBT); if( origNBT.getByte("inGround") == 1 && this.arrowShake <= 0 && ((this.canBePickedUp == 1 && player.inventory.addItemStackToInventory(new ItemStack(Core.itemObsidianInfusedArrow, 1))) || player.capabilities.isCreativeMode)) { this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); player.onItemPickup(this, 1); this.setDead(); } } } }
  3. This is not really my expertise but, I am pretty sure that you can't put one block into another, you would have to do something like forge multipart and use their methods or something. There is one other thing that might work, you could update the model when the block has been updated with a flint and steel or something. And use different models so the model looks like there is a fire burning inside it. I would actually think that the second method is a lot easier. Do want something else to happen with the block, open something and cook it when lit?
  4. I'm not really sure what it is you're trying to do. Do you want to make a fire block appaer ontop of the block. And if that is what you want, when do you want that to happen? On right click or when it's placed? Is the block custom rendered like a cauldron or a pot or is it a solid block?
  5. I have tried everything but nothing works. There doesn't seem to be any tutorials online to fix it either. Entity Arrow Class: package extendedobsidian.atheera.com; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityObsidianInfusedArrow extends EntityArrow { public EntityObsidianInfusedArrow(World world) { super(world); this.setDamage(6.0D); } public EntityObsidianInfusedArrow(World world, double x, double y, double z) { super(world, x, y, z); } public EntityObsidianInfusedArrow(World world, EntityLivingBase shooter, EntityLivingBase target, float motionMulti, float precision) { super(world, shooter, target, motionMulti, precision); } public EntityObsidianInfusedArrow(World world, EntityLivingBase shooter, float motionMulti) { super(world, shooter, motionMulti); } @Override public void onCollideWithPlayer(EntityPlayer player) { if( !this.worldObj.isRemote ) { NBTTagCompound origNBT = new NBTTagCompound(); this.writeEntityToNBT(origNBT); if( origNBT.getByte("inGround") == 1 && this.arrowShake <= 0 && ((this.canBePickedUp == 1 && player.inventory.addItemStackToInventory(new ItemStack(Core.itemObsidianInfusedArrow, 1))) || player.capabilities.isCreativeMode)) { this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); player.onItemPickup(this, 1); this.setDead(); } } } public double damage = 2.0D; @Override public void setDamage(double damage) { super.setDamage(damage); this.damage = damage * 3.0D; damage = damage * 3.0D; } }
  6. I have gotten the texture right and the arrow behaving as I want them to, but the damage is wrong, and I don't know how to fix it. Entity Arrow Class: package extendedobsidian.atheera.com; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityObsidianInfusedArrow extends EntityArrow { public EntityObsidianInfusedArrow(World world) { super(world); } public EntityObsidianInfusedArrow(World world, double x, double y, double z) { super(world, x, y, z); } public EntityObsidianInfusedArrow(World world, EntityLivingBase shooter, EntityLivingBase target, float motionMulti, float precision) { super(world, shooter, target, motionMulti, precision); } public EntityObsidianInfusedArrow(World world, EntityLivingBase shooter, float motionMulti) { super(world, shooter, motionMulti); } @Override public void onCollideWithPlayer(EntityPlayer player) { if( !this.worldObj.isRemote ) { NBTTagCompound origNBT = new NBTTagCompound(); this.writeEntityToNBT(origNBT); if( origNBT.getByte("inGround") == 1 && this.arrowShake <= 0 && ((this.canBePickedUp == 1 && player.inventory.addItemStackToInventory(new ItemStack(Core.itemObsidianInfusedArrow, 1))) || player.capabilities.isCreativeMode)) { this.worldObj.playSoundAtEntity(this, "random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); player.onItemPickup(this, 1); this.setDead(); } } } @Override public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) { par1NBTTagCompound.setDouble("damage", this.damage); } @Override public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) { if (par1NBTTagCompound.hasKey("damage")) { this.damage = par1NBTTagCompound.getDouble("damage"); } } private double damage = 6.0D; @Override public void setDamage(double par1) { this.damage = par1; } @Override public double getDamage() { return this.damage; } }
  7. does it get stuck after it hits something or during flight? Another question is what does your EntityArrow do different from the vanilla one? I see a lot of copied code. Can't you just extend the vanilla one and make your changes? Here's an example from my arrow entity: https://github.com/SanAndreasP/EnderStuffPlus/blob/master/java/de/sanandrew/mods/enderstuffplus/entity/EntityAvisArrow.java I am uploading a video now, but when it has hit something, it goes back a bit. I want it to act exactly like the vanilla arrow but do more damage. Arrows behaving themselves weird
  8. does it get stuck after it hits something or during flight? Another question is what does your EntityArrow do different from the vanilla one? I see a lot of copied code. Can't you just extend the vanilla one and make your changes? Here's an example from my arrow entity: https://github.com/SanAndreasP/EnderStuffPlus/blob/master/java/de/sanandrew/mods/enderstuffplus/entity/EntityAvisArrow.java I am uploading a video now, but when it has hit something, it goes back a bit. I want it to act exactly like the vanilla arrow but do more damage.
  9. OMG! I love you so much! THANK YOU!! Well, the texture is rendering correctly, although... The arrow gets stuck in mid-air.
  10. Yeah, it gets rendered alright: 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme 2014-05-07 13:31:13 [iNFO] [sTDOUT] renderme
  11. I have this in the init of my main class EntityRegistry.registerModEntity(EntityObsidianInfusedArrow.class, "ObsidianInfusedArrow", 2, Core.instance, 128, 1, true); LanguageRegistry.instance().addStringLocalization("entity.ObsidianInfusedArrow.name", "Obsidian Infused Arrow"); EntityRegistry.registerGlobalEntityID(EntityObsidianInfusedArrow.class, "ObsidianInfusedArrow", EntityRegistry.findGlobalUniqueEntityId()); Shouldn't that do it?
  12. Isn't that done in the bow class? package extendedobsidian.atheera.com; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.ArrowLooseEvent; import net.minecraftforge.event.entity.player.ArrowNockEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ObsidianInfusedBow extends Item { public static final String[] bowPullIconNameArray = new String[] {"ObsidianInfusedBow_pulling_0", "ObsidianInfusedBow_pulling_1", "ObsidianInfusedBow_pulling_2"}; @SideOnly(Side.CLIENT) private Icon[] iconArray; @SideOnly(Side.CLIENT) private Icon icon0; private Icon icon1; private Icon icon2; public ObsidianInfusedBow(int par1) { super(par1); this.maxStackSize = 1; this.setMaxDamage(8192); } @Override public boolean hasEffect(ItemStack itemstack) { return true; } @Override public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) { int j = this.getMaxItemUseDuration(par1ItemStack) - par4; ArrowLooseEvent event = new ArrowLooseEvent(par3EntityPlayer, par1ItemStack, j); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return; } j = event.charge; boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0; if (flag || par3EntityPlayer.inventory.hasItem(Core.itemObsidianInfusedArrow.itemID)) { float f = (float)j / 20.0F; f = (f * f + f * 2.0F) / 3.0F; if ((double)f < 0.1D) { return; } if (f > 1.0F) { f = 1.0F; } EntityObsidianInfusedArrow entityarrow = new EntityObsidianInfusedArrow(par2World, par3EntityPlayer, f * 2.0F); if (f == 1.0F) { entityarrow.setIsCritical(true); } int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack); if (k > 0) { entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D); } int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack); if (l > 0) { entityarrow.setKnockbackStrength(l); } if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0) { entityarrow.setFire(100); } par1ItemStack.damageItem(1, par3EntityPlayer); par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); if (flag) { entityarrow.canBePickedUp = 2; }else{ par3EntityPlayer.inventory.consumeInventoryItem(Core.itemObsidianInfusedArrow.itemID); } if (!par2World.isRemote) { par2World.spawnEntityInWorld(entityarrow); } } } @Override public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { return par1ItemStack; } @Override public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 36000; } @Override public EnumAction getItemUseAction(ItemStack par1ItemStack) { return EnumAction.bow; } @Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return event.result; } if (par3EntityPlayer.capabilities.isCreativeMode || par3EntityPlayer.inventory.hasItem(Core.itemObsidianInfusedArrow.itemID)) { par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); } return par1ItemStack; } @Override public int getItemEnchantability() { return 30; } public String STANDBY = Core.modid.toLowerCase() + ":ObsidianInfusedBow_standby"; public String TEXTURE0 = Core.modid.toLowerCase() + ":ObsidianInfusedBow_pulling_0"; public String TEXTURE1 = Core.modid.toLowerCase() + ":ObsidianInfusedBow_pulling_1"; public String TEXTURE2 = Core.modid.toLowerCase() + ":ObsidianInfusedBow_pulling_2"; @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { itemIcon = par1IconRegister.registerIcon(STANDBY); icon0 = par1IconRegister.registerIcon(TEXTURE0); icon1 = par1IconRegister.registerIcon(TEXTURE1); icon2 = par1IconRegister.registerIcon(TEXTURE2); } @Override @SideOnly(Side.CLIENT) public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) { if(player.getItemInUse() == null) return this.itemIcon; int Pulling = stack.getMaxItemUseDuration() - useRemaining; if (Pulling >= 18) { return icon2; }else if (Pulling > 13) { return icon1; }else if (Pulling > 0) { return icon0; } return itemIcon; } }
  13. Does not matter where you bind the texture (as long as it's before the texture drawing) 1. Why do you have an Icon in your render file? It does not belong there. 2. Can we see how you registered your Arrow entity (and the render)? Client Proxy: package extendedobsidian.atheera.com; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.registry.GameRegistry; public class ClientProxy extends CommonProxy{ @Override public void registerRenderThings() { GameRegistry.registerTileEntity(TileEntityFusionFurnace.class, "tileentityfusionfurnace"); RenderingRegistry.registerEntityRenderingHandler(EntityObsidianInfusedArrow.class, new RenderObsidianInfusedArrow()); } public int addArmor(String armor) { return RenderingRegistry.addNewArmourRendererPrefix(armor); } } I forgot this also: Main class EntityRegistry.registerModEntity(EntityObsidianInfusedArrow.class, "ObsidianInfusedArrow", 2, Core.instance, 128, 1, true); LanguageRegistry.instance().addStringLocalization("entity.ObsidianInfusedArrow.name", "Obsidian Infused Arrow"); EntityRegistry.registerGlobalEntityID(EntityObsidianInfusedArrow.class, "ObsidianInfusedArrow", EntityRegistry.findGlobalUniqueEntityId());
  14. Hi there! I have this problem where my arrow entitys render as a purple arrow. I have registered the arrow but it's not working. Rendering class: package extendedobsidian.atheera.com; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @SideOnly(Side.CLIENT) public class RenderObsidianInfusedArrow extends Render { @SideOnly(Side.CLIENT) private Icon icon0; private static final ResourceLocation arrowTextures = new ResourceLocation(Core.modid.toLowerCase() + ":ObsidianInfusedArrowEntity"); public void renderArrow(EntityObsidianInfusedArrow par1EntityArrow, double par2, double par4, double par6, float par8, float par9) { this.bindEntityTexture(par1EntityArrow); GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glRotatef(par1EntityArrow.prevRotationYaw + (par1EntityArrow.rotationYaw - par1EntityArrow.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(par1EntityArrow.prevRotationPitch + (par1EntityArrow.rotationPitch - par1EntityArrow.prevRotationPitch) * par9, 0.0F, 0.0F, 1.0F); Tessellator tessellator = Tessellator.instance; byte b0 = 0; float f2 = 0.0F; float f3 = 0.5F; float f4 = (float)(0 + b0 * 10) / 32.0F; float f5 = (float)(5 + b0 * 10) / 32.0F; float f6 = 0.0F; float f7 = 0.15625F; float f8 = (float)(5 + b0 * 10) / 32.0F; float f9 = (float)(10 + b0 * 10) / 32.0F; float f10 = 0.05625F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); float f11 = (float)par1EntityArrow.arrowShake - par9; if (f11 > 0.0F) { float f12 = -MathHelper.sin(f11 * 3.0F) * f11; GL11.glRotatef(f12, 0.0F, 0.0F, 1.0F); } GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F); GL11.glScalef(f10, f10, f10); GL11.glTranslatef(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(f10, 0.0F, 0.0F); tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8); tessellator.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8); tessellator.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9); tessellator.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); GL11.glNormal3f(-f10, 0.0F, 0.0F); tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8); tessellator.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8); tessellator.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9); tessellator.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); for (int i = 0; i < 4; ++i) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, f10); tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4); tessellator.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4); tessellator.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5); tessellator.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5); tessellator.draw(); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } protected ResourceLocation getArrowTextures(EntityObsidianInfusedArrow par1EntityArrow) { return arrowTextures; } @Override protected ResourceLocation getEntityTexture(Entity par1Entity) { return this.getArrowTextures((EntityObsidianInfusedArrow)par1Entity); } @Override public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { this.renderArrow((EntityObsidianInfusedArrow)par1Entity, par2, par4, par6, par8, par9); } public String entitytexture = Core.modid.toLowerCase() + ":ObsidianInfusedArrowEntity"; @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { icon0 = par1IconRegister.registerIcon(entitytexture); } } Entity arrow: package extendedobsidian.atheera.com; import java.util.List; import net.minecraft.block.Block; import net.minecraft.enchantment.EnchantmentThorns; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; import net.minecraft.entity.monster.EntityEnderman; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet70GameEvent; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class EntityObsidianInfusedArrow extends Entity implements IProjectile { private int xTile = -1; private int yTile = -1; private int zTile = -1; private int inTile = 0; private int inData = 0; private boolean inGround = false; public int canBePickedUp = 0; public int arrowShake = 0; public Entity shootingEntity; private int ticksInGround; private int ticksInAir = 0; private double damage = 7.5D; private int knockbackStrength; public EntityObsidianInfusedArrow(World par1World) { super(par1World); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); } public EntityObsidianInfusedArrow(World par1World, double par2, double par4, double par6) { super(par1World); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); this.setPosition(par2, par4, par6); this.yOffset = 0.0F; } public EntityObsidianInfusedArrow(World par1World, EntityLivingBase par2EntityLiving, EntityLiving par3EntityLiving, float par4, float par5) { super(par1World); this.renderDistanceWeight = 10.0D; this.shootingEntity = par2EntityLiving; if (par2EntityLiving instanceof EntityPlayer) { this.canBePickedUp = 1; } this.posY = par2EntityLiving.posY + (double)par2EntityLiving.getEyeHeight() - 0.10000000149011612D; double d0 = par3EntityLiving.posX - par2EntityLiving.posX; double d1 = par3EntityLiving.boundingBox.minY + (double)(par3EntityLiving.height / 3.0F) - this.posY; double d2 = par3EntityLiving.posZ - par2EntityLiving.posZ; double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d2 * d2); if (d3 >= 1.0E-7D) { float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); double d4 = d0 / d3; double d5 = d2 / d3; this.setLocationAndAngles(par2EntityLiving.posX + d4, this.posY, par2EntityLiving.posZ + d5, f2, f3); this.yOffset = 0.0F; float f4 = (float)d3 * 0.2F; this.setThrowableHeading(d0, d1 + (double)f4, d2, par4, par5); } } public EntityObsidianInfusedArrow(World par1World, EntityLivingBase par2EntityLiving, float par3) { super(par1World); this.renderDistanceWeight = 10.0D; this.shootingEntity = par2EntityLiving; if (par2EntityLiving instanceof EntityPlayer) { this.canBePickedUp = 1; } this.setSize(0.5F, 0.5F); this.setLocationAndAngles(par2EntityLiving.posX, par2EntityLiving.posY + (double)par2EntityLiving.getEyeHeight(), par2EntityLiving.posZ, par2EntityLiving.rotationYaw, par2EntityLiving.rotationPitch); this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); this.posY -= 0.10000000149011612D; this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); this.setPosition(this.posX, this.posY, this.posZ); this.yOffset = 0.0F; this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI)); this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, par3 * 1.5F, 1.0F); } @Override protected void entityInit() { this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); } @Override public void setThrowableHeading(double par1, double par3, double par5, float par7, float par8) { float f2 = MathHelper.sqrt_double(par1 * par1 + par3 * par3 + par5 * par5); par1 /= (double)f2; par3 /= (double)f2; par5 /= (double)f2; par1 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8; par3 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8; par5 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8; par1 *= (double)par7; par3 *= (double)par7; par5 *= (double)par7; this.motionX = par1; this.motionY = par3; this.motionZ = par5; float f3 = MathHelper.sqrt_double(par1 * par1 + par5 * par5); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f3) * 180.0D / Math.PI); this.ticksInGround = 0; } @Override @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9) { this.setPosition(par1, par3, par5); this.setRotation(par7, par8); } @Override @SideOnly(Side.CLIENT) public void setVelocity(double par1, double par3, double par5) { this.motionX = par1; this.motionY = par3; this.motionZ = par5; if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(par1 * par1 + par5 * par5); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch; this.prevRotationYaw = this.rotationYaw; this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); this.ticksInGround = 0; } } @Override public void onUpdate() { super.onUpdate(); if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); } int i = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile); if (i > 0) { Block.blocksList[i].setBlockBoundsBasedOnState(this.worldObj, this.xTile, this.yTile, this.zTile); AxisAlignedBB axisalignedbb = Block.blocksList[i].getCollisionBoundingBoxFromPool(this.worldObj, this.xTile, this.yTile, this.zTile); if (axisalignedbb != null && axisalignedbb.isVecInside(this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ))) { this.inGround = true; } } if (this.arrowShake > 0) { --this.arrowShake; } if (this.inGround) { int j = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile); int k = this.worldObj.getBlockMetadata(this.xTile, this.yTile, this.zTile); if (j == this.inTile && k == this.inData) { ++this.ticksInGround; if (this.ticksInGround == 1200) { this.setDead(); } }else{ this.inGround = false; this.motionX *= (double)(this.rand.nextFloat() * 0.2F); this.motionY *= (double)(this.rand.nextFloat() * 0.2F); this.motionZ *= (double)(this.rand.nextFloat() * 0.2F); this.ticksInGround = 0; this.ticksInAir = 0; } }else{ ++this.ticksInAir; Vec3 vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ); Vec3 vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks_do_do(vec3, vec31, false, true); vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ); vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); if (movingobjectposition != null) { vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); } Entity entity = null; List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); double d0 = 0.0D; int l; float f1; for (l = 0; l < list.size(); ++l) { Entity entity1 = (Entity)list.get(l); if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) { f1 = 0.3F; AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand((double)f1, (double)f1, (double)f1); MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec3, vec31); if (movingobjectposition1 != null) { double d1 = vec3.distanceTo(movingobjectposition1.hitVec); if (d1 < d0 || d0 == 0.0D) { entity = entity1; d0 = d1; } } } } if (entity != null) { movingobjectposition = new MovingObjectPosition(entity); } if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) { EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) { movingobjectposition = null; } } float f2; float f3; if (movingobjectposition != null) { if (movingobjectposition.entityHit != null) { f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); int i1 = MathHelper.ceiling_double_int((double)f2 * this.damage); if (this.getIsCritical()) { i1 += this.rand.nextInt(i1 / 2 + 2); } DamageSource damagesource = null; if (this.shootingEntity == null) { damagesource = DamageSource.causeThrownDamage(this, this); } else { damagesource = DamageSource.causeThrownDamage(this, this.shootingEntity); } if (this.isBurning() && !(movingobjectposition.entityHit instanceof EntityEnderman)) { movingobjectposition.entityHit.setFire(5); } if (movingobjectposition.entityHit.attackEntityFrom(damagesource, i1)) { if (movingobjectposition.entityHit instanceof EntityLiving) { EntityLiving entityliving = (EntityLiving)movingobjectposition.entityHit; if (!this.worldObj.isRemote) { entityliving.setArrowCountInEntity(entityliving.getArrowCountInEntity() + 1); } if (this.knockbackStrength > 0) { f3 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); if (f3 > 0.0F) { movingobjectposition.entityHit.addVelocity(this.motionX * (double)this.knockbackStrength * 0.6000000238418579D / (double)f3, 0.1D, this.motionZ * (double)this.knockbackStrength * 0.6000000238418579D / (double)f3); } } if (this.shootingEntity != null) { EnchantmentThorns.func_92096_a(this.shootingEntity, entityliving, this.rand); } if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) { ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacketToPlayer(new Packet70GameEvent(6, 0)); } } this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); if (!(movingobjectposition.entityHit instanceof EntityEnderman)) { this.setDead(); } }else { this.motionX *= -0.10000000149011612D; this.motionY *= -0.10000000149011612D; this.motionZ *= -0.10000000149011612D; this.rotationYaw += 180.0F; this.prevRotationYaw += 180.0F; this.ticksInAir = 0; } }else { this.xTile = movingobjectposition.blockX; this.yTile = movingobjectposition.blockY; this.zTile = movingobjectposition.blockZ; this.inTile = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile); this.inData = this.worldObj.getBlockMetadata(this.xTile, this.yTile, this.zTile); this.motionX = (double)((float)(movingobjectposition.hitVec.xCoord - this.posX)); this.motionY = (double)((float)(movingobjectposition.hitVec.yCoord - this.posY)); this.motionZ = (double)((float)(movingobjectposition.hitVec.zCoord - this.posZ)); f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); this.posX -= this.motionX / (double)f2 * 0.05000000074505806D; this.posY -= this.motionY / (double)f2 * 0.05000000074505806D; this.posZ -= this.motionZ / (double)f2 * 0.05000000074505806D; this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F)); this.inGround = true; this.arrowShake = 7; this.setIsCritical(false); if (this.inTile != 0) { Block.blocksList[this.inTile].onEntityCollidedWithBlock(this.worldObj, this.xTile, this.yTile, this.zTile, this); } } } if (this.getIsCritical()) { for (l = 0; l < 4; ++l) { this.worldObj.spawnParticle("crit", this.posX + this.motionX * (double)l / 4.0D, this.posY + this.motionY * (double)l / 4.0D, this.posZ + this.motionZ * (double)l / 4.0D, -this.motionX, -this.motionY + 0.2D, -this.motionZ); } } this.posX += this.motionX; this.posY += this.motionY; this.posZ += this.motionZ; f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { ; } while (this.rotationPitch - this.prevRotationPitch >= 180.0F) { this.prevRotationPitch += 360.0F; } while (this.rotationYaw - this.prevRotationYaw < -180.0F) { this.prevRotationYaw -= 360.0F; } while (this.rotationYaw - this.prevRotationYaw >= 180.0F) { this.prevRotationYaw += 360.0F; } this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; float f4 = 0.99F; f1 = 0.05F; if (this.isInWater()) { for (int j1 = 0; j1 < 4; ++j1) { f3 = 0.25F; this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f3, this.posY - this.motionY * (double)f3, this.posZ - this.motionZ * (double)f3, this.motionX, this.motionY, this.motionZ); } f4 = 0.8F; } this.motionX *= (double)f4; this.motionY *= (double)f4; this.motionZ *= (double)f4; this.motionY -= (double)f1; this.setPosition(this.posX, this.posY, this.posZ); this.doBlockCollisions(); } } @Override public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound) { par1NBTTagCompound.setShort("xTile", (short)this.xTile); par1NBTTagCompound.setShort("yTile", (short)this.yTile); par1NBTTagCompound.setShort("zTile", (short)this.zTile); par1NBTTagCompound.setByte("inTile", (byte)this.inTile); par1NBTTagCompound.setByte("inData", (byte)this.inData); par1NBTTagCompound.setByte("shake", (byte)this.arrowShake); par1NBTTagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0)); par1NBTTagCompound.setByte("pickup", (byte)this.canBePickedUp); par1NBTTagCompound.setDouble("damage", this.damage); } @Override public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound) { this.xTile = par1NBTTagCompound.getShort("xTile"); this.yTile = par1NBTTagCompound.getShort("yTile"); this.zTile = par1NBTTagCompound.getShort("zTile"); this.inTile = par1NBTTagCompound.getByte("inTile") & 255; this.inData = par1NBTTagCompound.getByte("inData") & 255; this.arrowShake = par1NBTTagCompound.getByte("shake") & 255; this.inGround = par1NBTTagCompound.getByte("inGround") == 1; if (par1NBTTagCompound.hasKey("damage")) { this.damage = par1NBTTagCompound.getDouble("damage"); } if (par1NBTTagCompound.hasKey("pickup")) { this.canBePickedUp = par1NBTTagCompound.getByte("pickup"); } else if (par1NBTTagCompound.hasKey("player")) { this.canBePickedUp = par1NBTTagCompound.getBoolean("player") ? 1 : 0; } } @Override public void onCollideWithPlayer(EntityPlayer par1EntityPlayer) { if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) { boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && par1EntityPlayer.capabilities.isCreativeMode; if (this.canBePickedUp == 1 && !par1EntityPlayer.inventory.addItemStackToInventory(new ItemStack(Core.itemObsidianInfusedArrow, 1))) { flag = false; } if (flag) { this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); par1EntityPlayer.onItemPickup(this, 1); this.setDead(); } } } @Override protected boolean canTriggerWalking() { return false; } @Override @SideOnly(Side.CLIENT) public float getShadowSize() { return 0.0F; } public void setDamage(double par1) { this.damage = par1; } public double getDamage() { return this.damage; } public void setKnockbackStrength(int par1) { this.knockbackStrength = par1; } @Override public boolean canAttackWithItem() { return false; } public void setIsCritical(boolean par1) { byte b0 = this.dataWatcher.getWatchableObjectByte(16); if (par1) { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); } else { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); } } public boolean getIsCritical() { byte b0 = this.dataWatcher.getWatchableObjectByte(16); return (b0 & 1) != 0; } } [code] Bow class: [code] package extendedobsidian.atheera.com; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.ArrowLooseEvent; import net.minecraftforge.event.entity.player.ArrowNockEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ObsidianInfusedBow extends Item { public static final String[] bowPullIconNameArray = new String[] {"ObsidianInfusedBow_pulling_0", "ObsidianInfusedBow_pulling_1", "ObsidianInfusedBow_pulling_2"}; @SideOnly(Side.CLIENT) private Icon[] iconArray; @SideOnly(Side.CLIENT) private Icon icon0; private Icon icon1; private Icon icon2; public ObsidianInfusedBow(int par1) { super(par1); this.maxStackSize = 1; this.setMaxDamage(8192); } @Override public boolean hasEffect(ItemStack itemstack) { return true; } @Override public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) { int j = this.getMaxItemUseDuration(par1ItemStack) - par4; ArrowLooseEvent event = new ArrowLooseEvent(par3EntityPlayer, par1ItemStack, j); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return; } j = event.charge; boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0; if (flag || par3EntityPlayer.inventory.hasItem(Core.itemObsidianInfusedArrow.itemID)) { float f = (float)j / 20.0F; f = (f * f + f * 2.0F) / 3.0F; if ((double)f < 0.1D) { return; } if (f > 1.0F) { f = 1.0F; } EntityObsidianInfusedArrow entityarrow = new EntityObsidianInfusedArrow(par2World, par3EntityPlayer, f * 2.0F); if (f == 1.0F) { entityarrow.setIsCritical(true); } int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack); if (k > 0) { entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D); } int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack); if (l > 0) { entityarrow.setKnockbackStrength(l); } if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0) { entityarrow.setFire(100); } par1ItemStack.damageItem(1, par3EntityPlayer); par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); if (flag) { entityarrow.canBePickedUp = 2; }else{ par3EntityPlayer.inventory.consumeInventoryItem(Core.itemObsidianInfusedArrow.itemID); } if (!par2World.isRemote) { par2World.spawnEntityInWorld(entityarrow); } } } @Override public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { return par1ItemStack; } @Override public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 36000; } @Override public EnumAction getItemUseAction(ItemStack par1ItemStack) { return EnumAction.bow; } @Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return event.result; } if (par3EntityPlayer.capabilities.isCreativeMode || par3EntityPlayer.inventory.hasItem(Core.itemObsidianInfusedArrow.itemID)) { par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); } return par1ItemStack; } @Override public int getItemEnchantability() { return 30; } public String STANDBY = Core.modid.toLowerCase() + ":ObsidianInfusedBow_standby"; public String TEXTURE0 = Core.modid.toLowerCase() + ":ObsidianInfusedBow_pulling_0"; public String TEXTURE1 = Core.modid.toLowerCase() + ":ObsidianInfusedBow_pulling_1"; public String TEXTURE2 = Core.modid.toLowerCase() + ":ObsidianInfusedBow_pulling_2"; @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { itemIcon = par1IconRegister.registerIcon(STANDBY); icon0 = par1IconRegister.registerIcon(TEXTURE0); icon1 = par1IconRegister.registerIcon(TEXTURE1); icon2 = par1IconRegister.registerIcon(TEXTURE2); } @Override @SideOnly(Side.CLIENT) public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) { if(player.getItemInUse() == null) return this.itemIcon; int Pulling = stack.getMaxItemUseDuration() - useRemaining; if (Pulling >= 18) { return icon2; }else if (Pulling > 13) { return icon1; }else if (Pulling > 0) { return icon0; } return itemIcon; } }
  15. I renamed all the func_xxxxxx_x and field_xxxxx_x and now it works outside! Thank you soooo much! love you!
  16. Okay! Thanks! I'll try that.
  17. You know hot to read this error message? I have checked multiple times, I cannot see why it's getting crashed in minecraft but not in eclipse... Main class(only the things related so you won't have to look for hours): @SidedProxy(clientSide = "extendedobsidian.atheera.com.ClientProxy", serverSide = "extendedobsidian.atheera.com.CommonProxy") public static CommonProxy proxy; public static Block FusionFurnaceIdle; public static Block FusionFurnaceBurning; public static int FusionFurnaceIdleID; public static int FusionFurnaceBurningID; Configuration c = new Configuration(new File("config/atheera/extendedobsidian.cfg")); c.load(); FusionFurnaceIdleID = c.get("Blocks", "Infusion Furnace ID", 903).getInt(); FusionFurnaceBurningID = c.get("Blocks", "Infusion Furnace Active ID", 904).getInt(); c.save(); FusionFurnaceIdle = new FusionFurnace(FusionFurnaceIdleID, false).setHardness(50.0F).setUnlocalizedName("FusionFurnace").setCreativeTab(Core.tabObsidian); FusionFurnaceBurning = new FusionFurnace(FusionFurnaceBurningID, true).setHardness(50.0F).setUnlocalizedName("FusionFurnace"); registerBlock(FusionFurnaceIdle, "Infusion Furnace"); proxy.registerRenderThings(); Common Proxy class: package extendedobsidian.atheera.com; import cpw.mods.fml.common.registry.GameRegistry; public class CommonProxy { public void registerRenderThings() { } public int addArmor(String string) { return 0; } } ClientProxy class: package extendedobsidian.atheera.com; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.registry.GameRegistry; public class ClientProxy extends CommonProxy{ @Override public void registerRenderThings() { GameRegistry.registerTileEntity(TileEntityFusionFurnace.class, "tileentityfusionfurnace"); } public int addArmor(String armor) { return RenderingRegistry.addNewArmourRendererPrefix(armor); } } TileEntityFusionFurnace Class: package extendedobsidian.atheera.com; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.item.ItemTool; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDummyContainer; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class TileEntityFusionFurnace extends TileEntity implements ISidedInventory { private static final int[] field_102010_d = new int[] {0}; private static final int[] field_102011_e = new int[] {2, 1}; private static final int[] field_102009_f = new int[] {1}; private ItemStack[] furnaceItemStacks = new ItemStack[3]; public int furnaceBurnTime = 0; public int currentItemBurnTime = 0; public int furnaceCookTime = 0; private String field_94130_e; public int getSizeInventory() { return this.furnaceItemStacks.length; } public ItemStack getStackInSlot(int par1) { return this.furnaceItemStacks[par1]; } public ItemStack decrStackSize(int par1, int par2) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack; if (this.furnaceItemStacks[par1].stackSize <= par2) { itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; }else{ itemstack = this.furnaceItemStacks[par1].splitStack(par2); if (this.furnaceItemStacks[par1].stackSize == 0) { this.furnaceItemStacks[par1] = null; } return itemstack; } }else{ return null; } } public ItemStack getStackInSlotOnClosing(int par1) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; }else{ return null; } } public void setInventorySlotContents(int par1, ItemStack par2ItemStack) { this.furnaceItemStacks[par1] = par2ItemStack; if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit()) { par2ItemStack.stackSize = this.getInventoryStackLimit(); } } public String getInvName() { return this.isInvNameLocalized() ? this.field_94130_e : "Infusion Furnace"; } public boolean isInvNameLocalized() { return this.field_94130_e != null && this.field_94130_e.length() > 0; } public void func_94129_a(String par1Str) { this.field_94130_e = par1Str; } public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); NBTTagList nbttaglist = par1NBTTagCompound.getTagList("Items"); this.furnaceItemStacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.tagCount(); ++i) { NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglist.tagAt(i); byte b0 = nbttagcompound1.getByte("Slot"); if (b0 >= 0 && b0 < this.furnaceItemStacks.length) { this.furnaceItemStacks[b0] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } this.furnaceBurnTime = par1NBTTagCompound.getShort("BurnTime"); this.furnaceCookTime = par1NBTTagCompound.getShort("CookTime"); this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (par1NBTTagCompound.hasKey("Infusion Furnace")) { this.field_94130_e = par1NBTTagCompound.getString("Infusion Furnace"); } } public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); par1NBTTagCompound.setShort("BurnTime", (short)this.furnaceBurnTime); par1NBTTagCompound.setShort("CookTime", (short)this.furnaceCookTime); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < this.furnaceItemStacks.length; ++i) { if (this.furnaceItemStacks[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); this.furnaceItemStacks[i].writeToNBT(nbttagcompound1); nbttaglist.appendTag(nbttagcompound1); } } par1NBTTagCompound.setTag("Items", nbttaglist); if (this.isInvNameLocalized()) { par1NBTTagCompound.setString("Infusion Furnace", this.field_94130_e); } } public int getInventoryStackLimit() { return 64; } @SideOnly(Side.CLIENT) public int getCookProgressScaled(int par1) { return this.furnaceCookTime * par1 / 200; } @SideOnly(Side.CLIENT) public int getBurnTimeRemainingScaled(int par1) { if (this.currentItemBurnTime == 0) { this.currentItemBurnTime = 200; } return this.furnaceBurnTime * par1 / this.currentItemBurnTime; } public boolean isBurning() { return this.furnaceBurnTime > 0; } public void updateEntity() { boolean flag = this.furnaceBurnTime > 0; boolean flag1 = false; if (this.furnaceBurnTime > 0) { --this.furnaceBurnTime; } if (!this.worldObj.isRemote) { if (this.furnaceBurnTime == 0 && this.canSmelt()) { this.currentItemBurnTime = this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (this.furnaceBurnTime > 0) { flag1 = true; if (this.furnaceItemStacks[1] != null) { --this.furnaceItemStacks[1].stackSize; if (this.furnaceItemStacks[1].stackSize == 0) { this.furnaceItemStacks[1] = this.furnaceItemStacks[1].getItem().getContainerItemStack(furnaceItemStacks[1]); } } } } if (this.isBurning() && this.canSmelt()) { ++this.furnaceCookTime; if (this.furnaceCookTime == 200) { this.furnaceCookTime = 0; this.smeltItem(); flag1 = true; } }else{ this.furnaceCookTime = 0; } if (flag != this.furnaceBurnTime > 0) { flag1 = true; FusionFurnace.updateFurnaceBlockState(this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } if (flag1) { this.onInventoryChanged(); } } private boolean canSmelt() { if (this.furnaceItemStacks[0] == null) { return false; }else{ ItemStack itemstack = TutFurnaceRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]); if (itemstack == null) return false; if (this.furnaceItemStacks[2] == null) return true; if (!this.furnaceItemStacks[2].isItemEqual(itemstack)) return false; int result = furnaceItemStacks[2].stackSize + itemstack.stackSize; return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize()); } } public void smeltItem() { if (this.canSmelt()) { ItemStack itemstack = TutFurnaceRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]); if (this.furnaceItemStacks[2] == null) { this.furnaceItemStacks[2] = itemstack.copy(); } else if (this.furnaceItemStacks[2].isItemEqual(itemstack)) { furnaceItemStacks[2].stackSize += itemstack.stackSize; } --this.furnaceItemStacks[0].stackSize; if (this.furnaceItemStacks[0].stackSize <= 0) { this.furnaceItemStacks[0] = null; } } } public static int getItemBurnTime(ItemStack par0ItemStack) { if (par0ItemStack == null) { return 0; }else{ int i = par0ItemStack.getItem().itemID; Item item = par0ItemStack.getItem(); if (par0ItemStack.getItem() instanceof ItemBlock && Block.blocksList[i] != null) { Block block = Block.blocksList[i]; } if(par0ItemStack.itemID == Core.itemMagicPowder.itemID) return 25; return GameRegistry.getFuelValue(par0ItemStack); } } public static boolean isItemFuel(ItemStack par0ItemStack) { return getItemBurnTime(par0ItemStack) > 0; } public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) { return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D; } public void openChest() {} public void closeChest() {} public boolean isStackValidForSlot(int par1, ItemStack par2ItemStack) { return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true); } public int[] getSizeInventorySide(int par1) { return par1 == 0 ? field_102011_e : (par1 == 1 ? field_102010_d : field_102009_f); } public boolean func_102007_a(int par1, ItemStack par2ItemStack, int par3) { return this.isStackValidForSlot(par1, par2ItemStack); } public boolean func_102008_b(int par1, ItemStack par2ItemStack, int par3) { return par3 != 0 || par1 != 1 || par2ItemStack.itemID == Item.bucketEmpty.itemID; } public int getSizeInventorySide(ForgeDirection side) { return 1; } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { return false; } @Override public int[] getAccessibleSlotsFromSide(int var1) { return null; } @Override public boolean canInsertItem(int i, ItemStack itemstack, int j) { return false; } @Override public boolean canExtractItem(int i, ItemStack itemstack, int j) { return false; } } FusionFurnaceBlock class: package extendedobsidian.atheera.com; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class FusionFurnace extends BlockContainer { private final Random furnaceRand = new Random(); private final boolean isActive; private static boolean keepFurnaceInventory = false; @SideOnly(Side.CLIENT) private Icon iconFront; protected FusionFurnace(int par1, boolean par2) { super(par1, Material.rock); this.isActive = par2; } @SideOnly(Side.CLIENT) public void registerIcons(IconRegister iconRegister) { this.blockIcon = iconRegister.registerIcon(Core.modid + ":" + "FusionFurnace_top"); this.iconFront = iconRegister.registerIcon(Core.modid + ":" + (this.isActive ? "FusionFurnace_front_on" : "FusionFurnace_front_off")); } @SideOnly(Side.CLIENT) public Icon getIcon(int side, int metadata) { return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); } public int idDropped(int par1, Random par2Random, int par3) { return Core.FusionFurnaceIdle.blockID; } public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); this.setDefaultDirection(world, x, y, z); } private void setDefaultDirection(World world, int x, int y, int z) { if(!world.isRemote){ int l = world.getBlockId(x, y, z - 1); int il = world.getBlockId(x, y, z + 1); int jl = world.getBlockId(x - 1, y, z); int kl = world.getBlockId(x + 1, y, z); byte b0 = 3; if(Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[il]){ b0 = 3; } if(Block.opaqueCubeLookup[il] && !Block.opaqueCubeLookup[l]){ b0 = 2; } if(Block.opaqueCubeLookup[kl] && !Block.opaqueCubeLookup[jl]){ b0 = 5; } if(Block.opaqueCubeLookup[jl] && !Block.opaqueCubeLookup[kl]){ b0 = 4; } world.setBlockMetadataWithNotify(x, y, z, b0, 2); } } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float f, float g, float t) { TileEntity tile_entity = world.getBlockTileEntity(x, y, z); if (tile_entity == null || player.isSneaking()) { return false; } player.openGui(Core.instance, 0, world, x, y, z); return true; } public static void updateFurnaceBlockState(boolean par0, World par1World, int par2, int par3, int par4) { int l = par1World.getBlockMetadata(par2, par3, par4); TileEntity tileentity = par1World.getBlockTileEntity(par2, par3, par4); keepFurnaceInventory = true; if (par0) { par1World.setBlock(par2, par3, par4, Core.FusionFurnaceBurning.blockID); } else { par1World.setBlock(par2, par3, par4, Core.FusionFurnaceIdle.blockID); } keepFurnaceInventory = false; par1World.setBlockMetadataWithNotify(par2, par3, par4, l, 2); if (tileentity != null) { tileentity.validate(); par1World.setBlockTileEntity(par2, par3, par4, tileentity); } } @SideOnly(Side.CLIENT) public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random) { if (this.isActive) { int l = par1World.getBlockMetadata(par2, par3, par4); float f = (float)par2 + 0.5F; float f1 = (float)par3 + 0.0F + par5Random.nextFloat() * 6.0F / 16.0F; float f2 = (float)par4 + 0.5F; float f3 = 0.52F; float f4 = par5Random.nextFloat() * 0.6F - 0.3F; if (l == 4) { par1World.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); par1World.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); } else if (l == 5) { par1World.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); par1World.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D); } else if (l == 2) { par1World.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D); par1World.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D); } else if (l == 3) { par1World.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D); par1World.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D); } } } public TileEntity createNewTileEntity(World par1World) { return new TileEntityFusionFurnace(); } public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLiving, ItemStack par6ItemStack) { int l = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; if (l == 0) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2); } if (l == 1) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2); } if (l == 2) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2); } if (l == 3) { par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2); } if (par6ItemStack.hasDisplayName()) { ((TileEntityFusionFurnace)par1World.getBlockTileEntity(par2, par3, par4)).func_94129_a(par6ItemStack.getDisplayName()); } } public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) { if (!keepFurnaceInventory) { TileEntityFusionFurnace tileentityfurnace = (TileEntityFusionFurnace)par1World.getBlockTileEntity(par2, par3, par4); if (tileentityfurnace != null) { for (int j1 = 0; j1 < tileentityfurnace.getSizeInventory(); ++j1) { ItemStack itemstack = tileentityfurnace.getStackInSlot(j1); if (itemstack != null) { float f = this.furnaceRand.nextFloat() * 0.8F + 0.1F; float f1 = this.furnaceRand.nextFloat() * 0.8F + 0.1F; float f2 = this.furnaceRand.nextFloat() * 0.8F + 0.1F; while (itemstack.stackSize > 0) { int k1 = this.furnaceRand.nextInt(21) + 10; if (k1 > itemstack.stackSize) { k1 = itemstack.stackSize; } itemstack.stackSize -= k1; EntityItem entityitem = new EntityItem(par1World, (double)((float)par2 + f), (double)((float)par3 + f1), (double)((float)par4 + f2), new ItemStack(itemstack.itemID, k1, itemstack.getItemDamage())); if (itemstack.hasTagCompound()) { entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); } float f3 = 0.05F; entityitem.motionX = (double)((float)this.furnaceRand.nextGaussian() * f3); entityitem.motionY = (double)((float)this.furnaceRand.nextGaussian() * f3 + 0.2F); entityitem.motionZ = (double)((float)this.furnaceRand.nextGaussian() * f3); par1World.spawnEntityInWorld(entityitem); } } } par1World.func_96440_m(par2, par3, par4, par5); } } super.breakBlock(par1World, par2, par3, par4, par5, par6); } public boolean hasComparatorInputOverride() { return false; } }
  18. Really need help with this, totally lost.
  19. That is a print screen of my MultiMC instance where I have my mods installed and then it's the mod file. All the files are in there. It's supposed to be www.atheera.com/extendedobsidian But oh well, I was really tired when starting this project.
  20. Hi there! I have a problem, when I try to start Minecraft with my mod outside of eclipse it crashes. But inside of eclipse it works just fine. It seems to be that the registering is the problem but it is registered properly. Please help me! Crashlog: ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 5/6/14 11:37 PM Description: There was a severe problem during mod loading that has caused the game to fail cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: extendedobsidian/atheera/com/TileEntityFusionFurnace at cpw.mods.fml.common.LoadController.transition(LoadController.java:156) at cpw.mods.fml.common.Loader.initializeMods(Loader.java:700) at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:249) at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:509) at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:808) at net.minecraft.client.main.Main.main(SourceFile:101) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at net.minecraft.launchwrapper.Launch.launch(Launch.java:131) at net.minecraft.launchwrapper.Launch.main(Launch.java:27) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:214) at org.multimc.EntryPoint.listen(EntryPoint.java:165) at org.multimc.EntryPoint.main(EntryPoint.java:54) Caused by: java.lang.NoClassDefFoundError: extendedobsidian/atheera/com/TileEntityFusionFurnace at extendedobsidian.atheera.com.Core.Init(Core.java:308) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545) at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201) at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112) at cpw.mods.fml.common.Loader.initializeMods(Loader.java:699) ... 17 more Caused by: java.lang.ClassNotFoundException: extendedobsidian.atheera.com.TileEntityFusionFurnace at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 44 more Caused by: java.lang.ClassFormatError: Duplicate method name&signature in class file extendedobsidian/atheera/com/TileEntityFusionFurnace at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:800) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:178) ... 46 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.6.4 Operating System: Windows 7 (amd64) version 6.1 Java Version: 1.7.0_51, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 1597787000 bytes (1523 MB) / 1836580864 bytes (1751 MB) up to 15270936576 bytes (14563 MB) JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xms1024m -Xmx16384m -XX:PermSize=512m AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Suspicious classes: FML and Forge are installed IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: MCP v8.11 FML v6.4.49.965 Minecraft Forge 9.11.1.965 11 mods loaded, 11 mods active mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized FML{6.4.49.965} [Forge Mod Loader] (minecraftforge-9.11.1.965.jar) Unloaded->Constructed->Pre-initialized->Initialized Forge{9.11.1.965} [Minecraft Forge] (minecraftforge-9.11.1.965.jar) Unloaded->Constructed->Pre-initialized->Initialized CodeChickenCore{0.9.0.9} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized NotEnoughItems{1.6.1.9} [Not Enough Items] (NotEnoughItems 1.6.1.9.jar) Unloaded->Constructed->Pre-initialized->Initialized jammyfurniture{4.5} [Jammy Furniture Mod] (1.6.2_Jammy_Furniture_Mod_V4.5.zip) Unloaded->Constructed->Pre-initialized->Initialized extendedobsidian{1.6.4-1.2.1} [§5Extended Obsidian] ([1.6.4] Extended Obsidian V1.2.zip) Unloaded->Constructed->Pre-initialized->Errored bspkrsCore{v5.3(1.6.4)} [bspkrsCore] ([1.6.4]bspkrsCorev5.3.zip) Unloaded->Constructed->Pre-initialized->Initialized TreeCapitator{Forge 1.6.4.r09} [Treecapitator] ([1.6.4]TreeCapitator.Forge.1.6.4.r09.Universal.zip) Unloaded->Constructed->Pre-initialized->Initialized cfm{3.2.9.2} [§6MrCrayfish's Furniture Mod] ([Forge]FurnitureModv3.2.9.2(1.6.4).zip) Unloaded->Constructed->Pre-initialized->Initialized Waila{1.5.2a} [Waila] (Waila_1.5.2a.zip) Unloaded->Constructed->Pre-initialized->Initialized
  21. I got it working:)
  22. Then where?
  23. Isn't this registering it?: public static final String[] bowPullIconNameArray = new String[] {"ObsidianInfusedBow_pulling_0", "ObsidianInfusedBow_pulling_1", "ObsidianInfusedBow_pulling_2"}; @SideOnly(Side.CLIENT) private Icon[] iconArray;
  24. Hi there! I'm trying to make a bow the textures don't work and when I rightclick it, it crashes. I've used a method I found by coolAlias and it seems fine to me but, well. It crashes the game. Bow texture names: ObsidianInfusedBow_standby ObsidianInfusedBow_pulling_0 ObsidianInfusedBow_pulling_1 ObsidianInfusedBow_pulling_2 Bow class: Crashlog:
×
×
  • Create New...

Important Information

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