MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Comment faire une lance ?

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    73 Messages 5 Publieurs 16.3k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • FlowF Hors-ligne
      Flow
      dernière édition par

      @‘QuantumSheep’:

      Bon, le code fonctionne très bien pour l’instant, j’ai bien mis “extends Entity implements IProjectile” et ça fonctionne.
      Reste plus qu’à faire le rendu et c’est bon, merci 😄

      Nice content pour toi ! 😄

      Oui ce gif est drôle.

      1 réponse Dernière réponse Répondre Citer 0
      • SCAREXS Hors-ligne
        SCAREX
        dernière édition par

        IProjectile sert juste si tu veux utiliser ton projectile avec un Dispenser. Balise résolu ?

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 réponse Dernière réponse Répondre Citer 0
        • QuantumSheepQ Hors-ligne
          QuantumSheep
          dernière édition par

          Eh bien non, j’ai un soucis 😄
          La lance s’envoie bien mais consomme des flèches au lieu d’elle même et si en survival j’ai pas de flèche, il en génère…

          Help me 😢

          1 réponse Dernière réponse Répondre Citer 0
          • FlowF Hors-ligne
            Flow
            dernière édition par

            @‘QuantumSheep’:

            Eh bien non, j’ai un soucis  😄
            La lance s’envoie bien mais consomme des flèches au lieu d’elle même et si en survival j’ai pas de flèche, il en génère…

            Help me  😢

            Ton code final serait utile ^^

            Oui ce gif est drôle.

            1 réponse Dernière réponse Répondre Citer 0
            • QuantumSheepQ Hors-ligne
              QuantumSheep
              dernière édition par

              Je suis sur ma tablette mais voilà mon github avec les derniers codes rajoutés : https://github.com/QuantumSheep/ArkCraft

              1 réponse Dernière réponse Répondre Citer 0
              • QuantumSheepQ Hors-ligne
                QuantumSheep
                dernière édition par

                Dsl double post 😕

                Voilà mes class :

                Main class:

                package com.quantumsheep.arkcraft;
                
                import java.awt.Color;
                
                import org.apache.logging.log4j.LogManager;
                import org.apache.logging.log4j.Logger;
                
                import com.quantumsheep.arkcraft.entity.EntityGiantSpider;
                import com.quantumsheep.arkcraft.entity.EntitySpear;
                import com.quantumsheep.arkcraft.lib.CommonProxy;
                import com.quantumsheep.arkcraft.lib.EntityEventHandler;
                import com.quantumsheep.arkcraft.lib.References;
                import com.quantumsheep.arkcraft.weapons.WeaponSpear;
                
                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.FMLPostInitializationEvent;
                import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                import cpw.mods.fml.common.registry.EntityRegistry;
                import cpw.mods.fml.common.registry.GameRegistry;
                import cpw.mods.fml.common.registry.LanguageRegistry;
                import net.minecraft.creativetab.CreativeTabs;
                import net.minecraft.entity.Entity;
                import net.minecraft.item.Item;
                import net.minecraft.item.Item.ToolMaterial;
                import net.minecraftforge.common.MinecraftForge;
                import net.minecraftforge.common.util.EnumHelper;
                
                @Mod(modid = References.MODID, name = "ArkCraft Mod", version = References.VERSION)
                
                public class ArkCraftMod {
                
                @Instance("arkcraft")
                public static ArkCraftMod instance;
                
                @SidedProxy(clientSide = References.Client, serverSide = References.Common)
                public static CommonProxy proxy;
                
                public static Item weaponSpear;
                
                public static final Logger LOGGER = LogManager.getLogger(References.NAME);
                
                @EventHandler
                public void preInit(FMLPreInitializationEvent event)
                {
                weaponSpear = new WeaponSpear().setUnlocalizedName("weaponSpear").setTextureName(References.MODID + ":itemtutoriel").setCreativeTab(CreativeTabs.tabMaterials);
                
                GameRegistry.registerItem(weaponSpear, "weapon_spear");
                }
                
                @EventHandler
                public void init(FMLInitializationEvent event)
                {
                EntityRegistry.registerGlobalEntityID(EntitySpear.class, "entitySpear", EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB());
                EntityRegistry.registerModEntity(EntitySpear.class, "entitySpear", 420, this.instance, 40, 1, true);
                
                EntityRegistry.registerGlobalEntityID(EntityGiantSpider.class, "giantSpider", EntityRegistry.findGlobalUniqueEntityId(), 0x7AE8FF, 0x47FFE2);
                
                MinecraftForge.EVENT_BUS.register(new EntityEventHandler());
                proxy.registerRender();
                }
                
                @EventHandler
                public void postInit(FMLPostInitializationEvent event)
                {
                
                }
                }
                

                La lance: ```java
                package com.quantumsheep.arkcraft.weapons;

                import com.quantumsheep.arkcraft.ArkCraftMod;
                import com.quantumsheep.arkcraft.entity.EntitySpear;

                import net.minecraft.creativetab.CreativeTabs;
                import net.minecraft.enchantment.Enchantment;
                import net.minecraft.enchantment.EnchantmentHelper;
                import net.minecraft.entity.player.EntityPlayer;
                import net.minecraft.entity.projectile.EntityArrow;
                import net.minecraft.entity.projectile.EntitySnowball;
                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;

                public class WeaponSpear extends Item {

                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(ArkCraftMod.weaponSpear)) //Ici, change par le nom de ton item (Inutile dans le contexte, mais laise toujours )
                {
                float f = (float)j / 5.0F;
                f = (f * f + f * 2.0F) / 3.0F;

                if ((double)f < 0.1D)
                {
                return;
                }

                if (f > 1.0F)
                {
                f = 1.0F;
                }

                EntitySpear entityarrow = new EntitySpear(p_77615_2_, p_77615_3_, f * 2.0F); //Tu a juste a changer le nom de l’entity ici

                if (f == 1.0F)
                {
                entityarrow.setIsCritical(true);
                }

                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); //Ici, change aussi par ton item
                }

                if (!p_77615_2_.isRemote)
                {
                p_77615_2_.spawnEntityInWorld(entityarrow);
                }
                }
                }

                public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_)
                {
                return p_77654_1_;
                }

                public int getMaxItemUseDuration(ItemStack p_77626_1_)
                {
                return 72000;
                }

                public EnumAction getItemUseAction(ItemStack p_77661_1_)
                {
                return EnumAction.bow;
                }

                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(ArkCraftMod.weaponSpear))
                {
                p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_));
                }

                return p_77659_1_;
                }
                }

                
                L'entité de la lance: ```java
                package com.quantumsheep.arkcraft.entity;
                
                import java.util.List;
                import java.util.List;
                
                import cpw.mods.fml.relauncher.Side;
                import cpw.mods.fml.relauncher.SideOnly;
                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 EntitySpear 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 EntitySpear(World p_i1753_1_)
                {
                super(p_i1753_1_);
                this.renderDistanceWeight = 10.0D;
                this.setSize(0.5F, 0.5F);
                }
                
                public EntitySpear(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 EntitySpear(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 EntitySpear(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(Items.arrow, 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;
                }
                }
                
                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  Remplaces ta fonction onPlayerStoppedUsing par celle ci :

                     public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int useTime)
                      {
                           int j = this.getMaxItemUseDuration(stack) - useTime;
                           float f = (float)j / 5.0F;
                           f = (f * f + f * 2.0F) / 3.0F;
                  
                           if ((double)f < 0.1D)
                           {
                               return;
                           }
                  
                           if (f > 1.0F)
                           {
                               f = 1.0F;
                           }
                  
                           EntitySpear entityarrow = new EntitySpear(world, player, f * 2.0F);
                  
                           if (f == 1.0F)
                           {
                               entityarrow.setIsCritical(true);
                           }
                  
                           world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
                  
                           player.setCurrentItemOrArmor(0, null);
                           player.inventory.markDirty();
                  
                           if (!world.isRemote)
                           {
                               world.spawnEntityInWorld(entityarrow);
                           }
                      }
                  
                  1 réponse Dernière réponse Répondre Citer 0
                  • QuantumSheepQ Hors-ligne
                    QuantumSheep
                    dernière édition par

                    Merci, ça fonctionne parfaitement 🙂
                    Maintenant j’ai un problèmes x) Comment je rajoute un model à l’entitée qui est lancé ? (Model déjà exporté)

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      Comme pour n’importe quelle entité. Il faut faire un render.

                      1 réponse Dernière réponse Répondre Citer 0
                      • QuantumSheepQ Hors-ligne
                        QuantumSheep
                        dernière édition par

                        Oui je sais mais tu n’aurais pas un tuto, je suis vraient débutant dans le milieu x)

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002R Hors-ligne
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                          dernière édition par

                          http://www.minecraftforgefrance.fr/showthread.php?tid=648#classe2
                          +
                          http://www.minecraftforgefrance.fr/showthread.php?tid=648#classe4
                          C’est le même principe, sauf qu’au lieu d’utiliser RenderBiped il faut utiliser directement Render. Tu peux aussi t’inspirer des autres rendus de Minecraft.

                          1 réponse Dernière réponse Répondre Citer 0
                          • QuantumSheepQ Hors-ligne
                            QuantumSheep
                            dernière édition par

                            J’ai pris un peut du tuto et la class RenderArrow de minecraft en la modifiant et il me reste un problème au niveau du ClientProxy, Je met cette ligne dans le ClientProxy :

                            RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear(new ModelBase(), 0.5F));
                            

                            et il ne l’accepte pas au niveau du ModelBase.

                            Class principale : ```java
                            package com.quantumsheep.arkcraft;

                            import java.awt.Color;

                            import org.apache.logging.log4j.LogManager;
                            import org.apache.logging.log4j.Logger;

                            import com.quantumsheep.arkcraft.entity.EntityGiantSpider;
                            import com.quantumsheep.arkcraft.entity.EntitySpear;
                            import com.quantumsheep.arkcraft.lib.CommonProxy;
                            import com.quantumsheep.arkcraft.lib.EntityEventHandler;
                            import com.quantumsheep.arkcraft.lib.References;
                            import com.quantumsheep.arkcraft.weapons.WeaponSpear;

                            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.FMLPostInitializationEvent;
                            import cpw.mods.fml.common.event.FMLPreInitializationEvent;
                            import cpw.mods.fml.common.registry.EntityRegistry;
                            import cpw.mods.fml.common.registry.GameRegistry;
                            import cpw.mods.fml.common.registry.LanguageRegistry;
                            import net.minecraft.client.gui.Gui;
                            import net.minecraft.creativetab.CreativeTabs;
                            import net.minecraft.entity.Entity;
                            import net.minecraft.item.Item;
                            import net.minecraft.item.Item.ToolMaterial;
                            import net.minecraftforge.common.MinecraftForge;
                            import net.minecraftforge.common.util.EnumHelper;

                            @Mod(modid = References.MODID, name = “ArkCraft Mod”, version = References.VERSION)

                            public class ArkCraftMod {

                            @Instance(“arkcraft”)
                            public static ArkCraftMod instance;

                            @SidedProxy(clientSide = References.Client, serverSide = References.Common)
                            public static CommonProxy proxy;

                            public static Item weaponSpear;

                            public static final Logger LOGGER = LogManager.getLogger(References.NAME);

                            @EventHandler
                            public void preInit(FMLPreInitializationEvent event)
                            {
                            weaponSpear = new WeaponSpear().setUnlocalizedName(“weaponSpear”).setTextureName(References.MODID + “:weaponSpear”).setCreativeTab(CreativeTabs.tabMaterials);

                            GameRegistry.registerItem(weaponSpear, “weapon_spear”);
                            }

                            @EventHandler
                            public void init(FMLInitializationEvent event)
                            {
                            EntityRegistry.registerGlobalEntityID(EntitySpear.class, “entitySpear”, EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB());
                            EntityRegistry.registerModEntity(EntitySpear.class, “entitySpear”, 420, this.instance, 40, 1, true);

                            EntityRegistry.registerGlobalEntityID(EntityGiantSpider.class, “giantSpider”, EntityRegistry.findGlobalUniqueEntityId(), 0x7AE8FF, 0x47FFE2);

                            MinecraftForge.EVENT_BUS.register(new EntityEventHandler());
                            proxy.registerRender();
                            }

                            @EventHandler
                            public void postInit(FMLPostInitializationEvent event)
                            {

                            }
                            }

                            
                            WeaponSpear : ```java
                            package com.quantumsheep.arkcraft.weapons;
                            
                            import com.quantumsheep.arkcraft.ArkCraftMod;
                            import com.quantumsheep.arkcraft.entity.EntitySpear;
                            
                            import net.minecraft.creativetab.CreativeTabs;
                            import net.minecraft.enchantment.Enchantment;
                            import net.minecraft.enchantment.EnchantmentHelper;
                            import net.minecraft.entity.player.EntityPlayer;
                            import net.minecraft.entity.projectile.EntityArrow;
                            import net.minecraft.entity.projectile.EntitySnowball;
                            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;
                            
                            public class WeaponSpear extends Item {
                            
                                public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int useTime)
                                {
                                     int j = this.getMaxItemUseDuration(stack) - useTime;
                                     float f = (float)j / 5.0F;
                                     f = (f * f + f * 2.0F) / 3.0F;
                            
                                     if ((double)f < 0.1D)
                                     {
                                         return;
                                     }
                            
                                     if (f > 1.0F)
                                     {
                                         f = 1.0F;
                                     }
                            
                                     EntitySpear entityarrow = new EntitySpear(world, player, f * 2.0F);
                            
                                     if (f == 1.0F)
                                     {
                                         entityarrow.setIsCritical(true);
                                     }
                            
                                     world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
                            
                                     player.setCurrentItemOrArmor(0, null);
                                     player.inventory.markDirty();
                            
                                     if (!world.isRemote)
                                     {
                                         world.spawnEntityInWorld(entityarrow);
                                     }
                                }
                            
                            public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_)
                               {
                                   return p_77654_1_;
                               }
                            
                            public int getMaxItemUseDuration(ItemStack p_77626_1_)
                               {
                                   return 72000;
                               }
                            
                            public EnumAction getItemUseAction(ItemStack p_77661_1_)
                               {
                                   return EnumAction.bow;
                               }
                            
                            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(ArkCraftMod.weaponSpear))
                                   {
                                       p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_));
                                   }
                            
                                   return p_77659_1_;
                               }
                            }
                            

                            ModelSpear : ```java
                            package com.quantumsheep.arkcraft.models;

                            import net.minecraft.client.model.ModelBase;
                            import net.minecraft.client.model.ModelRenderer;
                            import net.minecraft.entity.Entity;

                            public class ModelSpear extends ModelBase
                            {
                              //fields
                                ModelRenderer Shape1;

                            public ModelSpear()
                              {
                                textureWidth = 64;
                                textureHeight = 32;

                            Shape1 = new ModelRenderer(this, 0, 0);
                                  Shape1.addBox(0F, 23F, 0F, 14, 1, 1);
                                  Shape1.setRotationPoint(-1F, 0F, 7F);
                                  Shape1.setTextureSize(64, 32);
                                  Shape1.mirror = true;
                                  setRotation(Shape1, 0F, 1.570796F, 0F);
                              }

                            public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
                              {
                                super.render(entity, f, f1, f2, f3, f4, f5);
                                setRotationAngles(f, f1, f2, f3, f4, f5);
                                Shape1.render(f5);
                              }

                            private void setRotation(ModelRenderer model, float x, float y, float z)
                              {
                                model.rotateAngleX = x;
                                model.rotateAngleY = y;
                                model.rotateAngleZ = z;
                              }

                            public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
                              {
                                super.setRotationAngles(f, f1, f2, f3, f4, f5, null);
                              }
                            }

                            
                            RenderSpear : ```java
                            package com.quantumsheep.arkcraft.render;
                            
                            import org.lwjgl.opengl.GL11;
                            import org.lwjgl.opengl.GL12;
                            
                            import com.quantumsheep.arkcraft.entity.EntitySpear;
                            import com.quantumsheep.arkcraft.lib.References;
                            
                            import net.minecraft.client.model.ModelBiped;
                            import net.minecraft.client.renderer.Tessellator;
                            import net.minecraft.client.renderer.entity.Render;
                            import net.minecraft.entity.Entity;
                            import net.minecraft.entity.EntityLiving;
                            import net.minecraft.entity.projectile.EntityArrow;
                            import net.minecraft.util.MathHelper;
                            import net.minecraft.util.ResourceLocation;
                            
                            public class RenderSpear extends Render
                            {
                            private static final ResourceLocation spearTextures = new ResourceLocation("textures/entity/arrow.png");
                                private static final String __OBFID = "CL_00000978";
                            
                                /**
                                 * 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="" func_76986_a(t="" entity,="" double="" d,="" d1,<br="">     * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
                                 */
                                public void doRender(EntitySpear p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
                                {
                                    this.bindEntityTexture(p_76986_1_);
                                    GL11.glPushMatrix();
                                    GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_);
                                    GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
                                    GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 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)p_76986_1_.arrowShake - p_76986_9_;
                            
                                    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();
                                }
                            
                                /**
                                 * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                                 */
                                protected ResourceLocation getEntityTexture(EntitySpear p_110775_1_)
                                {
                                    return spearTextures;
                                }
                            
                                /**
                                 * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
                                 */
                                protected ResourceLocation getEntityTexture(Entity p_110775_1_)
                                {
                                    return this.getEntityTexture((EntitySpear)p_110775_1_);
                                }
                            
                                /**
                                 * 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="" func_76986_a(t="" entity,="" double="" d,="" d1,<br="">     * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
                                 */
                                public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_)
                                {
                                    this.doRender((EntitySpear)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
                                }
                            }
                            ```</t></t>
                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002R Hors-ligne
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                              dernière édition par

                              Pourquoi ModelBase ? Ton modèle s’appelle ModelSpear. Et le code de rendu n’est pas bon pour ce que tu veux faire, le rendu de la flèche rend directement la flèche et non un modèle.

                              1 réponse Dernière réponse Répondre Citer 0
                              • QuantumSheepQ Hors-ligne
                                QuantumSheep
                                dernière édition par

                                J’ai remplacer comme ça : ```java
                                RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear(ModelSpear(), 0.5F));

                                
                                Et ça ne fonctionne pas, il me met une erreur sur ModelSpear.
                                
                                Tu n'aurais pas un code qui me montrerais comment faire ? :'(
                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002R Hors-ligne
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                  dernière édition par

                                  Un exemple de rendu :
                                  https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/client/renderer/RenderSatelite.java
                                  Le modèle ne passe pas par le constructeur, donc c’est enregistré directement comme ça :
                                  https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/core/ClientProxy.java#L81

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • QuantumSheepQ Hors-ligne
                                    QuantumSheep
                                    dernière édition par

                                    Ok, c’est bon, le model se génère bien, seul problème c’est que la lance est décalée et quand je la lance elle se tp plus en hauteur…

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • SCAREXS Hors-ligne
                                      SCAREX
                                      dernière édition par

                                      Après il faut changer comment est rendu ton model avec des translations et des rotations. Il faut juste vérifier que le problème ne soit qu’au rendu et pas au niveau de la hitbox, fait F3+B pour voir les hitbox.

                                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                                      Pas de demandes de support par MP ni par skype SVP.
                                      Je n'accepte sur skype que l…

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • QuantumSheepQ Hors-ligne
                                        QuantumSheep
                                        dernière édition par

                                        C’est la même Hitbox qu’une flèche c’est bizarre que ça ne fonctionne pas… Voilà mon model Techne en pièce jointe (Modèle provisoire).

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • QuantumSheepQ Hors-ligne
                                          QuantumSheep
                                          dernière édition par

                                          Personne n’a de solution à ce décalage ? :'(___Ah et nouveau problème (Triple poste oklm), Quand j’utilise n’importe quel autre item que je créer (Même sans méthodes juste un item normal) il envois l’entitée de la lance et se charge O_o

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • robin4002R Hors-ligne
                                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                            dernière édition par

                                            Envoies nous ton code. Et pour le décalage il suffit de faire un petit GL11.glTranslate dans le code du rendu.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 2 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB