Problème arc rendu 3D et dégâts flèches
-
Merci pour ta rèponse mais j’ai déjà essayé de copier collé la classe ItemBow sans rien changer et toujours le même problème… Et pour les dégats je vais essayé

Et plaigon, oui c’est la même texture sauf qu’elle est en faithfull et recolorée en vert ^^
EDIT: les dégâts marchent mais le problème c’est que je pense que sa ne prend pas en compte le niveau de charge de l’arc même si on charge l’arc pendant 1s ça va faire les mêmes dégâts je me trompe ?
-
Pour les dégâts c’est simple ils sont ici
EntityArrow entityarrow = new EntityArrow(p_77615_2_, p_77615_3_, f * 3.0F); /*le 3.0F*/Mais tu va me dire où ???
dans cette méthode
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(Items.arrow)) { 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; } EntityArrowDeath entityarrow = new EntityArrowDeath(p_77615_2_, p_77615_3_, f * 3.0F); /**/ if (f == 1.0F) { entityarrow.setIsCritical(true); } int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, p_77615_1_); if (k > 0) { entityarrow.setDamage(entityarrow.getDamage() + (double)k * 1.50D + 1.50D); } int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, p_77615_1_); if (l > 0) { entityarrow.setKnockbackStrength(l); } if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, p_77615_1_) > 0) { entityarrow.setFire(700); } p_77615_1_.damageItem(1, p_77615_3_); p_77615_2_.playSoundAtEntity(p_77615_3_, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); if (flag) { entityarrow.canBePickedUp = 2; } else { p_77615_3_.inventory.consumeInventoryItem(Items.arrow); } if (!p_77615_2_.isRemote) { p_77615_2_.spawnEntityInWorld(entityarrow); } } }Ps Utilise les balises java

Edit ATTENTION dans la méthode que je t’ai donné c’est une autre entity bow (pour donné des effet de potion) Donc enlève Death et tu import
Encore Edit j’avais pas vu ta réponse donc sa prend en compte le chargement de l’arc
-
Ah ok merci donc ce n’était pas du tout dans la class de la flèche comme je le pensais ^^
-
Alors je viens de testé et sa me fait pareil pour l’arc mais il me semble qu’il à des sujets qui traite ceci je vais regardé et je te donnerais la réponse

-
Ah je me disais aussi que ça ne venait pas que de moi ! Merci mais j’ai déjà fait plein de recherches sans aucunes réponses à mon problème donc si tu trouve GG

-
@‘ErkoZ’:
Ah je me disais aussi que ça ne venait pas que de moi ! Merci mais j’ai déjà fait plein de recherches sans aucunes réponses à mon problème donc si tu trouve GG

J’ai trouvé cela

https://www.minecraftforgefrance.fr/showthread.php?tid=2593 -
https://www.minecraftforgefrance.fr/showthread.php?tid=2593&pid=30130#pid30130
pour être plus précis.Le placement de l’arc est hardcodé dans le jeu, du-coup faut faire tout un bordel pour reproduire.
En 1.8 et + comme il y a les jsons il suffit de modifier une petite valeur dans le json (ou reprendre le même json que l’arc).
-
Merci pour toutes vos réponses mais est ce que vous savez ou est la classe du rendu de l’arc ? Si il y en a une ?
-
Il n’y a pas de classe spéciale, c’est dans la classe qui s’occupe de rendre ce qu’on a en main.
-
Bon après quelques recherches et graçe à vous j’ai finalement résolu mon problème du coup je vais partager la solution à ceux qui auront ou ont le même problème que moi

