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.

Glistre

Members
  • Joined

  • Last visited

Everything posted by Glistre

  1. shows up pink when I fire the arrow . . .seems like it just cannot find the texture. package com.glistre.glistremod.projectiles.blaster; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.init.Items; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import cpw.mods.fml.relauncher.Side; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import cpw.mods.fml.relauncher.SideOnly; import com.glistre.glistremod.GlistreMod; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; @SideOnly(Side.CLIENT) public class RendreBlast extends Render { // private static final ResourceLocation blastTextures = new ResourceLocation("glistremod:" +"/textures/entities/blasterboltentity_1.png"); public void doRender(EntityBlasterBolt par1EntityBlasterBolt, double par2, double par4, double par6, float par8, float par9) { // this.loadTexture("/GlistreMod/blast.png"); this.bindEntityTexture(par1EntityBlasterBolt); GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glRotatef(par1EntityBlasterBolt.prevRotationYaw + (par1EntityBlasterBolt.rotationYaw - par1EntityBlasterBolt.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(par1EntityBlasterBolt.prevRotationPitch + (par1EntityBlasterBolt.rotationPitch - par1EntityBlasterBolt.prevRotationPitch) * par9, 0.0F, 0.0F, 1.0F); Tessellator var10 = Tessellator.instance; byte var11 = 0; float var12 = 0.0F; float var13 = 0.5F; float var14 = (float)(0 + var11 * 10) / 32.0F; float var15 = (float)(5 + var11 * 10) / 32.0F; float var16 = 0.0F; float var17 = 0.15625F; float var18 = (float)(5 + var11 * 10) / 32.0F; float var19 = (float)(10 + var11 * 10) / 32.0F; float var20 = 0.05625F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); float var21 = (float)par1EntityBlasterBolt.arrowShake - par9; if (var21 > 0.0F) { float var22 = -MathHelper.sin(var21 * 3.0F) * var21; GL11.glRotatef(var22, 0.0F, 0.0F, 1.0F); } GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F); GL11.glScalef(var20, var20, var20); GL11.glTranslatef(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(var20, 0.0F, 0.0F); var10.startDrawingQuads(); var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var18); var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var18); var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var19); var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var19); var10.draw(); GL11.glNormal3f(-var20, 0.0F, 0.0F); var10.startDrawingQuads(); var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var18); var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var18); var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var19); var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var19); var10.draw(); for (int var23 = 0; var23 < 4; ++var23) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, var20); var10.startDrawingQuads(); var10.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)var12, (double)var14); var10.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)var13, (double)var14); var10.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)var13, (double)var15); var10.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)var12, (double)var15); var10.draw(); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity par1EntityBlasterBolt, double par2, double par4, double par6, float par8, float par9) { // this.doRender((EntityBlasterBolt)par1Entity, par2, par4, par6, par8, par9); this.doRender((EntityBlasterBolt)par1EntityBlasterBolt, par2, par4, par6, par8, par9); } @Override public ResourceLocation getEntityTexture(Entity p_110775_1_) { // TODO Auto-generated method stub return new ResourceLocation("glistremod" + "/textures/entities/blasterboltentity_1.png"); // return this.getEntityTexture((EntityBlasterBolt) p_110775_1_); } }
  2. Yeah, thanks, I was trying to mod off the arrow and bow instead of the throwable/snowball. I have another blaster and it works fine with snowball or throwable. Cannot get the arrow to render properly
  3. I set out to make a blaster gun using and I used EntityArrow as a starting point to make a blaster "bolt" .. .the arrow/bolt will not render properly at all, it seems to shoot backward and then appear but it's invisible in flight. When it does render it is at all shapes and sizes and angles. Anyone know why my texture would not render in place of the vanilla texture I really did not change much in the vanilla code for any of these classes because I cannot even get it to work to begin with I am still a long way from making a blaster gun Weird video effect link (sorry I could not get it to embed here): package com.glistre.glistremod.projectiles.blaster; import com.glistre.glistremod.GlistreMod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; 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 com.glistre.glistremod.projectiles.blaster.*; public class Blaster extends Item{ private String texturePath = (GlistreMod.MODID + ":" + "blasterGun_1"); public Blaster(int par1) { super(); this.setFull3D(); } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return; } j = event.charge; boolean flag = p_77615_3_.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; if (flag || p_77615_3_.inventory.hasItem(GlistreMod.blasterbolt_1)) { 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; } EntityBlasterBolt par1EntityBlasterBolt = new EntityBlasterBolt(p_77615_2_, p_77615_3_, f * 2.0F); if (f == 1.0F) { par1EntityBlasterBolt.setIsCritical(true); } int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, p_77615_1_); if (k > 0) { par1EntityBlasterBolt.setDamage(par1EntityBlasterBolt.getDamage() + (double)k * 0.5D + 0.5D); } int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, p_77615_1_); if (l > 0) { par1EntityBlasterBolt.setKnockbackStrength(l); } if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, p_77615_1_) > 0) { par1EntityBlasterBolt.setFire(100); } p_77615_1_.damageItem(1, p_77615_3_); p_77615_2_.playSoundAtEntity(p_77615_3_, "fireworks.blast", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); if (flag) { par1EntityBlasterBolt.canBePickedUp = 2; } else { p_77615_3_.inventory.consumeInventoryItem(GlistreMod.blasterbolt_1); } if (!p_77615_2_.isRemote) { p_77615_2_.spawnEntityInWorld(par1EntityBlasterBolt); } } } /** * returns the action that specifies what animation to play when the items is being used */ public EnumAction getItemUseAction(ItemStack p_77661_1_) { return EnumAction.bow; } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer, if you're in Survivor mode you * have to have an arrow in inventory */ public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return event.result; } if (p_77659_3_.capabilities.isCreativeMode || p_77659_3_.inventory.hasItem(GlistreMod.blasterbolt_1)) { p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); } return p_77659_1_; } public void onUsingItemTick(ItemStack stack, EntityPlayer player, int count) { this.setDamage(stack, 99999 - count); } /** * How long it takes to use or consume an item */ public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { this.itemIcon = iconRegister.registerIcon(texturePath); } } entityblasterbolt : package com.glistre.glistremod.projectiles.blaster; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.List; import com.glistre.glistremod.GlistreMod; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; 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.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.server.S2BPacketChangeGameState; 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; public class EntityBlasterBolt extends Entity implements IProjectile { private int field_145791_d = -1; private int field_145792_e = -1; private int field_145789_f = -1; private Block field_145790_g; private int inData; private boolean inGround; /** 1 if the player can pick up the arrow */ public int canBePickedUp; /** Seems to be some sort of timer for animating an arrow. */ public int arrowShake; /** The owner of this arrow. */ public Entity shootingEntity; private int ticksInGround; private int ticksInAir; private double damage = 2.0D; /** The amount of knockback an arrow applies when it hits a mob. */ private int knockbackStrength; // private static final String __OBFID = "CL_00001715"; public EntityBlasterBolt(World p_i1753_1_) { super(p_i1753_1_); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); } public EntityBlasterBolt(World p_i1754_1_, double p_i1754_2_, double p_i1754_4_, double p_i1754_6_) { super(p_i1754_1_); this.renderDistanceWeight = 10.0D; this.setSize(0.5F, 0.5F); this.setPosition(p_i1754_2_, p_i1754_4_, p_i1754_6_); this.yOffset = 0.0F; } public EntityBlasterBolt(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) { super(p_i1755_1_); this.renderDistanceWeight = 10.0D; this.shootingEntity = p_i1755_2_; if (p_i1755_2_ instanceof EntityPlayer) { this.canBePickedUp = 1; } this.posY = p_i1755_2_.posY + (double)p_i1755_2_.getEyeHeight() - 0.10000000149011612D; double d0 = p_i1755_3_.posX - p_i1755_2_.posX; double d1 = p_i1755_3_.boundingBox.minY + (double)(p_i1755_3_.height / 3.0F) - this.posY; double d2 = p_i1755_3_.posZ - p_i1755_2_.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(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); this.yOffset = 0.0F; float f4 = (float)d3 * 0.2F; this.setThrowableHeading(d0, d1 + (double)f4, d2, p_i1755_4_, p_i1755_5_); } } public EntityBlasterBolt(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) { super(p_i1756_1_); this.renderDistanceWeight = 10.0D; this.shootingEntity = p_i1756_2_; if (p_i1756_2_ instanceof EntityPlayer) { this.canBePickedUp = 1; } this.setSize(0.5F, 0.5F); this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + (double)p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.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, p_i1756_3_ * 1.5F, 1.0F); } protected void entityInit() { this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); } /** * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. */ public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) { float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); p_70186_1_ /= (double)f2; p_70186_3_ /= (double)f2; p_70186_5_ /= (double)f2; p_70186_1_ += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)p_70186_8_; p_70186_3_ += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)p_70186_8_; p_70186_5_ += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)p_70186_8_; p_70186_1_ *= (double)p_70186_7_; p_70186_3_ *= (double)p_70186_7_; p_70186_5_ *= (double)p_70186_7_; this.motionX = p_70186_1_; this.motionY = p_70186_3_; this.motionZ = p_70186_5_; float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, (double)f3) * 180.0D / Math.PI); this.ticksInGround = 0; } /** * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, * posY, posZ, yaw, pitch */ @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) { this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); this.setRotation(p_70056_7_, p_70056_8_); } /** * Sets the velocity to the args. Args: x, y, z */ @SideOnly(Side.CLIENT) public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) { this.motionX = p_70016_1_; this.motionY = p_70016_3_; this.motionZ = p_70016_5_; if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, (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; } } /** * Called to update the entity's position/logic. */ 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); } Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); if (block.getMaterial() != Material.air) { block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3.createVectorHelper(this.posX, this.posY, this.posZ))) { this.inGround = true; } } if (this.arrowShake > 0) { --this.arrowShake; } if (this.inGround) { int j = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); if (block == this.field_145790_g && j == 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 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); if (movingobjectposition != null) { vec3 = Vec3.createVectorHelper(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 i; float f1; for (i = 0; i < list.size(); ++i) { Entity entity1 = (Entity)list.get(i); 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(vec31, vec3); if (movingobjectposition1 != null) { double d1 = vec31.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 f4; if (movingobjectposition != null) { if (movingobjectposition.entityHit != null) { f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); int k = MathHelper.ceiling_double_int((double)f2 * this.damage); if (this.getIsCritical()) { k += this.rand.nextInt(k / 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, (float)k)) { if (movingobjectposition.entityHit instanceof EntityLivingBase) { EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit; if (!this.worldObj.isRemote) { entitylivingbase.setArrowCountInEntity(entitylivingbase.getArrowCountInEntity() + 1); } if (this.knockbackStrength > 0) { f4 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); if (f4 > 0.0F) { movingobjectposition.entityHit.addVelocity(this.motionX * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4, 0.1D, this.motionZ * (double)this.knockbackStrength * 0.6000000238418579D / (double)f4); } } if (this.shootingEntity != null && this.shootingEntity instanceof EntityLivingBase) { EnchantmentHelper.func_151384_a(entitylivingbase, this.shootingEntity); EnchantmentHelper.func_151385_b((EntityLivingBase)this.shootingEntity, entitylivingbase); } if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP) { ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F)); } } 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.field_145791_d = movingobjectposition.blockX; this.field_145792_e = movingobjectposition.blockY; this.field_145789_f = movingobjectposition.blockZ; this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); 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.field_145790_g.getMaterial() != Material.air) { this.field_145790_g.onEntityCollidedWithBlock(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f, this); } } } if (this.getIsCritical()) { for (i = 0; i < 4; ++i) { this.worldObj.spawnParticle("crit", this.posX + this.motionX * (double)i / 4.0D, this.posY + this.motionY * (double)i / 4.0D, this.posZ + this.motionZ * (double)i / 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 f3 = 0.99F; f1 = 0.05F; if (this.isInWater()) { for (int l = 0; l < 4; ++l) { f4 = 0.25F; this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ); } f3 = 0.8F; } if (this.isWet()) { this.extinguish(); } this.motionX *= (double)f3; this.motionY *= (double)f3; this.motionZ *= (double)f3; this.motionY -= (double)f1; this.setPosition(this.posX, this.posY, this.posZ); this.func_145775_I(); } } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ public void writeEntityToNBT(NBTTagCompound p_70014_1_) { p_70014_1_.setShort("xTile", (short)this.field_145791_d); p_70014_1_.setShort("yTile", (short)this.field_145792_e); p_70014_1_.setShort("zTile", (short)this.field_145789_f); p_70014_1_.setShort("life", (short)this.ticksInGround); p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); p_70014_1_.setByte("inData", (byte)this.inData); p_70014_1_.setByte("shake", (byte)this.arrowShake); p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); p_70014_1_.setDouble("damage", this.damage); } /** * (abstract) Protected helper method to read subclass entity data from NBT. */ public void readEntityFromNBT(NBTTagCompound p_70037_1_) { this.field_145791_d = p_70037_1_.getShort("xTile"); this.field_145792_e = p_70037_1_.getShort("yTile"); this.field_145789_f = p_70037_1_.getShort("zTile"); this.ticksInGround = p_70037_1_.getShort("life"); this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); this.inData = p_70037_1_.getByte("inData") & 255; this.arrowShake = p_70037_1_.getByte("shake") & 255; this.inGround = p_70037_1_.getByte("inGround") == 1; if (p_70037_1_.hasKey("damage", 99)) { this.damage = p_70037_1_.getDouble("damage"); } if (p_70037_1_.hasKey("pickup", 99)) { this.canBePickedUp = p_70037_1_.getByte("pickup"); } else if (p_70037_1_.hasKey("player", 99)) { this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; } } /** * Called by a player entity when they collide with an entity */ public void onCollideWithPlayer(EntityPlayer p_70100_1_) { if (!this.worldObj.isRemote && this.inGround && this.arrowShake <= 0) { boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode; if (this.canBePickedUp == 1 && !p_70100_1_.inventory.addItemStackToInventory(new ItemStack(GlistreMod.blasterbolt_1, 1))) { flag = false; } if (flag) { this.playSound("random.pop", 0.2F, ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.7F + 1.0F) * 2.0F); p_70100_1_.onItemPickup(this, 1); this.setDead(); } } } /** * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to * prevent them from trampling crops */ protected boolean canTriggerWalking() { return false; } @SideOnly(Side.CLIENT) public float getShadowSize() { return 0.0F; } public void setDamage(double p_70239_1_) { this.damage = p_70239_1_; } public double getDamage() { return this.damage; } /** * Sets the amount of knockback the arrow applies when it hits a mob. */ public void setKnockbackStrength(int p_70240_1_) { this.knockbackStrength = p_70240_1_; } /** * If returns false, the item will not inflict any damage against entities. */ public boolean canAttackWithItem() { return false; } /** * Whether the arrow has a stream of critical hit particles flying behind it. */ public void setIsCritical(boolean p_70243_1_) { byte b0 = this.dataWatcher.getWatchableObjectByte(16); if (p_70243_1_) { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); } else { this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); } } /** * Whether the arrow has a stream of critical hit particles flying behind it. */ public boolean getIsCritical() { byte b0 = this.dataWatcher.getWatchableObjectByte(16); return (b0 & 1) != 0; } } my render class: package com.glistre.glistremod.projectiles.blaster; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.init.Items; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import cpw.mods.fml.relauncher.Side; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import cpw.mods.fml.relauncher.SideOnly; import com.glistre.glistremod.GlistreMod; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; @SideOnly(Side.CLIENT) public class RendreBlast extends Render { private static final ResourceLocation blastTextures = new ResourceLocation("glistremod:" +"/items/blasterboltentity_1.png"); public void doRender(EntityBlasterBolt par1EntityBlasterBolt, double par2, double par4, double par6, float par8, float par9) { // this.loadTexture("/GlistreMod/blast.png"); this.bindEntityTexture(par1EntityBlasterBolt); GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glRotatef(par1EntityBlasterBolt.prevRotationYaw + (par1EntityBlasterBolt.rotationYaw - par1EntityBlasterBolt.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(par1EntityBlasterBolt.prevRotationPitch + (par1EntityBlasterBolt.rotationPitch - par1EntityBlasterBolt.prevRotationPitch) * par9, 0.0F, 0.0F, 1.0F); Tessellator var10 = Tessellator.instance; byte var11 = 0; float var12 = 0.0F; float var13 = 0.5F; float var14 = (float)(0 + var11 * 10) / 32.0F; float var15 = (float)(5 + var11 * 10) / 32.0F; float var16 = 0.0F; float var17 = 0.15625F; float var18 = (float)(5 + var11 * 10) / 32.0F; float var19 = (float)(10 + var11 * 10) / 32.0F; float var20 = 0.05625F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); float var21 = (float)par1EntityBlasterBolt.arrowShake - par9; if (var21 > 0.0F) { float var22 = -MathHelper.sin(var21 * 3.0F) * var21; GL11.glRotatef(var22, 0.0F, 0.0F, 1.0F); } GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F); GL11.glScalef(var20, var20, var20); GL11.glTranslatef(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(var20, 0.0F, 0.0F); var10.startDrawingQuads(); var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var18); var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var18); var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var19); var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var19); var10.draw(); GL11.glNormal3f(-var20, 0.0F, 0.0F); var10.startDrawingQuads(); var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var18); var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var18); var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var19); var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var19); var10.draw(); for (int var23 = 0; var23 < 4; ++var23) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, var20); var10.startDrawingQuads(); var10.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)var12, (double)var14); var10.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)var13, (double)var14); var10.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)var13, (double)var15); var10.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)var12, (double)var15); var10.draw(); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity par1EntityBlasterBolt, double par2, double par4, double par6, float par8, float par9) { // this.doRender((EntityBlasterBolt)par1Entity, par2, par4, par6, par8, par9); this.doRender((EntityBlasterBolt)par1EntityBlasterBolt, par2, par4, par6, par8, par9); } @Override public ResourceLocation getEntityTexture(Entity p_110775_1_) { // TODO Auto-generated method stub return new ResourceLocation("/GlistreMod/blasterbolt_1.png"); // return this.getEntityTexture((EntityBlasterBolt) p_110775_1_); } protected ResourceLocation getEntityTexture(EntityBlasterBolt p_110775_1_){ return blastTextures; } } I put this in my client proxy: package com.glistre.glistremod; import java.awt.Color; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import cpw.mods.fml.client.registry.RenderingRegistry; import com.glistre.glistremod.CommonProxy; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; import com.glistre.glistremod.projectiles.blaster.RendreBlast; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.registry.EntityRegistry; public class ClientProxy extends CommonProxy { @Override public void registerRendering(){ RenderingRegistry.registerEntityRenderingHandler(EntityBlasterBolt.class, new RendreBlast()); } } and my main class: public static Item blaster_1; public int blaster1ID; // the ray or blast bolt like an arrow public static Item blasterbolt_1; public int blasterbolt_1ID; @EventHandler public void preInit( FMLPreInitializationEvent event) { FMLCommonHandler.instance().bus().register(handler); MinecraftForge.EVENT_BUS.register(handler); proxy.registerRendering(); blaster_1 = new Blaster(blaster1ID).setUnlocalizedName("blaster_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "blasterGun_1"); GameRegistry.registerItem(blaster_1, blaster_1.getUnlocalizedName()); blasterbolt_1 = new MyProjectile2(blasterbolt_1ID, "blasterbolt_1").setUnlocalizedName("blasterbolt_1").setCreativeTab(GlistreTab_1); EntityRegistry.registerModEntity(EntityBlasterBolt.class, "blasterbolt_1", blasterbolt_1ID, this, 64, 20, false); ideas / suggestions/ help?
  4. How do you open a vanilla texture through Eclipse? For example, the texture is located in the forgeSrc .jar and inside is the package assets.minecraft.textures.entity.xyz.png how would one open this texture and edit it with GIMP or other editor? I went to Window/Preferences/General/Editor and selected open with external editor and selected GIMP PNG for my external editor, however, when I try to open the texture I get an error "System can only open base file resources" Do you need a plugin or something into Eclipse or is there another way to open the texture?
  5. ?hmm which class do I call that in? it has this.renderBlast but I put it in the doRender method that cannot be right
  6. I created a blaster gun. I used mostly the EntityArrow class to implement IProjectile with the intent of having my blaster gun fire a custom arrow (which I would then be changing to a blaster "bolt"). Problem is the custom arrow or blaster bolt will not render at all. Clearly when I right click the blaster moves and should shoot something but nothing comes out I have tried this many different ways but cannot get it to fire anything at all. Blaster package com.glistre.glistremod.projectiles.blaster; import com.glistre.glistremod.GlistreMod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; public class Blaster extends Item{ private String texturePath = (GlistreMod.MODID + ":" + "blasterGun_1"); public Blaster(int par1) { super(); } @Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if(!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityBlasterBolt(par2World, par3EntityPlayer)); } return par1ItemStack; } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { this.itemIcon = iconRegister.registerIcon(texturePath); } } Render class package com.glistre.glistremod.projectiles.blaster; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.init.Items; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import cpw.mods.fml.relauncher.Side; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import cpw.mods.fml.relauncher.SideOnly; import com.glistre.glistremod.GlistreMod; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; @SideOnly(Side.CLIENT) public class RendreBlast extends Render { private static final ResourceLocation blastTextures = new ResourceLocation("glistremod:/textures/items/wolf_howl.png"); public void renderBlast(EntityBlasterBolt par1EntityBlast, double par2, double par4, double par6, float par8, float par9) { // this.loadTexture("/GlistreMod/blast.png"); GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glRotatef(par1EntityBlast.prevRotationYaw + (par1EntityBlast.rotationYaw - par1EntityBlast.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(par1EntityBlast.prevRotationPitch + (par1EntityBlast.rotationPitch - par1EntityBlast.prevRotationPitch) * par9, 0.0F, 0.0F, 1.0F); Tessellator var10 = Tessellator.instance; byte var11 = 0; float var12 = 0.0F; float var13 = 0.5F; float var14 = (float)(0 + var11 * 10) / 32.0F; float var15 = (float)(5 + var11 * 10) / 32.0F; float var16 = 0.0F; float var17 = 0.15625F; float var18 = (float)(5 + var11 * 10) / 32.0F; float var19 = (float)(10 + var11 * 10) / 32.0F; float var20 = 0.05625F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); float var21 = (float)par1EntityBlast.arrowShake - par9; if (var21 > 0.0F) { float var22 = -MathHelper.sin(var21 * 3.0F) * var21; GL11.glRotatef(var22, 0.0F, 0.0F, 1.0F); } GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F); GL11.glScalef(var20, var20, var20); GL11.glTranslatef(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(var20, 0.0F, 0.0F); var10.startDrawingQuads(); var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var18); var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var18); var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var19); var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var19); var10.draw(); GL11.glNormal3f(-var20, 0.0F, 0.0F); var10.startDrawingQuads(); var10.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)var16, (double)var18); var10.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)var17, (double)var18); var10.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)var17, (double)var19); var10.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)var16, (double)var19); var10.draw(); for (int var23 = 0; var23 < 4; ++var23) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, var20); var10.startDrawingQuads(); var10.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)var12, (double)var14); var10.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)var13, (double)var14); var10.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)var13, (double)var15); var10.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)var12, (double)var15); var10.draw(); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } /** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { this.renderBlast((EntityBlasterBolt)par1Entity, par2, par4, par6, par8, par9); } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { // TODO Auto-generated method stub // return new ResourceLocation(GlistreMod.MODID +":"+ "wolf_howl.png"); return this.getEntityTexture((EntityBlasterBolt) p_110775_1_); } protected ResourceLocation getEntityTexture(EntityBlasterBolt p_110775_1_){ return blastTextures; } } client proxy: package com.glistre.glistremod; import java.awt.Color; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import cpw.mods.fml.client.registry.RenderingRegistry; import com.glistre.glistremod.CommonProxy; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; import com.glistre.glistremod.projectiles.blaster.RendreBlast; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.registry.EntityRegistry; public class ClientProxy extends CommonProxy { @Override public void registerRendering(){ RenderingRegistry.registerEntityRenderingHandler(EntityBlasterBolt.class, new RendreBlast()); } } I have put the following in the main class: package com.glistre.glistremod; import java.awt.Color; import java.util.List; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.passive.EntityWolf; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemRecord; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.world.World; import net.minecraft.world.WorldType; import com.glistre.glistremod.WorldTypeGlistre; import com.glistre.glistremod.BlockRegistry; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.client.event.sound.SoundEvent; import net.minecraftforge.client.event.sound.SoundLoadEvent; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeDictionary.Type; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeEntry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.EnumHelper; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import com.glistre.glistremod.BiomeRegistry; import com.glistre.glistremod.MyArmor; //import com.glistre.glistremod.GlistreArmor; import com.glistre.glistremod.GlistreDust; import com.glistre.glistremod.GlistreIngot; import com.glistre.glistremod.GlistreSword; import com.glistre.glistremod.CommonProxy; import com.glistre.glistremod.ClientProxy; import com.glistre.glistremod.MyItem; import com.glistre.glistremod.MyPickaxe; import com.glistre.glistremod.MySword; import com.glistre.glistremod.MyFood; import com.glistre.glistremod.MyBlock; import com.glistre.glistremod.GlistreBiome; //import com.glistre.glistremod.MyBlockGen; import com.glistre.glistremod.EntityGlistreWolf; import com.glistre.glistremod.entities.EntityTobie; import com.glistre.glistremod.projectiles.MyEntityProjectile; import com.glistre.glistremod.projectiles.MyProjectile; import com.glistre.glistremod.projectiles.MyRenderProjectile; import com.glistre.glistremod.projectiles.blaster.Blaster; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBolt; import com.glistre.glistremod.projectiles.blaster.EntityBlasterBoltArrow; import com.glistre.glistremod.projectiles.blaster.MyProjectile2; import com.glistre.glistremod.projectiles.blaster.RenderBlast; /* MOD INFO */ @Mod(modid = "GlistreMod", name = "Glistre Mod", version = "2.0") public class GlistreMod { public static final String MODID = "GlistreMod"; public static final String NAME = "Glistre Mod"; public static final String VERSION = "2.0"; @Instance("GlistreMod") public static GlistreMod instance; /* PROXY INFO */ @SidedProxy(clientSide = ("com.glistre.glistremod.ClientProxy"), serverSide = ("com.glistre.glistremod.CommonProxy")) public static CommonProxy proxy; GlistreEventHandler handler = new GlistreEventHandler(); public static Item blaster_1; public int blaster1ID; // the ray or blast bolt like an arrow public static Item MyProjectile_2; public int MyProjectile_2ID; @EventHandler public void preInit( FMLPreInitializationEvent event) { FMLCommonHandler.instance().bus().register(handler); MinecraftForge.EVENT_BUS.register(handler); proxy.registerRendering(); blaster_1 = new Blaster(blaster1ID).setUnlocalizedName("blaster_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "blasterGun_1"); GameRegistry.registerItem(blaster_1, blaster_1.getUnlocalizedName()); MyProjectile_2 = new MyProjectile2(MyProjectile_2ID, "MyProjectile_2").setUnlocalizedName("MyProjectile_2").setCreativeTab(GlistreTab_1); EntityRegistry.registerModEntity(EntityBlasterBolt.class, "MyProjectile_2", MyProjectile_2ID, GlistreMod.instance, 128, 1, true); and for creating a separate arrow or bolt , tried this too: [code]package com.glistre.glistremod.projectiles.blaster; import com.glistre.glistremod.GlistreMod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.Item; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.client.renderer.texture.IIconRegister; public class MyProjectile2 extends Item { private String texturePath = (GlistreMod.MODID + ":" + "wolf_howl.png"); public MyProjectile2(int Item, String textureName) { super(); this.setUnlocalizedName(textureName); this.setTextureName("MyProjectile_2"); this.setCreativeTab(CreativeTabs.tabMaterials); } @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { this.itemIcon = iconRegister.registerIcon(texturePath); } }
  7. my biome would not spawn at all with vanilla sand as the top block
  8. Okay everything working blocks registered before biome and then I changed the Biome ID from 137 to 154 everything loads, albeit slightly laggy once you're in the biome but that's probably my computer Only remaining unusual thing is the console still flashes Unable to Find spawn Biome but only when I use a seed to spawn in my biome... Or need to really dig into how the chunks are loaded. I have heard it takes about a year to really understand Custom Biomes so I still have much to learn
  9. I will rewrite it and clean it up It's not that I am lazy it's because I just wanted to get it working first. All I did was copy the existing code and paste in two lines that add my biome. biomes[desertIdx].add(new BiomeEntry(BiomeRegistry.biomeGlistre, 10)); I did not make any other changes yet ... thanks for taking the time to help me so far
  10. WorldType: package com.glistre.glistremod; import net.minecraft.world.WorldType; import net.minecraft.world.gen.layer.GenLayer; import net.minecraft.world.gen.layer.GenLayerBiome; import net.minecraft.world.gen.layer.GenLayerBiomeEdge; import net.minecraft.world.gen.layer.GenLayerZoom; public class WorldTypeGlistre extends WorldType{ public WorldTypeGlistre(int par1, String name) { super(name); } /** * Creates the GenLayerBiome used for generating the world * * @param worldSeed The world seed * @param parentLayer The parent layer to feed into any layer you return * @return A GenLayer that will return ints representing the Biomes to be generated, see GenLayerBiome */ @Override public GenLayer getBiomeLayer(long worldSeed, GenLayer parentLayer) { GenLayer ret = new GlistreGenLayerBiome(200L, parentLayer, this); ret = GenLayerZoom.magnify(1000L, ret, 2); ret = new GenLayerBiomeEdge(1000L, ret); return ret; } } GenLayer: package com.glistre.glistremod; import java.util.ArrayList; import java.util.List; import net.minecraft.util.WeightedRandom; import net.minecraft.world.WorldType; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.layer.GenLayer; import net.minecraft.world.gen.layer.IntCache; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeEntry; import net.minecraftforge.common.BiomeDictionary; public class GlistreGenLayerBiome extends GenLayer { private List<BiomeEntry>[] biomes = new ArrayList[biomeManager.BiomeType.values().length]; private static final String __OBFID = "CL_00000555"; public GlistreGenLayerBiome(long p_i2122_1_, GenLayer p_i2122_3_, WorldType p_i2122_4_) { super(p_i2122_1_); this.parent = p_i2122_3_; for (BiomeManager.BiomeType type : BiomeManager.BiomeType.values()) { com.google.common.collect.ImmutableList<BiomeEntry> biomesToAdd = BiomeManager.getBiomes(type); int idx = type.ordinal(); if (biomes[idx] == null) biomes[idx] = new ArrayList<BiomeEntry>(); if (biomesToAdd != null) biomes[idx].addAll(biomesToAdd); } int desertIdx = BiomeManager.BiomeType.DESERT.ordinal(); if (p_i2122_4_ == WorldType.DEFAULT_1_1) { biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.desert, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.forest, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.extremeHills, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.swampland, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.plains, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.taiga, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeRegistry.biomeGlistre, 10)); } else { biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.desert, 30)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.savanna, 20)); biomes[desertIdx].add(new BiomeEntry(BiomeGenBase.plains, 10)); biomes[desertIdx].add(new BiomeEntry(BiomeRegistry.biomeGlistre, 10)); } } /** * Returns a list of integer values generated by this layer. These may be interpreted as temperatures, rainfall * amounts, or biomeList[] indices based on the particular GenLayer subclass. */ public int[] getInts(int p_75904_1_, int p_75904_2_, int p_75904_3_, int p_75904_4_) { int[] aint = this.parent.getInts(p_75904_1_, p_75904_2_, p_75904_3_, p_75904_4_); int[] aint1 = IntCache.getIntCache(p_75904_3_ * p_75904_4_); for (int i1 = 0; i1 < p_75904_4_; ++i1) { for (int j1 = 0; j1 < p_75904_3_; ++j1) { this.initChunkSeed((long)(j1 + p_75904_1_), (long)(i1 + p_75904_2_)); int k1 = aint[j1 + i1 * p_75904_3_]; int l1 = (k1 & 3840) >> 8; k1 &= -3841; if (isBiomeOceanic(k1)) { aint1[j1 + i1 * p_75904_3_] = k1; } else if (k1 == BiomeGenBase.mushroomIsland.biomeID) { aint1[j1 + i1 * p_75904_3_] = k1; } else if (k1 == 1) { if (l1 > 0) { if (this.nextInt(3) == 0) { aint1[j1 + i1 * p_75904_3_] = BiomeGenBase.mesaPlateau.biomeID; } else { aint1[j1 + i1 * p_75904_3_] = BiomeGenBase.mesaPlateau_F.biomeID; } } else { aint1[j1 + i1 * p_75904_3_] = getWeightedBiomeEntry(BiomeManager.BiomeType.DESERT).biome.biomeID; } } else if (k1 == 2) { if (l1 > 0) { aint1[j1 + i1 * p_75904_3_] = BiomeGenBase.jungle.biomeID; } else { aint1[j1 + i1 * p_75904_3_] = getWeightedBiomeEntry(BiomeManager.BiomeType.WARM).biome.biomeID; } } else if (k1 == 3) { if (l1 > 0) { aint1[j1 + i1 * p_75904_3_] = BiomeGenBase.megaTaiga.biomeID; } else { aint1[j1 + i1 * p_75904_3_] = getWeightedBiomeEntry(BiomeManager.BiomeType.COOL).biome.biomeID; } } else if (k1 == 4) { aint1[j1 + i1 * p_75904_3_] = getWeightedBiomeEntry(BiomeManager.BiomeType.ICY).biome.biomeID; } else { aint1[j1 + i1 * p_75904_3_] = BiomeGenBase.mushroomIsland.biomeID; } } } return aint1; } protected BiomeEntry getWeightedBiomeEntry(BiomeManager.BiomeType type) { List<BiomeEntry> biomeList = biomes[type.ordinal()]; int totalWeight = WeightedRandom.getTotalWeight(biomeList); int weight = BiomeManager.isTypeListModded(type)?nextInt(totalWeight):nextInt(totalWeight / 10) * 10; return (BiomeEntry)WeightedRandom.getItem(biomeList, weight); } } Am missing a class?
  11. It took 20 minutes to spawn ...then I opened up the game and there's nothing but black everywhere ...no nothing but a big black square below me So, then I save and exit the game, then relaunch Minecraft, and go back into the saved game, and everything is there totally perfect
  12. I am seriously, seriously confused. console: [10:19:17] [main/INFO] [GradleStart]: Extra: [] [10:19:18] [main/INFO] [GradleStart]: Running with arguments: [--userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Wesley/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.GradleStartCommon$GradleStartTweaker] [10:19:18] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.GradleStartCommon$GradleStartTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker [10:19:18] [main/INFO] [FML]: Forge Mod Loader version 7.10.85.1230 for Minecraft 1.7.10 loading [10:19:18] [main/INFO] [FML]: Java is Java HotSpot(TM) Client VM, version 1.7.0_75, running on Windows Vista:x86:6.0, installed at C:\Program Files\Java\jre7 [10:19:18] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation [10:19:18] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.GradleStartCommon$GradleStartTweaker [10:19:18] [main/INFO] [GradleStart]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin [10:19:18] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin [10:19:18] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [10:19:18] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper [10:19:18] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work! [10:19:21] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing [10:19:21] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper [10:19:21] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker [10:19:22] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker [10:19:22] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker [10:19:22] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main} [10:19:24] [main/INFO]: Setting user: Player535 [10:19:26] [Client thread/INFO]: LWJGL Version: 2.9.1 [10:19:26] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization [10:19:26] [Client thread/INFO] [FML]: MinecraftForge v10.13.2.1230 Initialized [10:19:27] [Client thread/INFO] [FML]: Replaced 182 ore recipies [10:19:27] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization [10:19:27] [Client thread/INFO] [FML]: Searching C:\Users\Wesley\Desktop\Modding\Forge\eclipse\mods for mods [10:19:31] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load [10:19:31] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, GlistreMod] at CLIENT [10:19:31] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, GlistreMod] at SERVER [10:19:32] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Glistre Mod [10:19:32] [Client thread/INFO] [FML]: Processing ObjectHolder annotations [10:19:32] [Client thread/INFO] [FML]: Found 341 ObjectHolder annotations [10:19:32] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0 [10:19:32] [Client thread/INFO] [FML]: Applying holder lookups [10:19:32] [Client thread/INFO] [FML]: Holder lookups applied [10:19:32] [sound Library Loader/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [10:19:32] [sound Library Loader/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem... [10:19:32] [Thread-6/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL [10:19:32] [Thread-6/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [10:19:32] [Thread-6/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized. [10:19:33] [sound Library Loader/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [10:19:33] [sound Library Loader/INFO]: Sound engine started [10:19:36] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas [10:19:36] [Client thread/INFO]: Created: 256x256 textures/items-atlas [10:19:36] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 4 mods [10:19:36] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Glistre Mod [10:19:36] [Client thread/INFO]: Created: 256x256 textures/items-atlas [10:19:37] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas [10:19:37] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [10:19:37] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down... [10:19:37] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:importantMessage:90]: Author: Paul Lamb, www.paulscode.com [10:19:37] [Client thread/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [10:19:37] [sound Library Loader/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [10:19:37] [sound Library Loader/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem... [10:19:37] [Thread-8/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL [10:19:37] [Thread-8/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [10:19:37] [Thread-8/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized. [10:19:38] [sound Library Loader/INFO] [sTDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [10:19:38] [sound Library Loader/INFO]: Sound engine started [10:20:04] [Client thread/INFO]: Deleting level Noob [10:20:04] [Client thread/INFO]: Attempt 1... [10:20:44] [server thread/INFO]: Starting integrated minecraft server version 1.7.10 [10:20:44] [server thread/INFO]: Generating keypair [10:20:45] [server thread/INFO]: Converting map! [10:20:45] [server thread/INFO]: Scanning folders... [10:20:45] [server thread/INFO]: Total conversion count is 0 [10:20:45] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance [10:20:45] [server thread/INFO] [FML]: Applying holder lookups [10:20:45] [server thread/INFO] [FML]: Holder lookups applied [10:20:45] [server thread/WARN]: Unable to find spawn biome [10:20:49] [server thread/INFO] [FML]: Loading dimension 0 (Noob) (net.minecraft.server.integrated.IntegratedServer@1ffba0a) [10:20:49] [server thread/INFO] [FML]: Loading dimension 1 (Noob) (net.minecraft.server.integrated.IntegratedServer@1ffba0a) [10:20:49] [server thread/INFO] [FML]: Loading dimension -1 (Noob) (net.minecraft.server.integrated.IntegratedServer@1ffba0a) [10:20:49] [server thread/INFO]: Preparing start region for level 0 [10:20:50] [server thread/INFO]: Preparing spawn area: 8% [10:20:51] [server thread/INFO]: Preparing spawn area: 12% [10:20:52] [server thread/INFO]: Preparing spawn area: 19% [10:20:53] [server thread/INFO]: Preparing spawn area: 24% [10:20:54] [server thread/INFO]: Preparing spawn area: 29% [10:21:05] [server thread/INFO]: Preparing spawn area: 29% [10:21:06] [server thread/INFO]: Preparing spawn area: 31% [10:21:11] [server thread/INFO]: Preparing spawn area: 33% [10:21:20] [server thread/INFO]: Preparing spawn area: 33% [10:21:27] [server thread/INFO]: Preparing spawn area: 34% [10:21:44] [server thread/INFO]: Preparing spawn area: 37% [10:21:56] [server thread/INFO]: Preparing spawn area: 38% [10:22:00] [server thread/INFO]: Preparing spawn area: 41% [10:22:02] [server thread/INFO]: Preparing spawn area: 41% [10:22:17] [server thread/INFO]: Preparing spawn area: 41% [10:22:33] [server thread/INFO]: Preparing spawn area: 42% [10:22:39] [server thread/INFO]: Preparing spawn area: 42% [10:22:45] [server thread/INFO]: Preparing spawn area: 44% [10:22:48] [server thread/INFO]: Preparing spawn area: 44% [10:22:51] [server thread/INFO]: Preparing spawn area: 44% [10:22:54] [server thread/INFO]: Preparing spawn area: 45% [10:22:55] [server thread/INFO]: Preparing spawn area: 45% [10:23:03] [server thread/INFO]: Preparing spawn area: 45% [10:23:09] [server thread/INFO]: Preparing spawn area: 45% [10:23:11] [server thread/INFO]: Preparing spawn area: 45% [10:23:19] [server thread/INFO]: Preparing spawn area: 46% [10:23:28] [server thread/INFO]: Preparing spawn area: 46% [10:23:36] [server thread/INFO]: Preparing spawn area: 46% [10:23:41] [server thread/INFO]: Preparing spawn area: 46% [10:23:44] [server thread/INFO]: Preparing spawn area: 46% [10:23:45] [server thread/INFO]: Preparing spawn area: 47% [10:23:49] [server thread/INFO]: Preparing spawn area: 48% [10:24:04] [server thread/INFO]: Preparing spawn area: 48% [10:24:13] [server thread/INFO]: Preparing spawn area: 48% [10:24:26] [server thread/INFO]: Preparing spawn area: 48% [10:24:35] [server thread/INFO]: Preparing spawn area: 49% [10:24:37] [server thread/INFO]: Preparing spawn area: 49% [10:24:51] [server thread/INFO]: Preparing spawn area: 49% [10:25:01] [server thread/INFO]: Preparing spawn area: 49% [10:25:17] [server thread/INFO]: Preparing spawn area: 49% [10:25:27] [server thread/INFO]: Preparing spawn area: 50% [10:25:37] [server thread/INFO]: Preparing spawn area: 50% [10:25:45] [server thread/INFO]: Preparing spawn area: 50% [10:25:51] [server thread/INFO]: Preparing spawn area: 51% [10:25:54] [server thread/INFO]: Preparing spawn area: 52% [10:26:01] [server thread/INFO]: Preparing spawn area: 52% [10:26:21] [server thread/INFO]: Preparing spawn area: 52% [10:26:39] [server thread/INFO]: Preparing spawn area: 52% [10:26:51] [server thread/INFO]: Preparing spawn area: 53% [10:27:03] [server thread/INFO]: Preparing spawn area: 53% [10:27:19] [server thread/INFO]: Preparing spawn area: 53% [10:27:36] [server thread/INFO]: Preparing spawn area: 53% [10:27:47] [server thread/INFO]: Preparing spawn area: 53% [10:27:54] [server thread/INFO]: Preparing spawn area: 53% [10:27:58] [server thread/INFO]: Preparing spawn area: 54% [10:27:59] [server thread/INFO]: Preparing spawn area: 54% [10:28:03] [server thread/INFO]: Preparing spawn area: 54% [10:28:12] [server thread/INFO]: Preparing spawn area: 54% [10:28:13] [server thread/INFO]: Preparing spawn area: 54% [10:28:15] [server thread/INFO]: Preparing spawn area: 55% [10:28:19] [server thread/INFO]: Preparing spawn area: 56% [10:28:35] [server thread/INFO]: Preparing spawn area: 56% [10:28:50] [server thread/INFO]: Preparing spawn area: 56% [10:29:06] [server thread/INFO]: Preparing spawn area: 57% [10:29:18] [server thread/INFO]: Preparing spawn area: 57% [10:29:31] [server thread/INFO]: Preparing spawn area: 57% [10:29:45] [server thread/INFO]: Preparing spawn area: 57% [10:29:56] [server thread/INFO]: Preparing spawn area: 57% [10:30:00] [server thread/INFO]: Preparing spawn area: 57% [10:30:03] [server thread/INFO]: Preparing spawn area: 58% [10:30:08] [server thread/INFO]: Preparing spawn area: 58% [10:30:14] [server thread/INFO]: Preparing spawn area: 58% [10:30:18] [server thread/INFO]: Preparing spawn area: 58% [10:30:20] [server thread/INFO]: Preparing spawn area: 59% [10:30:22] [server thread/INFO]: Preparing spawn area: 59% [10:30:24] [server thread/INFO]: Preparing spawn area: 60% [10:30:33] [server thread/INFO]: Preparing spawn area: 60% [10:30:44] [server thread/INFO]: Preparing spawn area: 60% [10:30:54] [server thread/INFO]: Preparing spawn area: 61% [10:31:00] [server thread/INFO]: Preparing spawn area: 61% [10:31:07] [server thread/INFO]: Preparing spawn area: 61% [10:31:14] [server thread/INFO]: Preparing spawn area: 61% [10:31:23] [server thread/INFO]: Preparing spawn area: 61% [10:31:30] [server thread/INFO]: Preparing spawn area: 61% [10:31:35] [server thread/INFO]: Preparing spawn area: 62% [10:31:42] [server thread/INFO]: Preparing spawn area: 62% [10:31:50] [server thread/INFO]: Preparing spawn area: 62% [10:31:55] [server thread/INFO]: Preparing spawn area: 62% [10:32:03] [server thread/INFO]: Preparing spawn area: 62% [10:32:13] [server thread/INFO]: Preparing spawn area: 62% [10:32:19] [server thread/INFO]: Preparing spawn area: 63% [10:32:22] [server thread/INFO]: Preparing spawn area: 64% [10:32:26] [server thread/INFO]: Preparing spawn area: 64% [10:32:33] [server thread/INFO]: Preparing spawn area: 64% [10:32:41] [server thread/INFO]: Preparing spawn area: 64% [10:32:51] [server thread/INFO]: Preparing spawn area: 65% [10:32:56] [server thread/INFO]: Preparing spawn area: 65% [10:33:00] [server thread/INFO]: Preparing spawn area: 65% [10:33:04] [server thread/INFO]: Preparing spawn area: 65% [10:33:10] [server thread/INFO]: Preparing spawn area: 65% [10:33:16] [server thread/INFO]: Preparing spawn area: 65% [10:33:27] [server thread/INFO]: Preparing spawn area: 66% [10:33:36] [server thread/INFO]: Preparing spawn area: 66% [10:33:45] [server thread/INFO]: Preparing spawn area: 66% [10:33:47] [server thread/INFO]: Preparing spawn area: 66% [10:33:50] [server thread/INFO]: Preparing spawn area: 66% [10:33:53] [server thread/INFO]: Preparing spawn area: 66% [10:33:56] [server thread/INFO]: Preparing spawn area: 67% [10:34:00] [server thread/INFO]: Preparing spawn area: 68% [10:34:05] [server thread/INFO]: Preparing spawn area: 68% [10:34:07] [server thread/INFO]: Preparing spawn area: 68% [10:34:10] [server thread/INFO]: Preparing spawn area: 69% [10:34:13] [server thread/INFO]: Preparing spawn area: 69% [10:34:16] [server thread/INFO]: Preparing spawn area: 69% [10:34:19] [server thread/INFO]: Preparing spawn area: 69% [10:34:25] [server thread/INFO]: Preparing spawn area: 69% [10:34:32] [server thread/INFO]: Preparing spawn area: 69% [10:34:39] [server thread/INFO]: Preparing spawn area: 70% [10:34:43] [server thread/INFO]: Preparing spawn area: 71% [10:34:50] [server thread/INFO]: Preparing spawn area: 72% [10:34:53] [server thread/INFO]: Preparing spawn area: 72% [10:34:54] [server thread/INFO]: Preparing spawn area: 72% [10:34:59] [server thread/INFO]: Preparing spawn area: 73% [10:35:08] [server thread/INFO]: Preparing spawn area: 73% [10:35:10] [server thread/INFO]: Preparing spawn area: 73% [10:35:13] [server thread/INFO]: Preparing spawn area: 73% [10:35:14] [server thread/INFO]: Preparing spawn area: 75% [10:35:16] [server thread/INFO]: Preparing spawn area: 75% [10:35:19] [server thread/INFO]: Preparing spawn area: 75% [10:35:20] [server thread/INFO]: Preparing spawn area: 75% [10:35:28] [server thread/INFO]: Preparing spawn area: 76% [10:35:29] [server thread/INFO]: Preparing spawn area: 76% [10:35:35] [server thread/INFO]: Preparing spawn area: 76% [10:35:47] [server thread/INFO]: Preparing spawn area: 77% [10:35:54] [server thread/INFO]: Preparing spawn area: 77% [10:35:57] [server thread/INFO]: Preparing spawn area: 77% [10:35:58] [server thread/INFO]: Preparing spawn area: 78% [10:36:01] [server thread/INFO]: Preparing spawn area: 79% [10:36:02] [server thread/INFO]: Preparing spawn area: 79% [10:36:07] [server thread/INFO]: Preparing spawn area: 80% [10:36:12] [server thread/INFO]: Preparing spawn area: 80% [10:36:22] [server thread/INFO]: Preparing spawn area: 81% [10:36:30] [server thread/INFO]: Preparing spawn area: 81% [10:36:31] [server thread/INFO]: Preparing spawn area: 81% [10:36:32] [server thread/INFO]: Preparing spawn area: 83% [10:36:33] [server thread/INFO]: Preparing spawn area: 84% [10:36:38] [server thread/INFO]: Preparing spawn area: 84% [10:36:46] [server thread/INFO]: Preparing spawn area: 85% [10:36:50] [server thread/INFO]: Preparing spawn area: 85% [10:36:53] [server thread/INFO]: Preparing spawn area: 85% [10:36:56] [server thread/INFO]: Preparing spawn area: 86% [10:36:58] [server thread/INFO]: Preparing spawn area: 87% [10:37:01] [server thread/INFO]: Preparing spawn area: 87% [10:37:05] [server thread/INFO]: Preparing spawn area: 88% [10:37:09] [server thread/INFO]: Preparing spawn area: 88% [10:37:17] [server thread/INFO]: Preparing spawn area: 89% [10:37:26] [server thread/INFO]: Preparing spawn area: 89% [10:37:28] [server thread/INFO]: Preparing spawn area: 89% [10:37:30] [server thread/INFO]: Preparing spawn area: 90% [10:37:35] [server thread/INFO]: Preparing spawn area: 90% [10:37:39] [server thread/INFO]: Preparing spawn area: 90% [10:37:42] [server thread/INFO]: Preparing spawn area: 90% [10:37:49] [server thread/INFO]: Preparing spawn area: 90% [10:37:53] [server thread/INFO]: Preparing spawn area: 91% [10:37:57] [server thread/INFO]: Preparing spawn area: 91% [10:38:04] [server thread/INFO]: Preparing spawn area: 91% [10:38:09] [server thread/INFO]: Preparing spawn area: 91% [10:38:14] [server thread/INFO]: Preparing spawn area: 91% [10:38:20] [server thread/INFO]: Preparing spawn area: 91% [10:38:29] [server thread/INFO]: Preparing spawn area: 92% [10:38:32] [server thread/INFO]: Preparing spawn area: 92% [10:38:36] [server thread/INFO]: Preparing spawn area: 93% [10:38:38] [server thread/INFO]: Preparing spawn area: 93% [10:38:40] [server thread/INFO]: Preparing spawn area: 93% [10:38:43] [server thread/INFO]: Preparing spawn area: 93% [10:38:45] [server thread/INFO]: Preparing spawn area: 93% [10:38:47] [server thread/INFO]: Preparing spawn area: 93% [10:38:49] [server thread/INFO]: Preparing spawn area: 94% [10:38:53] [server thread/INFO]: Preparing spawn area: 94% [10:38:59] [server thread/INFO]: Preparing spawn area: 94% [10:39:03] [server thread/INFO]: Preparing spawn area: 94% [10:39:13] [server thread/INFO]: Preparing spawn area: 94% [10:39:19] [server thread/INFO]: Preparing spawn area: 94% [10:39:28] [server thread/INFO]: Preparing spawn area: 95% [10:39:35] [server thread/INFO]: Preparing spawn area: 95% [10:39:46] [server thread/INFO]: Preparing spawn area: 95% [10:39:56] [server thread/INFO]: Preparing spawn area: 95% [10:40:02] [server thread/INFO]: Preparing spawn area: 95% [10:40:09] [server thread/INFO]: Preparing spawn area: 95% [10:40:18] [server thread/INFO]: Preparing spawn area: 96% [10:40:21] [server thread/INFO]: Preparing spawn area: 96% [10:40:26] [server thread/INFO]: Preparing spawn area: 96% [10:40:31] [server thread/INFO]: Preparing spawn area: 96% [10:40:40] [server thread/INFO]: Preparing spawn area: 96% [10:40:48] [server thread/INFO]: Preparing spawn area: 97% [10:40:49] [server thread/INFO]: Preparing spawn area: 97% [10:40:52] [server thread/INFO]: Preparing spawn area: 97% [10:40:56] [server thread/INFO]: Preparing spawn area: 97% [10:41:04] [server thread/INFO]: Preparing spawn area: 97% [10:41:08] [server thread/INFO]: Preparing spawn area: 97% [10:41:09] [server thread/INFO]: Preparing spawn area: 98% [10:41:11] [server thread/INFO]: Preparing spawn area: 98% [10:41:19] [server thread/INFO]: Preparing spawn area: 98% [10:41:30] [server thread/INFO]: Preparing spawn area: 98% [10:41:34] [server thread/INFO]: Preparing spawn area: 98% [10:41:35] [server thread/INFO]: Preparing spawn area: 98% [10:41:42] [server thread/INFO]: Preparing spawn area: 99% [10:41:51] [server thread/INFO]: Preparing spawn area: 99% [10:42:01] [server thread/INFO]: Preparing spawn area: 99% [10:42:08] [server thread/INFO]: Preparing spawn area: 99% [10:42:17] [server thread/INFO]: Preparing spawn area: 99% [10:42:24] [server thread/INFO]: Preparing spawn area: 99% [10:42:32] [server thread/INFO]: Changing view distance to 6, from 10 [10:42:33] [Netty Client IO #0/INFO] [FML]: Server protocol version 1 [10:42:33] [Netty IO #1/INFO] [FML]: Client protocol version 1 [10:42:33] [Netty IO #1/INFO] [FML]: Client attempting to join with 4 mods : [email protected],[email protected],[email protected],[email protected] [10:42:33] [Netty IO #1/INFO] [FML]: Attempting connection with missing mods [] at CLIENT [10:42:33] [Netty Client IO #0/INFO] [FML]: Attempting connection with missing mods [] at SERVER [10:42:33] [server thread/INFO] [FML]: [server thread] Server side modded connection established [10:42:33] [server thread/INFO]: Player535[local:E:18f6b97e] logged in with entity id 189 at (630.5, 66.0, 362.5) [10:42:33] [server thread/INFO]: Player535 joined the game [10:42:33] [Client thread/INFO] [FML]: [Client thread] Client side modded connection established
  13. should not this work? the blocks are before the biome BlockRegistry: package com.glistre.glistremod; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; public class BlockRegistry { public static void GlistreMod(){ initializeBlock(); registerBlock(); } public static Block MyBlock_1; public static void initializeBlock(){ MyBlock_1 = new MyBlock().setBlockName("MyBlock_1").setCreativeTab(GlistreMod.GlistreTab_1).setBlockTextureName(GlistreMod.MODID + ":" + "MyBlock_1") .setLightLevel(1.2F).setResistance(5.0F).setHardness(3.5F).setStepSound(Block.soundTypeStone); } public static void registerBlock(){ GameRegistry.registerBlock(MyBlock_1, MyBlock_1.getUnlocalizedName()); } } main class redone: package com.glistre.glistremod; import java.awt.Color; import java.util.List; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.passive.EntityWolf; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.world.WorldType; import com.glistre.glistremod.WorldTypeGlistre; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeDictionary.Type; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeEntry; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import com.glistre.glistremod.BlockRegistry; import com.glistre.glistremod.BiomeRegistry; import com.glistre.glistremod.CommonProxy; import com.glistre.glistremod.ClientProxy; import com.glistre.glistremod.MyItem; import com.glistre.glistremod.MyBlock; import com.glistre.glistremod.GlistreBiome; //import com.glistre.glistremod.MyBlockGen; import com.glistre.glistremod.EntityGlistreWolf; /* MOD INFO */ @Mod(modid = "GlistreMod", name = "Glistre Mod", version = "2.0") public class GlistreMod { public static final String MODID = "GlistreMod"; public static final String NAME = "Glistre Mod"; public static final String VERSION = "2.0"; @Instance("GlistreMod") public static GlistreMod instance; /* PROXY INFO */ @SidedProxy(clientSide = ("com.glistre.glistremod.ClientProxy"), serverSide = ("com.glistre.glistremod.CommonProxy")) public static CommonProxy proxy; GlistreEventHandler handler = new GlistreEventHandler(); /** * DECLARATION SECTION * *********************************************************** */ // DECLARE THE ITEM public static Item MyItem_1; public int modEntityID = 0; /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ @EventHandler public void preInit( FMLPreInitializationEvent event) { FMLCommonHandler.instance().bus().register(handler); MinecraftForge.EVENT_BUS.register(handler); proxy.registerRendering(); BlockRegistry.GlistreMod(); BiomeRegistry.GlistreMod(); /** * LOAD SECTION * *********************************************************** */ // LOAD THE ITEM MyItem_1 = new MyItem(MyItem_1, "MyItem_1").setUnlocalizedName("MyItem_1").setMaxStackSize(64).setTextureName(MODID + ":" + "MyItem_1"); GameRegistry.registerItem(MyItem_1, MyItem_1.getUnlocalizedName()); EntityRegistry.registerModEntity(EntityGlistreWolf.class, "Glistre Wolf", ++modEntityID, GlistreMod.instance, 80, 3, false); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeRegistry.biomeGlistre); EntityRegistry.addSpawn(EntityGlistreWolf.class, 1, 1, 2, EnumCreatureType.creature, BiomeGenBase.desert); } /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ @EventHandler public static void init(FMLInitializationEvent event ) { /** * RECIPES SECTION * *********************************************************** */ // SMELTING RECIPE GameRegistry.addSmelting(MyBlock_1, (new ItemStack(MyItem_1, 1)), 12); // REGISTER GLISTREWOLF SPAWNEGGS Item itemSpawnEgg = new GlistreEntityMonsterPlacer("Glistre Wolf", 0xFFFFFF, 0xFFFF5D) .setUnlocalizedName ("spawn_egg") .setTextureName("glistremod:spawn_egg"); GameRegistry.registerItem(itemSpawnEgg, "spawn_egg"); /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ /** /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ } @EventHandler public static void postInit( FMLPostInitializationEvent event ) { WorldType BIOMEGLISTRE = new WorldTypeGlistre(3, "biomeGlistre"); } } But then I get this console error and the biome will not load at all: [09:00:07] [server thread/INFO] [FML]: Holder lookups applied [09:00:07] [server thread/WARN]: Unable to find spawn biome [09:00:10] [server thread/INFO] [FML]: Loading dimension 0 (Noob) (net.minecraft.server.integrated.IntegratedServer@e528b8) [09:00:10] [server thread/INFO] [FML]: Loading dimension 1 (Noob) (net.minecraft.server.integrated.IntegratedServer@e528b8) [09:00:10] [server thread/INFO] [FML]: Loading dimension -1 (Noob) (net.minecraft.server.integrated.IntegratedServer@e528b8) [09:00:10] [server thread/INFO]: Preparing start region for level 0 [09:00:11] [server thread/INFO]: Preparing spawn area: 8% [09:00:12] [server thread/INFO]: Preparing spawn area: 13% [09:00:13] [server thread/INFO]: Preparing spawn area: 19% [09:00:14] [server thread/INFO]: Preparing spawn area: 24% [09:00:26] [server thread/INFO]: Preparing spawn area: 29% [09:00:27] [server thread/INFO]: Preparing spawn area: 31% [09:00:31] [server thread/INFO]: Preparing spawn area: 33% [09:00:40] [server thread/INFO]: Preparing spawn area: 33% [09:00:46] [server thread/INFO]: Preparing spawn area: 34% [09:01:02] [server thread/INFO]: Preparing sp
  14. My filler block always spawns AIR when I set it to my custom block. works fine when I use a vanilla block. Not sure what is going on I have moved around my biome registry in my main class in different configurations but the biome only loads when it is before the custom block ... I thought it was supposed to be the other way around but when I move it I get an error "unable to find spawn biome" and minecraft will not spawn anything at all I will post my main class ...this is edited to make it easier to see what I did hopefully someone will see what I am doing wrong package com.glistre.glistremod; import java.awt.Color; import java.util.List; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.passive.EntityWolf; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.world.WorldType; import com.glistre.glistremod.WorldTypeGlistre; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeDictionary.Type; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeEntry; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import com.glistre.glistremod.BiomeRegistry; import com.glistre.glistremod.CommonProxy; import com.glistre.glistremod.ClientProxy; import com.glistre.glistremod.MyItem; import com.glistre.glistremod.MyBlock; import com.glistre.glistremod.GlistreBiome; //import com.glistre.glistremod.MyBlockGen; import com.glistre.glistremod.EntityGlistreWolf; /* MOD INFO */ @Mod(modid = "GlistreMod", name = "Glistre Mod", version = "2.0") public class GlistreMod { public static final String MODID = "GlistreMod"; public static final String NAME = "Glistre Mod"; public static final String VERSION = "2.0"; @Instance("GlistreMod") public static GlistreMod instance; /* PROXY INFO */ @SidedProxy(clientSide = ("com.glistre.glistremod.ClientProxy"), serverSide = ("com.glistre.glistremod.CommonProxy")) public static CommonProxy proxy; GlistreEventHandler handler = new GlistreEventHandler(); /** * DECLARATION SECTION * *********************************************************** */ // DECLARE THE ITEM public static Item MyItem_1; // DECLARE THE BLOCKS public static Block MyBlock_1; public int modEntityID = 0; /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ @EventHandler public void preInit( FMLPreInitializationEvent event) { FMLCommonHandler.instance().bus().register(handler); MinecraftForge.EVENT_BUS.register(handler); proxy.registerRendering(); BiomeRegistry.GlistreMod(); /** * LOAD SECTION * *********************************************************** */ // LOAD THE ITEM MyItem_1 = new MyItem(MyItem_1, "MyItem_1").setUnlocalizedName("MyItem_1").setMaxStackSize(64).setTextureName(MODID + ":" + "MyItem_1"); GameRegistry.registerItem(MyItem_1, MyItem_1.getUnlocalizedName()); // LOAD THE BLOCK MyBlock_1 = new MyBlock().setBlockName("MyBlock_1").setBlockTextureName(MODID + ":" + "MyBlock_1") .setLightLevel(1.2F).setResistance(5.0F).setHardness(3.5F).setStepSound(Block.soundTypeStone); GameRegistry.registerBlock(MyBlock_1, MyBlock_1.getUnlocalizedName()); EntityRegistry.registerModEntity(EntityGlistreWolf.class, "Glistre Wolf", ++modEntityID, GlistreMod.instance, 80, 3, false); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeRegistry.biomeGlistre); EntityRegistry.addSpawn(EntityGlistreWolf.class, 1, 1, 2, EnumCreatureType.creature, BiomeGenBase.desert); /* biomeGlistre = new GlistreBiome(137).setBiomeName("Glistering Biome"); BiomeDictionary.registerBiomeType(biomeGlistre, Type.FOREST); BiomeManager.addSpawnBiome(biomeGlistre); */ } /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ @EventHandler public static void init(FMLInitializationEvent event ) { /** * RECIPES SECTION * *********************************************************** */ // SMELTING RECIPE GameRegistry.addSmelting(MyBlock_1, (new ItemStack(MyItem_1, 1)), 12); // REGISTER GLISTREWOLF SPAWNEGGS Item itemSpawnEgg = new GlistreEntityMonsterPlacer("Glistre Wolf", 0xFFFFFF, 0xFFFF5D) .setUnlocalizedName ("spawn_egg") .setTextureName("glistremod:spawn_egg"); GameRegistry.registerItem(itemSpawnEgg, "spawn_egg"); /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ /** * EXTRA METHODS SECTION * *********************************************************** */ // REGISTER THE ORE GENERATION //GameRegistry.registerWorldGenerator(new MyBlockGen()); /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ } @EventHandler public static void postInit( FMLPostInitializationEvent event ) { WorldType BIOMEGLISTRE = new WorldTypeGlistre(3, "biomeGlistre"); } } biome registry: package com.glistre.glistremod; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeDictionary.Type; public class BiomeRegistry { public static void GlistreMod(){ initializeBiome(); registerBiome(); } public static BiomeGenBase biomeGlistre; public static void initializeBiome(){ biomeGlistre = new GlistreBiome(137).setBiomeName("Glistering Biome"); } public static void registerBiome(){ BiomeDictionary.registerBiomeType(biomeGlistre, Type.FOREST); BiomeManager.addSpawnBiome(biomeGlistre); } } biome class: package com.glistre.glistremod; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.passive.EntityHorse; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.entity.passive.EntityPig; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.feature.WorldGenHugeTrees; import net.minecraft.world.gen.feature.WorldGenerator; public class GlistreBiome extends BiomeGenBase { public GlistreBiome(int id) { super(id); this.setBiomeName("Glistering Biome"); this.topBlock = Blocks.grass; this.fillerBlock = GlistreMod.MyBlock_1; this.theBiomeDecorator.treesPerChunk = 2; this.theBiomeDecorator.waterlilyPerChunk = 400; this.theBiomeDecorator.bigMushroomsPerChunk = 1; this.theBiomeDecorator.reedsPerChunk = 10; this.theBiomeDecorator.grassPerChunk = 10; this.spawnableCreatureList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1)); this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 2, 5, 7)); this.spawnableCreatureList.add(new SpawnListEntry(EntityPig.class, 1, 2, 7)); this.spawnableMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 1, 1, 1)); this.spawnableMonsterList.add(new SpawnListEntry(EntityZombie.class, 2, 1, 2)); this.spawnableCreatureList.add(new SpawnListEntry(EntityGlistreWolf.class, 10, 3, 7)); this.spawnableCreatureList.add(new SpawnListEntry(EntityTobo.class, 10, 3, 7)); this.spawnableCreatureList.clear(); this.spawnableWaterCreatureList.clear(); this.spawnableMonsterList.clear(); //this.spawnableMonsterList.add(new SpawnListEntry(EntityWitch.class, 200, 1, 1)); this.addFlower(Blocks.red_flower, 4, 3); // this.addFlower(Blocks.yellow_flower, 0, 30); this.setColor(0x7F007F); this.setEnableSnow(); this.setMinMaxHeight(0.7F, 1.1F); this.setTemperatureRainfall(0.2F, 2.4F); } private void setMinMaxHeight(float f, float g) { } }
  15. That works for me I am going to rewrite an array too
  16. Why would four pieces of each armor, ie, 4 helmet, 4 chestplates , 4 leggings, and 4 boots be created when overriding getSubItems? @Override public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List list){ ItemStack enchant0 = new ItemStack(GlistreMod.MyHelmet_2); ItemStack enchant1 = new ItemStack(GlistreMod.MyChestplate_2); ItemStack enchant2 = new ItemStack(GlistreMod.MyLeggings_2); ItemStack enchant3 = new ItemStack(GlistreMod.MyBoots_2); enchant0.addEnchantment(Enchantment.blastProtection, 9); enchant1.addEnchantment(Enchantment.blastProtection, 9); enchant2.addEnchantment(Enchantment.blastProtection, 9); enchant3.addEnchantment(Enchantment.blastProtection, 9); list.add(enchant0); list.add(enchant1); list.add(enchant2); list.add(enchant3); } I am sure there is a simple explanation and easier way to write this code such as an array
  17. I would : 1) change record name Bliss to lower case bliss; 2) change your sounds json to read : records.bliss instead of Bliss; change the Bliss after name to bliss; 3) delete the "+record_ from the itemIcon method; 4) in the resource location method change this.recordName to just name; 5) move the record to new package assets.starfield.sounds. That will work for you. I know it does because I typed it all in my mod like that to test it and it works.
  18. I am p sure your mod ID has to be all lower case for mcmod.info to work , Otherwise your file looks same as mine ,I put tye mcmod even with my main package for my code and it works fine.
  19. I don't think it will reduce lag much to go over 2G min and max in ram, if you only have 4g for ex you should set those at 1G
  20. flashing when I exit and save ...I know it should be "shutting down internal server" Is there something I need to update? Missing forge files?
  21. thank you very much , I will name my first grandchild after you
  22. Main: package com.glistre.glistremod; import java.awt.Color; import java.util.List; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.passive.EntityWolf; import net.minecraft.entity.projectile.EntityEgg; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemRecord; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; import net.minecraft.world.WorldType; import com.glistre.glistremod.WorldTypeGlistre; import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.client.event.sound.SoundEvent; import net.minecraftforge.client.event.sound.SoundLoadEvent; import net.minecraftforge.common.BiomeDictionary; import net.minecraftforge.common.BiomeDictionary.Type; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeEntry; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.EnumHelper; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import com.glistre.glistremod.BiomeRegistry; import com.glistre.glistremod.GlistreArmor; import com.glistre.glistremod.GlistreDust; import com.glistre.glistremod.GlistreIngot; import com.glistre.glistremod.GlistreSword; import com.glistre.glistremod.CommonProxy; import com.glistre.glistremod.ClientProxy; import com.glistre.glistremod.MyItem; import com.glistre.glistremod.MyPickaxe; import com.glistre.glistremod.MySword; import com.glistre.glistremod.MyFood; import com.glistre.glistremod.MyBlock; //import com.glistre.glistremod.MyArmor; import com.glistre.glistremod.GlistreBiome; //import com.glistre.glistremod.MyBlockGen; import com.glistre.glistremod.EntityGlistreWolf; //import com.glistre.glistremod.MyEntityTobo; /* MOD INFO */ @Mod(modid = GlistreMod.MODID, name = "Glistre Mod", version = "2.0") public class GlistreMod { public static final String MODID = "GlistreMod"; public static final String NAME = "Glistre Mod"; public static final String VERSION = "2.0"; @Instance("GlistreMod") public static GlistreMod instance; /* PROXY INFO */ @SidedProxy(clientSide = ("com.glistre.glistremod.ClientProxy"), serverSide = ("com.glistre.glistremod.CommonProxy")) public static CommonProxy proxy; GlistreEventHandler handler = new GlistreEventHandler(); /** * DECLARATION SECTION * *********************************************************** */ public static ItemArmor GlistreArmor; // DECLARE THE ARMOR public static Item MyHelmet_1; public static Item MyChestplate_1; public static Item MyLeggings_1; public static Item MyBoots_1; //ARMOR ID's public static int MyHelmet_1ID; public static int MyChestplate_1ID; public static int MyLeggings_1ID; public static int MyBoots_1ID; // DECLARE THE ARMOR MATERIAL public static ArmorMaterial Glistre= /** maxDamageFactor, damageReductionAmountArray, enchantability*/ EnumHelper.addArmorMaterial("Glistre", 28, new int[]{3, 7, 6, 4}, 50); //GlistreArmor= EnumHelper.addArmorMaterial("GlistreArmor", 28, new int[]{3, 7, 6, 4}, 50); // DECLARE THE SWORD public static Item MySword_1; // DECLARE THE SWORD public static Item Glistre_Sword; // DECLARE THE PICKAXE public static Item MyPickaxe_1; // DECLARE THE PICKAXE public static Item Glistre_Pickaxe; // DECLARE THE ITEM public static Item MyItem_1; // DECLARE THE ITEM public static Item Glistre_Dust; // DECLARE THE ITEM public static Item Glistre_Ingot; // DECLARE GLISTERING BREAD public static Item MyFood_1; // DECLARE GLISTERING PIE public static Item MyFood_2; // DECLARE THE BLOCK public static Block MyBlock_1; // DECLARE THE RECORD public static ItemRecord wolf_howl; // DECLARE THE NEW ACHIEVEMENTS public static Achievement MyAchievement_1; public static Achievement MyAchievement_2; public static Achievement MyAchievement_3; public int modEntityID = 0; //DECLARE CREATIVE TAB public static CreativeTabs GlistreTab_1; /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ @EventHandler public void preInit( FMLPreInitializationEvent event ){ FMLCommonHandler.instance().bus().register(handler); MinecraftForge.EVENT_BUS.register(handler); proxy.registerRendering(); /** * LOAD SECTION * *********************************************************** */ //LOAD THE CREATIVE TAB GlistreTab_1 = new CreativeTabs("GlistreTab_1"){ public Item getTabIconItem(){ return new ItemStack(Glistre_Sword).getItem(); } }; //LOAD THE ARMOR MyHelmet_1 = new GlistreArmor(Glistre, MyHelmet_1ID, 0).setUnlocalizedName("MyHelmet_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "MyHelmet_1"); //MyArmor(2060, EnumArmorMaterial.IRON, 0, 0, "myarmor"); GameRegistry.registerItem(MyHelmet_1, "MyHelmet_1"); MyChestplate_1 = new GlistreArmor(Glistre, MyChestplate_1ID, 1).setUnlocalizedName("MyChestplate_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "MyChestplate_1"); GameRegistry.registerItem(MyChestplate_1, "MyChestplate_1"); MyLeggings_1 = new GlistreArmor(Glistre, MyLeggings_1ID, 2).setUnlocalizedName("MyLeggings_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "MyLeggings_1"); GameRegistry.registerItem(MyLeggings_1, "MyLeggings_1"); MyBoots_1 = new GlistreArmor(Glistre, MyBoots_1ID, 3).setUnlocalizedName("MyBoots_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "MyBoots_1"); GameRegistry.registerItem(MyBoots_1, "MyBoots_1"); // LOAD THE SWORDS MySword_1 = new Item().setUnlocalizedName("MySword_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "MySword_1"); // MySword(ToolMaterial Item, EnumToolMaterial, "MySword_1"); GameRegistry.registerItem(MySword_1, MySword_1.getUnlocalizedName()); Glistre_Sword = new Item().setUnlocalizedName("Glistre_Sword").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "Glistre_Sword"); GameRegistry.registerItem(Glistre_Sword, Glistre_Sword.getUnlocalizedName()); ItemStack string = new ItemStack(Glistre_Sword); string.addEnchantment(Enchantment.fireAspect, 7); GameRegistry.addShapelessRecipe(string, new Object[]{ Items.bone, Items.golden_apple}); // list.add(enchantglistre_sword); // LOAD THE PICKAXE MyPickaxe_1 = new Item().setUnlocalizedName("MyPickaxe_1").setCreativeTab(GlistreTab_1).setTextureName(MODID + ":" + "MyPickaxe_1"); GameRegistry.registerItem(MyPickaxe_1, MyPickaxe_1.getUnlocalizedName()); // LOAD THE ITEMS MyItem_1 = new Item().setUnlocalizedName("MyItem_1").setCreativeTab(GlistreTab_1).setMaxStackSize(64).setTextureName(MODID + ":" + "MyItem_1"); GameRegistry.registerItem(MyItem_1, MyItem_1.getUnlocalizedName()); Glistre_Dust = new Item().setUnlocalizedName("Glistre_Dust").setCreativeTab(GlistreTab_1).setMaxStackSize(64).setTextureName(GlistreMod.MODID + ":" + "Glistre_Dust"); GameRegistry.registerItem(Glistre_Dust, Glistre_Dust.getUnlocalizedName()); Glistre_Ingot = new Item().setUnlocalizedName("Glistre_Ingot").setCreativeTab(GlistreTab_1).setMaxStackSize(64).setTextureName(MODID + ":" + "Glistre_Ingot"); //GlistreOre(2034, "Glistre_Ore").setCreativeTab(CreativeTabs.tabMisc).setMaxStackSize(64); GameRegistry.registerItem(Glistre_Ingot, Glistre_Ingot.getUnlocalizedName()); // GLISTERING BREAD /** itemID, healAmount, saturationModifier (F), isWolfsFavoriteMeat, Texture Name */ MyFood_1 = new ItemFood(6,5.0F,true).setUnlocalizedName("MyFood_1").setCreativeTab(GlistreTab_1).setMaxStackSize(64).setTextureName(MODID + ":" + "MyFood_1"); GameRegistry.registerItem(MyFood_1, MyFood_1.getUnlocalizedName()); // GLISTERING PIE /** itemID, healAmount, saturationModifier (F), isWolfsFavoriteMeat, Texture Name */ MyFood_2 = new ItemFood(8,5.5F, true).setUnlocalizedName("MyFood_2").setCreativeTab(GlistreTab_1).setMaxStackSize(64).setTextureName(MODID + ":" + "MyFood_2"); //MyFood(2041, 8, 5.5F, true, "MyFood_2").setAlwaysEdible().setCreativeTab(CreativeTabs.tabFood); GameRegistry.registerItem(MyFood_2, MyFood_2.getUnlocalizedName()); // LOAD THE BLOCK MyBlock_1 = new MyBlock().setBlockName("MyBlock_1").setCreativeTab(GlistreTab_1).setBlockTextureName(MODID + ":" + "MyBlock_1") .setLightLevel(1.0F).setResistance(5.0F).setHardness(3.5F).setStepSound(Block.soundTypeStone); GameRegistry.registerBlock(MyBlock_1, MyBlock_1.getUnlocalizedName()); //MinecraftForge.setBlockHarvestLevel(MyBlock_1, "pickaxe", 1); // LOAD RECORD wolf_howl = (ItemRecord) new MusicDisc("wolf_howl").setUnlocalizedName("wolf_howl").setCreativeTab(GlistreTab_1); GameRegistry.registerItem(wolf_howl, "wolf_howl"); // MinecraftForge.EVENT_BUS.register(new SoundLoadEvent()); // LOAD BIOME BiomeRegistry.GlisterMod(); // REGISTER YOUR ENTITY // old way of registering Entity EntityRegistry.registerGlobalEntityID(EntityGlistreWolf.class, "Glistre_Wolf", EntityGlistreWolfID); // new way int modEntityID = 0; // EntityRegistry.registerModEntity(EntityGlistreWolf.class, "Glistre_Wolf", ++modEntityID, <name of your mod's main class>.instance, 80, 3, false); EntityRegistry.registerModEntity(EntityGlistreWolf.class, "Glistre Wolf", ++modEntityID, GlistreMod.instance, 80, 3, false); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeRegistry.biomeGlistre); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeRegistry.biomeGlistre); EntityRegistry.addSpawn(EntityGlistreWolf.class, 2, 3, 7, EnumCreatureType.creature, BiomeGenBase.desert); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeGenBase.jungle); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeGenBase.jungleEdge); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeGenBase.taiga); EntityRegistry.addSpawn(EntityGlistreWolf.class, 100, 3, 7, EnumCreatureType.creature, BiomeGenBase.forest); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeGenBase.roofedForest); EntityRegistry.addSpawn(EntityGlistreWolf.class, 100, 3, 7, EnumCreatureType.creature, BiomeGenBase.savanna); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeGenBase.coldTaiga); EntityRegistry.addSpawn(EntityGlistreWolf.class, 20, 3, 7, EnumCreatureType.creature, BiomeGenBase.plains); EntityRegistry.addSpawn(EntityGlistreWolf.class, 10, 3, 7, EnumCreatureType.creature, BiomeGenBase.swampland); EntityRegistry.addSpawn(EntityGlistreWolf.class, 100, 3, 7, EnumCreatureType.creature, BiomeGenBase.birchForest); // REGISTER GLISTREWOLF SPAWNEGGS Item itemSpawnEgg = new GlistreEntityMonsterPlacer("Glistre Wolf", 0xFFFFFF, 0xFFFF5D) .setUnlocalizedName ("spawn_egg") .setTextureName("glistremod:spawn_egg"); GameRegistry.registerItem(itemSpawnEgg, "spawn_egg"); // LOAD THE ACHIEVEMENTS //MyAchievement_1 = new Achievement(2001, "MyAchievement_1", -1, -3, MyBlock_1, (Achievement) null).registerAchievement(); //MyAchievement_2 = new Achievement(2002, "MyAchievement_2", -3, -3, MyItem_1, MyAchievement_1.registerAchievement()); //MyAchievement_3 = new Achievement(2003, "MyAchievement_3", -5, -3, Glistre_Dust, AchievementList.buildFurnace); // (id, "NameOfAchievement", x, y coordinates on Achievement map, icon, Required Achievement to unlock) // For no Pre-required achievement, use "(Achievement)null" } /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ @EventHandler public static void init(FMLInitializationEvent event ) { // ItemStack string = new ItemStack(Glistre_Sword, 1); // string.addEnchantment(Enchantment.fireAspect, 7); // record_wolf_howl= new RecordHandler ("wolf_howl", "wolf_howl", "wolf_howl"); // GameRegistry.registerItem(record_wolf_howl, "wolf_howl"); /** * RECIPES SECTION * *********************************************************** */ // SWORD RECIPE GameRegistry.addRecipe(new ItemStack(MySword_1, 1), new Object[] { " X ", " X ", " S ", 'S', Items.stick, 'X', MyItem_1, }); // SWORD RECIPE GameRegistry.addRecipe(new ItemStack(Glistre_Sword, 1), new Object[] { " X ", " X ", " S ", 'S', Items.stick, 'X', Glistre_Ingot, }); // PICKAXE RECIPE GameRegistry.addRecipe(new ItemStack(MyPickaxe_1, 1), new Object[] { "XXX", " X ", " S ", 'S', Items.stick, 'X', MyItem_1, }); // GLISTRE DUST RECIPE ItemStack GlistreDust = new ItemStack(GlistreMod.Glistre_Dust); ItemStack SilverIngot = new ItemStack(GlistreMod.MyItem_1); ItemStack GoldIngot = new ItemStack(Items.gold_ingot); GameRegistry.addShapelessRecipe(GlistreDust, MyItem_1, GoldIngot); // SMELTING GLISTRE ORE RECIPE ItemStack GlistreIngot = new ItemStack(GlistreMod.Glistre_Ingot); GameRegistry.addSmelting(GlistreMod.Glistre_Dust, GlistreIngot, 12.0F); // SMELTING RECIPE GameRegistry.addSmelting(MyBlock_1, (new ItemStack(MyItem_1, 1)), 12); // GLISTERING BREAD RECIPE GameRegistry.addRecipe(new ItemStack(MyFood_1, 1), new Object[] { " ", " X ", " S ", 'S', Items.bread, 'X', GlistreMod.Glistre_Dust, }); // GLISTERING PIE RECIPE GameRegistry.addRecipe(new ItemStack(MyFood_2, 1), new Object[] { " Z ", " S ", " ", 'Z', Items.sugar, 'S', GlistreMod.MyFood_1, }); /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ /** * EXTRA METHODS SECTION * *********************************************************** */ // REGISTER THE ORE GENERATION //GameRegistry.registerWorldGenerator(new MyBlockGen()); // CHANGE THE TEXT OF THE ACHIEVEMENTS //LanguageRegistry.instance().addStringLocalization("achievement.MyAchievement_1", "en_US", "Silver Ore"); //LanguageRegistry.instance().addStringLocalization("achievement.MyAchievement_1.desc", "en_US", "Mine Silver Ore"); //LanguageRegistry.instance().addStringLocalization("achievement.MyAchievement_2", "en_US", "Silver Ingot"); //LanguageRegistry.instance().addStringLocalization("achievement.MyAchievement_2.desc", "en_US", "Smelt Silver Ore"); //LanguageRegistry.instance().addStringLocalization("achievement.MyAchievement_3", "en_US", "Glistre Dust"); //LanguageRegistry.instance().addStringLocalization("achievement.MyAchievement_3.desc", "en_US", "Craft Glistre Dust"); /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */ } @EventHandler public static void postInit( FMLPostInitializationEvent event ) { WorldType BIOMEGLISTRE = new WorldTypeGlistre(3, "biomeGlistre"); } }
  23. I would say absolutely it is valid since it shows in my inventory and I can craft it but since it's not working then I say anything possible LOL
  24. Hallelujah working fine now . when I switched workspaces somehow I left the "Forge" out of the filepath !!!!

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.