Posted April 14, 201312 yr I want to render my arrow like item, but I can't get it to work correctly. I've tried the arrow renderer and the snowball renderer. but so far I've had no luck. please help.
April 14, 201312 yr In what way does it not work? You mean you can't see the arrow? I just got a whole lot of help to render a throwable item and therefore I know that there's a craptonne of stuff that could be wrong. If it's not private, it would also help if you posted your source code!
April 14, 201312 yr i have an entity arrow that works all crrectly but i dont know how to get it to look like what i want, it allways looks like the missing texture if you can help me fix this i can help this guy by posting the code for it. this part methinks this.loadTexture("/item/arrows.png"); Use examples, i have aspergers. Examples make sense to me.
April 14, 201312 yr i have an entity arrow that works all crrectly but i dont know how to get it to look like what i want, it allways looks like the missing texture if you can help me fix this i can help this guy by posting the code for it. this part methinks this.loadTexture("/item/arrows.png"); Just use the arrows.png as a template to make your own arrow and then you replace "/item/arrows.png" with "/relative/path/to/your/arrowstexture.png", the code is counting from the render class so if the texture is in the middle of all your mod's classes, the path would just be "/arrowtexture.png" and if it is in a folder it would be "/foldername/arrowtexture.png". Get it? Try that
April 14, 201312 yr okay i got it to work, so endershadow you need alot of classes to make one rendered throwable or shootable entity, you need a render class, an entity class and a item class, and you need to register the item entity and renderer in your main mod class then the entity and the rederer again in your client proxy, i wil ommit the basic item code in the main mode class as i presume you can do that part. P.S this is an example dagger. Main mod class (omitting basic item code) @Init proxy.registerRenderers(); EntityRegistry.registerModEntity(EntityRockSnowball.class, "RockSnowball", 2, this , 250, 1, false); Dagger Class package ashtonsmod.common; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntitySnowball; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class Dagger extends Item { public Dagger(int par1) { super(par1); this.maxStackSize = 16; } public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if (!par3EntityPlayer.capabilities.isCreativeMode) { --par1ItemStack.stackSize; } par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityDagger(par2World, par3EntityPlayer)); } return par1ItemStack; } @Override public void updateIcons(IconRegister par1IconRegister) { this.iconIndex = par1IconRegister.registerIcon("ashtonsmod:Dagger"); }} DaggerEntity package ashtonsmod.common; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class EntityDagger extends EntityThrowable{ public static final float ArrowShake = 0; public EntityDagger(World par1World) { super(par1World); } public EntityDagger(World par2World, EntityPlayer par3EntityPlayer) { super(par2World,par3EntityPlayer); } @Override protected void entityInit() { } @Override public void readEntityFromNBT(NBTTagCompound nbttagcompound) { } @Override public void writeEntityToNBT(NBTTagCompound nbttagcompound) { } @Override protected void onImpact(MovingObjectPosition par1MovingObjectPosition){ if (par1MovingObjectPosition.entityHit != null) { par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), 5); } if (!this.worldObj.isRemote && this.rand.nextInt( == 0) { byte b0 = 1; if (this.rand.nextInt(32) == 0) { b0 = 4; } } if (!this.worldObj.isRemote) { this.setDead(); } } } Dagger renderer package ashtonsmod.common; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.Render; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; public class RenderDagger extends Render { public RenderDagger() { } public void renderDagger(EntityDagger par1EntityDagger, double par2, double par4, double par6, float par8, float par9) { this.loadTexture("/mods/ashtonsmod/textures/gui/dagger.png"); GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glRotatef(par1EntityDagger.prevRotationYaw + (par1EntityDagger.rotationYaw - par1EntityDagger.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(par1EntityDagger.prevRotationPitch + (par1EntityDagger.rotationPitch - par1EntityDagger.prevRotationPitch) * par9, 0.0F, 0.0F, 1.0F); Tessellator tessellator = Tessellator.instance; byte b0 = 0; float f2 = 0.0F; float f3 = 0.5F; float f4 = (float)(0 + b0 * 10) / 32.0F; float f5 = (float)(5 + b0 * 10) / 32.0F; float f6 = 0.0F; float f7 = 0.15625F; float f8 = (float)(5 + b0 * 10) / 32.0F; float f9 = (float)(10 + b0 * 10) / 32.0F; float f10 = 0.05625F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); float f11 = (float)par1EntityDagger.ArrowShake - par9; if (f11 > 0.0F) { float f12 = -MathHelper.sin(f11 * 3.0F) * f11; GL11.glRotatef(f12, 0.0F, 0.0F, 1.0F); } GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F); GL11.glScalef(f10, f10, f10); GL11.glTranslatef(-4.0F, 0.0F, 0.0F); GL11.glNormal3f(f10, 0.0F, 0.0F); tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f8); tessellator.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f8); tessellator.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f9); tessellator.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); GL11.glNormal3f(-f10, 0.0F, 0.0F); tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-7.0D, 2.0D, -2.0D, (double)f6, (double)f8); tessellator.addVertexWithUV(-7.0D, 2.0D, 2.0D, (double)f7, (double)f8); tessellator.addVertexWithUV(-7.0D, -2.0D, 2.0D, (double)f7, (double)f9); tessellator.addVertexWithUV(-7.0D, -2.0D, -2.0D, (double)f6, (double)f9); tessellator.draw(); for (int i = 0; i < 4; ++i) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); GL11.glNormal3f(0.0F, 0.0F, f10); tessellator.startDrawingQuads(); tessellator.addVertexWithUV(-8.0D, -2.0D, 0.0D, (double)f2, (double)f4); tessellator.addVertexWithUV(8.0D, -2.0D, 0.0D, (double)f3, (double)f4); tessellator.addVertexWithUV(8.0D, 2.0D, 0.0D, (double)f3, (double)f5); tessellator.addVertexWithUV(-8.0D, 2.0D, 0.0D, (double)f2, (double)f5); tessellator.draw(); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } /** * 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.renderDagger((EntityDagger)par1Entity, par2, par4, par6, par8, par9); } } Client Proxy (i assume you already have one of these set up) package ashtonsmod.client; import ashtonsmod.common.EntityDagger; import ashtonsmod.common.EntityRockSnowball; import ashtonsmod.common.RenderDagger; import ashtonsmod.common.RenderRockSnowball; import ashtonsmod.common.RockSnowball; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.client.renderer.entity.Render; import net.minecraft.src.ModLoader; import net.minecraftforge.client.MinecraftForgeClient; public class ClientProxyashtonsmod extends ashtonsmod.common.CommonProxy { @Override public void registerRenderers() { super.registerRenderers(); EntityRegistry.registerGlobalEntityID(EntityRockSnowball.class, "RockSnowball", ModLoader.getUniqueEntityId()); RenderingRegistry.registerEntityRenderingHandler(EntityRockSnowball.class, new RenderRockSnowball()); EntityRegistry.registerGlobalEntityID(EntityDagger.class, "Dagger", ModLoader.getUniqueEntityId()); RenderingRegistry.registerEntityRenderingHandler(EntityDagger.class, new RenderDagger()); } } } Use examples, i have aspergers. Examples make sense to me.
April 14, 201312 yr Author It just doesn't show up. and I tried copying the arrow render class and changing the string and the entity it referenced, but it didn't work.
April 14, 201312 yr did you do the things above? try copy pasting some of my code to double check? double check the referanced classes ie everytime renderdagger is metioned make sure it is spelt correctly and such i know the above works as i am using it so you must be missing something somewhere what a said a min ago and if that doesnt work post your code and will take a look Use examples, i have aspergers. Examples make sense to me.
April 14, 201312 yr It just doesn't show up. and I tried copying the arrow render class and changing the string and the entity it referenced, but it didn't work. Could you post source code? I might not be able to respond till tomorrow but I'll see then
April 14, 201312 yr Author here's a link to my renderer on github. this one is based off the snowball renderer. https://github.com/code-lyoko-modding/CodeLyokoMod/blob/master/matt/lyoko/render/RenderLaserArrow.java
April 14, 201312 yr if you want it to look like an arrow what good is it using the snowball renderer? Use examples, i have aspergers. Examples make sense to me.
April 15, 201312 yr here's a link to my renderer on github. this one is based off the snowball renderer. https://github.com/code-lyoko-modding/CodeLyokoMod/blob/master/matt/lyoko/render/RenderLaserArrow.java I hardly doubt this is the problem since the arrow isn't rendering but you might always check at least, replace this.loadTexture("/mods/lyoko/textures/items/laserarrow.png") with this.loadTexture("/textures/items/laserarrow.png") since it counts the texture path relative to the render code.
April 15, 201312 yr its not that its a coding problem as if it were that then the render would come up as missing texture while in flight. why dont you just use the code i provided you with? since we know that works. Use examples, i have aspergers. Examples make sense to me.
April 15, 201312 yr Author but that's just it, I used what you used and it gave me the same problem. invisible entities. Could it be that the entities are too fast?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.