Il suffit de créer une classe ModBowRenderer et d’y mettre ça:
package com.google.akinarutv.akimod.common.renderer; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; public class BowRenderer implements IItemRenderer { private Minecraft mc; private TextureManager texturemanager; public BowRenderer() { this.mc = Minecraft.getMinecraft(); this.texturemanager = this.mc.getTextureManager(); } @Override //HandleRenderType lets forge know if it will render the item in the requested view. public boolean handleRenderType(ItemStack item, ItemRenderType type) { //You can remove everything after "EQUIPPED" if you only want this class to render the third person item. return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON; } @Override //RenderHelpers I don't fully understand, I'd assume they are modifiers, but I've never looked into it. public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return false; } @Override //This function decides what to do in rendering an item, whether it's first or third person. //Credit to SanAndreasP on minecraftforge forums for this code. public void renderItem(ItemRenderType type, ItemStack item, Object… data) { EntityClientPlayerMP entity = (EntityClientPlayerMP)data[1]; GL11.glPopMatrix(); // prevents Forge from pre-translating the item if(type == ItemRenderType.EQUIPPED_FIRST_PERSON) { this.renderItem(entity, item, 0); } else { GL11.glPushMatrix(); // contra-translate the item from it's standard translation // also apply some more scale or else the bow is tiny float f2 = 3F - (1F/3F); GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(-60.0F, 0.0F, 0.0F, 1.0F); GL11.glScalef(f2, f2, f2); GL11.glTranslatef(-0.25F, -0.1875F, 0.1875F); // render the item as 'real' bow //This is pulled from RenderBiped float f3 = 0.625F; GL11.glTranslatef(0.0F, 0.125F, 0.3125F); GL11.glRotatef(-20.0F, 0.0F, 1.0F, 0.0F); GL11.glScalef(f3, -f3, f3); GL11.glRotatef(-100.0F, 1.0F, 0.0F, 0.0F); GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); this.renderItem(entity, item, 0); GL11.glPopMatrix(); } GL11.glPushMatrix(); // prevents GL Underflow errors } //This actually renders an Icon to be worked with. //All of this code is directly pulled from ItemRenderer.class private void renderItem(EntityClientPlayerMP par1EntityLiving, ItemStack par2ItemStack, int par3) { { //If you for whatever reason aren't registering icons with iconRegister, I'm assuming you'll need to change the code below. IIcon iicon = par1EntityLiving.getItemIcon(par2ItemStack, par3); if (iicon == null) { GL11.glPopMatrix(); return; } texturemanager.bindTexture(texturemanager.getResourceLocation(par2ItemStack.getItemSpriteNumber())); Tessellator tessellator = Tessellator.instance; float f = iicon.getMinU(); float f1 = iicon.getMaxU(); float f2 = iicon.getMinV(); float f3 = iicon.getMaxV(); float f4 = 0.0F; float f5 = 0.3F; GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glTranslatef(-f4, -f5, 0.0F); float f6 = 1.5F; GL11.glScalef(f6, f6, f6); GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(335.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.9375F, -0.0625F, 0.0F); ItemRenderer.renderItemIn2D(tessellator, f1, f2, f, f3, iicon.getIconWidth(), iicon.getIconHeight(), 0.0625F); //This checks for enchantments. if (par2ItemStack.hasEffect(par3)) { GL11.glDepthFunc(GL11.GL_EQUAL); GL11.glDisable(GL11.GL_LIGHTING); texturemanager.bindTexture(new ResourceLocation("textures/misc/enchanted_item_glint.png")); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_COLOR, GL11.GL_ONE); float f7 = 0.76F; GL11.glColor4f(0.5F * f7, 0.25F * f7, 0.8F * f7, 1.0F); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glPushMatrix(); float f8 = 0.125F; GL11.glScalef(f8, f8, f8); float f9 = (float)(Minecraft.getSystemTime() % 3000L) / 3000.0F * 8.0F; GL11.glTranslatef(f9, 0.0F, 0.0F); GL11.glRotatef(-50.0F, 0.0F, 0.0F, 1.0F); ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F); GL11.glPopMatrix(); GL11.glPushMatrix(); GL11.glScalef(f8, f8, f8); f9 = (float)(Minecraft.getSystemTime() % 4873L) / 4873.0F * 8.0F; GL11.glTranslatef(-f9, 0.0F, 0.0F); GL11.glRotatef(10.0F, 0.0F, 0.0F, 1.0F); ItemRenderer.renderItemIn2D(tessellator, 0.0F, 0.0F, 1.0F, 1.0F, 256, 256, 0.0625F); GL11.glPopMatrix(); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthFunc(GL11.GL_LEQUAL); } GL11.glDisable(GL12.GL_RESCALE_NORMAL); } } }J’ai trouvé cette classe ici: https://www.minecraftforgefrance.fr/archive/index.php?thread-726-2.html#
Ensuite vous enregistrez votre item avec le rendu dans votre ClientProxy voila

-
Résolu ?
-
Oui, résolu.
-
Alors rajoute la balise en éditant ton premier message