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.
    • 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
                                  • QuantumSheepQ Hors-ligne
                                    QuantumSheep
                                    dernière édition par

                                    Voilà le github avec les derniers codes : https://github.com/ArkCraft/ArkCraft/tree/master/src/main
                                    ça sera surement plus pratique 😜

                                    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

                                      Il n’y a qu’un item sur le github.

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

                                        Oui, je viens de changer : https://github.com/ArkCraft/ArkCraftMod/

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

                                          Fais un peu d’ordre dans ton code, y’a pas besoin de 40 glScale à la suite.

                                          Dans ton glTranslate, rajoute un -1 sur l’axe y, il faut changer ces valeurs pour avoir la bonne.

                                          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 le render originel de la flèche 😉
                                            Comment je change pour -1, je n’ai aucunes connaissances en GL 😛

                                            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