MFF

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

    Problème Render Entity + Son échelle

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    11 Messages 4 Publieurs 2.5k 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.
    • Maxx_QcM Hors-ligne
      Maxx_Qc
      dernière édition par

      Salut à tous j’ai deux problèmes.
      1. L’échelle ne fait aucun son lorsque l’on se déplace deçu
      :::

      package qc.maxx.blocks;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockLadder;
      import net.minecraft.block.material.Material;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.Entity;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.World;
      import cpw.mods.fml.common.registry.GameRegistry;
      
      public class BlockIronLadder extends BlockLadder
      {
      public BlockIronLadder() {
      super();
      setBlockTextureName("EpicOres:iron_ladder");
      setStepSound(Block.soundTypeMetal);
      setCreativeTab(CreativeTabs.tabDecorations);
      setHardness(0.6F);
      setResistance(2.0F);
      }
      
      @Override
      public Material getMaterial() {
      return Material.iron;
      }
      
      @Override
      public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
      if (entity.onGround || entity.isCollidedVertically) {
      return;
      }
      
      if(entity.motionY >= 0.1) {
      entity.setPosition(entity.posX, entity.posY + 0.2F, entity.posZ);
      } else if(entity.motionY <= -0.1) {
      Block blockUnder = entity.worldObj.getBlock(MathHelper.floor_double(entity.posX), MathHelper.floor_double(entity.posY) - 3, MathHelper.floor_double(entity.posZ));
      if (blockUnder == null || blockUnder == this) {
      entity.setPosition(entity.posX, entity.posY - 0.2F, entity.posZ);
      }
      }
      }
      }
      

      :::

      2. J’ai ajouté une dynamite basé sur les anciennes versions du mod Balkon’s weapon mais j’ai un problème.
      Lorsque je fais clique droit la dynamite se lance mais affiche comme une flèche, le render ne fonctionne pas.

      :::

      package qc.maxx.items;
      
      import qc.maxx.entity.EntityDynamite;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.world.World;
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      
      public class ItemDynamite extends Item
      {
      public ItemDynamite()
      {
      super();
      setTextureName("EpicOres:dynamite");
      setMaxStackSize(64);
      setFull3D();
      setCreativeTab(CreativeTabs.tabCombat);
      }
      
      public int getItemEnchantability()
      {
      return 0;
      }
      
      public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
      {
      if (entityplayer.inventory.consumeInventoryItem(this))
      {
      world.playSoundAtEntity(entityplayer, "game.tnt.primed", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 0.8F));
      if (!world.isRemote)
      {
      world.spawnEntityInWorld(new EntityDynamite(world, entityplayer, 40 + itemRand.nextInt(10)));
      }
      }
      return itemstack;
      }
      
      @SideOnly(Side.CLIENT)
      public boolean shouldRotateAroundWhenRendering()
      {
      return true;
      }
      
      @SideOnly(Side.CLIENT)
      public boolean isFull3D()
      {
      return true;
      }
      }
      

      :::

      :::

      package qc.maxx.entity;
      
      import qc.maxx.ores.EpicOres;
      import qc.maxx.other.PhysHelper;
      import qc.maxx.other.WeaponDamageSource;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.util.DamageSource;
      import net.minecraft.util.MathHelper;
      import net.minecraft.util.MovingObjectPosition;
      import net.minecraft.world.World;
      
      public class EntityDynamite extends EntityProjectile
      {
      private int explodefuse;
      private boolean extinguished;
      
      public EntityDynamite(World world)
      {
      super(world);
      setPickupMode(NO_PICKUP);
      extinguished = false;
      explodefuse = rand.nextInt(30) + 20;
      }
      
      public EntityDynamite(World world, double d, double d1, double d2)
      {
      this(world);
      setPosition(d, d1, d2);
      }
      
      public EntityDynamite(World world, EntityLivingBase entityliving, int i)
      {
      this(world);
      shootingEntity = entityliving;
      setLocationAndAngles(entityliving.posX, entityliving.posY + entityliving.getEyeHeight(), entityliving.posZ, entityliving.rotationYaw, entityliving.rotationPitch);
      posX -= MathHelper.cos((rotationYaw / 180F) * 3.141593F) * 0.16F;
      posY -= 0.1D;
      posZ -= MathHelper.sin((rotationYaw / 180F) * 3.141593F) * 0.16F;
      setPosition(posX, posY, posZ);
      motionX = -MathHelper.sin((rotationYaw / 180F) * 3.141593F) * MathHelper.cos((rotationPitch / 180F) * 3.141593F);
      motionZ = MathHelper.cos((rotationYaw / 180F) * 3.141593F) * MathHelper.cos((rotationPitch / 180F) * 3.141593F);
      motionY = -MathHelper.sin((rotationPitch / 180F) * 3.141593F);
      setThrowableHeading(motionX, motionY, motionZ, 0.7F, 4.0F);
      explodefuse = i;
      }
      
      @Override
      protected void entityInit()
      {
      }
      
      @Override
      public void onUpdate()
      {
      super.onUpdate();
      
      if (!inGround && !beenInGround)
      {
      rotationPitch -= 50F;
      } else
      {
      rotationPitch = 180F;
      }
      
      if (isInWater()) if (!extinguished)
      {
      extinguished = true;
      worldObj.playSoundAtEntity(this, "random.fizz", 1.0F, 1.2F / (rand.nextFloat() * 0.2F + 0.9F));
      for (int k = 0; k < 8; k++)
      {
      float f6 = 0.25F;
      worldObj.spawnParticle("explode", posX - motionX * f6, posY - motionY * f6, posZ - motionZ * f6, motionX, motionY, motionZ);
      }
      }
      
      explodefuse–;
      if (!extinguished) if (explodefuse <= 0)
      {
      detonate();
      setDead();
      } else if (explodefuse > 0)
      {
      worldObj.spawnParticle("smoke", posX, posY, posZ, 0.0D, 0.0D, 0.0D);
      }
      }
      
      @Override
      public void onEntityHit(Entity entity)
      {
      DamageSource damagesource = null;
      if (shootingEntity == null)
      {
      damagesource = WeaponDamageSource.causeProjectileWeaponDamage(this, this);
      } else
      {
      damagesource = WeaponDamageSource.causeProjectileWeaponDamage(this, shootingEntity);
      }
      if (entity.attackEntityFrom(damagesource, 1))
      {
      applyEntityHitEffects(entity);
      playHitSound();
      setVelocity(0D, 0D, 0D);
      ticksInAir = 0;
      }
      }
      
      @Override
      public void onGroundHit(MovingObjectPosition mop)
      {
      xTile = mop.blockX;
      yTile = mop.blockY;
      zTile = mop.blockZ;
      inTile = worldObj.getBlock(xTile, yTile, zTile);
      motionX = (float) (mop.hitVec.xCoord - posX);
      motionY = (float) (mop.hitVec.yCoord - posY);
      motionZ = (float) (mop.hitVec.zCoord - posZ);
      float f1 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ);
      posX -= (motionX / f1) * 0.05D;
      posY -= (motionY / f1) * 0.05D;
      posZ -= (motionZ / f1) * 0.05D;
      
      motionX *= -0.2D;
      motionZ *= -0.2D;
      if (mop.sideHit == 1)
      {
      inGround = true;
      beenInGround = true;
      } else
      {
      inGround = false;
      worldObj.playSoundAtEntity(this, "random.fizz", 1.0F, 1.2F / (rand.nextFloat() * 0.2F + 0.9F));
      }
      
      if (inTile != null)
      {
      inTile.onEntityCollidedWithBlock(worldObj, xTile, yTile, zTile, this);
      }
      }
      
      private void detonate()
      {
      if (worldObj.isRemote) return;
      if (extinguished) if (ticksInGround >= 200 || ticksInAir >= 200)
      {
      setDead();
      }
      float f = 2.0F;
      PhysHelper.createAdvancedExplosion(worldObj, this, posX, posY, posZ, f, true, true);
      }
      
      @Override
      public boolean aimRotation()
      {
      return false;
      }
      
      @Override
      public int getMaxArrowShake()
      {
      return 0;
      }
      
      @Override
      public ItemStack getPickupItem()
      {
      return new ItemStack(EpicOres.ItemDynamite, 1);
      }
      
      @Override
      public float getShadowSize()
      {
      return 0.2F;
      }
      
      @Override
      public void playHitSound()
      {
      worldObj.playSoundAtEntity(this, "random.fizz", 1.0F, 1.2F / (rand.nextFloat() * 0.2F + 0.9F));
      }
      
      @Override
      public void writeEntityToNBT(NBTTagCompound nbttagcompound)
      {
      super.writeEntityToNBT(nbttagcompound);
      nbttagcompound.setByte("fuse", (byte) explodefuse);
      nbttagcompound.setBoolean("off", extinguished);
      }
      
      @Override
      public void readEntityFromNBT(NBTTagCompound nbttagcompound)
      {
      super.readEntityFromNBT(nbttagcompound);
      explodefuse = nbttagcompound.getByte("fuse");
      extinguished = nbttagcompound.getBoolean("off");
      }
      }
      

      :::

      :::

      package qc.maxx.other;
      
      import net.minecraft.client.renderer.Tessellator;
      import net.minecraft.client.renderer.entity.Render;
      import net.minecraft.entity.Entity;
      import net.minecraft.util.MathHelper;
      import net.minecraft.util.ResourceLocation;
      
      import org.lwjgl.opengl.GL11;
      
      import qc.maxx.entity.EntityDynamite;
      
      public class RenderDynamite extends Render
      {
      public void renderDynamite(EntityDynamite entityarrow, double d, double d1, double d2, float f, float f1)
      {
      bindEntityTexture(entityarrow);
      GL11.glPushMatrix();
      GL11.glTranslatef((float) d, (float) d1, (float) d2);
      GL11.glRotatef(entityarrow.rotationYaw + 90F, 0.0F, 1.0F, 0.0F);
      GL11.glRotatef(entityarrow.prevRotationPitch + (entityarrow.rotationPitch - entityarrow.prevRotationPitch) * f1, 0.0F, 0.0F, 1.0F);
      Tessellator tessellator = Tessellator.instance;
      int i = 0;
      float f2 = 0.0F;
      float f3 = 0.5F;
      float f4 = (0 + i * 10) / 32F;
      float f5 = (5 + i * 10) / 32F;
      float f6 = 0.0F;
      float f7 = 0.15625F;
      float f8 = (5 + i * 10) / 32F;
      float f9 = (10 + i * 10) / 32F;
      float f10 = 0.05625F;
      GL11.glEnable(32826 /*GL_RESCALE_NORMAL_EXT*/);
      float f11 = -f1;
      if (f11 > 0.0F)
      {
      float f12 = -MathHelper.sin(f11 * 3F) * f11;
      GL11.glRotatef(f12, 0.0F, 0.0F, 1.0F);
      }
      GL11.glRotatef(45F, 1.0F, 0.0F, 0.0F);
      GL11.glScalef(f10, f10, f10);
      GL11.glTranslatef(-4F, 0.0F, 0.0F);
      GL11.glNormal3f(f10, 0.0F, 0.0F);
      tessellator.startDrawingQuads();
      tessellator.addVertexWithUV(-7D, -2D, -2D, f6, f8);
      tessellator.addVertexWithUV(-7D, -2D, 2D, f7, f8);
      tessellator.addVertexWithUV(-7D, 2D, 2D, f7, f9);
      tessellator.addVertexWithUV(-7D, 2D, -2D, f6, f9);
      tessellator.draw();
      GL11.glNormal3f(-f10, 0.0F, 0.0F);
      tessellator.startDrawingQuads();
      tessellator.addVertexWithUV(-7D, 2D, -2D, f6, f8);
      tessellator.addVertexWithUV(-7D, 2D, 2D, f7, f8);
      tessellator.addVertexWithUV(-7D, -2D, 2D, f7, f9);
      tessellator.addVertexWithUV(-7D, -2D, -2D, f6, f9);
      tessellator.draw();
      for (int j = 0; j < 4; j++)
      {
      GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F);
      GL11.glNormal3f(0.0F, 0.0F, f10);
      tessellator.startDrawingQuads();
      tessellator.addVertexWithUV(-8D, -2D, 0.0D, f2, f4);
      tessellator.addVertexWithUV(8D, -2D, 0.0D, f3, f4);
      tessellator.addVertexWithUV(8D, 2D, 0.0D, f3, f5);
      tessellator.addVertexWithUV(-8D, 2D, 0.0D, f2, f5);
      tessellator.draw();
      }
      
      GL11.glDisable(32826 /*GL_RESCALE_NORMAL_EXT*/);
      GL11.glPopMatrix();
      }
      
      public float pitch = 40F;
      
      @Override
      public void doRender(Entity entity, double d, double d1, double d2, float f, float f1)
      {
      renderDynamite((EntityDynamite) entity, d, d1, d2, f, f1);
      }
      
      @Override
      protected ResourceLocation getEntityTexture(Entity entity)
      {
      return RenderResource.Textures.DYNAMITE;
      }
      }
      

      :::

      :::

      package qc.maxx.other;
      
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      import net.minecraft.util.ResourceLocation;
      
      @SideOnly(Side.CLIENT)
      public abstract class RenderResource
      {
      public static abstract class Textures
      {
      public static final ResourceLocation DYNAMITE = new ResourceLocation("epicores", "textures/entity/dynamite.png");
      }
      }
      

      :::

      :::

      package qc.maxx.ores;
      
      import qc.maxx.other.MsgExplosion;
      import qc.maxx.other.WMMessagePipeline;
      import net.minecraftforge.common.MinecraftForge;
      
      public class CommonProxy
      {
      public void registerRender()
      {
      }
      }
      

      :::

      :::

      package qc.maxx.ores;
      
      import net.minecraftforge.common.MinecraftForge;
      import qc.maxx.entity.EntityDynamite;
      import qc.maxx.other.RenderDynamite;
      import qc.maxx.other.WMMessagePipeline;
      import cpw.mods.fml.client.registry.RenderingRegistry;
      import cpw.mods.fml.common.FMLCommonHandler;
      import cpw.mods.fml.relauncher.Side;
      
      public class ClientProxy extends CommonProxy
      {
       @Override
       public void registerRender()
       {
         RenderingRegistry.registerEntityRenderingHandler(EntityDynamite.class, new RenderDynamite());
       }
      }
      

      :::

      :::

      package qc.maxx.ores;
      
      import java.io.File;
      import java.util.Random;
      import java.util.logging.Level;
      
      import org.apache.logging.log4j.LogManager;
      import org.apache.logging.log4j.Logger;
      
      import cpw.mods.fml.common.Mod.EventHandler;
      import cpw.mods.fml.common.Mod.Instance;
      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.GameRegistry;
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.init.Blocks;
      import net.minecraft.init.Items;
      import net.minecraft.item.Item;
      import net.minecraft.item.Item.ToolMaterial;
      import net.minecraft.item.ItemArmor.ArmorMaterial;
      import net.minecraft.item.ItemStack;
      import net.minecraft.potion.Potion;
      import net.minecraft.potion.PotionEffect;
      import qc.maxx.other.WMMessagePipeline;
      import qc.maxx.items.*;
      
      @cpw.mods.fml.common.Mod(modid="EpicOres", name="EpicOres", version="1.0")
      public class EpicOres
      {
      @Instance("EpicOres")
      public static EpicOres instance;
      public WMMessagePipeline messagePipeline;
      
      public EpicOres()
      {
      messagePipeline = new WMMessagePipeline();
      }
      
      @cpw.mods.fml.common.SidedProxy(clientSide="qc.maxx.ores.ClientProxy", serverSide="qc.maxx.ores.CommonProxy")
      public static CommonProxy proxy;
      public static String MODID = "EpicOres";
      public static String VERSION = "1.0";
      public static final Logger logger = LogManager.getLogger("EpicOres");
      public static boolean debug_enableConsole = false;
      public static boolean debug_enableChat = false;
      
      public static Item ItemDynamite;
      
        @EventHandler
        public void PreInit(FMLPreInitializationEvent event)
        {
      ItemDynamite = new ItemDynamite().setUnlocalizedName("ItemDynamite");
      GameRegistry.registerItem(ItemDynamite, ItemDynamite.getUnlocalizedName());
      
      messagePipeline.initalize();
        }
      
        @EventHandler
        public void Init(FMLInitializationEvent event)
        {
        proxy.registerRender();
        OreGeneration eventmanager = new OreGeneration();
           proxy.registerRender();
      
           GameRegistry.registerWorldGenerator(eventmanager, 1);
        }
      
        @EventHandler
        public void PostInit(FMLPostInitializationEvent event)
        {
        messagePipeline.postInitialize();
        OreGeneration eventmanager = new OreGeneration();
        }
      }
      

      :::

      Merci à tous ceux qui pourront m’aider et ceux qui ont prit le temps de lire 🙂

      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

        EntityDynamite n’est pas enregistré.

        return RenderResource.Textures.DYNAMITE;

        • ta classe RenderResource.java
          WHAT !?! je ne vois pas du tout l’intérêt.

        Tu dois utiliser le même rendu que la boule de neige si tu veux rendre un item. Ce n’est pas du tout comme ça qu’il faut faire.

        Pour le son de l’échèle il faut trouver où est joué celui de Minecraft.

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

          @‘robin4002’:

          EntityDynamite n’est pas enregistré.

          return RenderResource.Textures.DYNAMITE;

          • ta classe RenderResource.java
            WHAT !?! je ne vois pas du tout l’intérêt.

          Tu dois utiliser le même rendu que la boule de neige si tu veux rendre un item. Ce n’est pas du tout comme ça qu’il faut faire.

          Pour le son de l’échèle il faut trouver où est joué celui de Minecraft.

          J’ai supprimé la classe RenderResource 😛
          J’ai enregistré l’entity dynamite dans le preinit: EntityRegistry.registerModEntity(EntityDynamite.class, “dynamite”, 7, this, 64, 3, true);
          Cependant, quand je lance une dynamite elle s’affiche bien, mais parfois elle disparaît un peu avant d’exploser ce qui est embêtant.
          J’ai essayé de trouver où est jouer le son de l’échelle mais j’ai pas encore trouvé

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

            UP! Please 😞

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

              Essaie de recréer ta propre entité, car les classes de minecraft sont buguées.

              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
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Code après modif ?
                à mon avis pour le son c’est joué directement dans entity player. Donc faudrait passer par un event (de tick par exemple).

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

                  @‘SCAREX’:

                  Essaie de recréer ta propre entité, car les classes de minecraft sont buguées.

                  J’ai réglé le problème 🙂

                  @‘robin4002’:

                  Code après modif ?
                  à mon avis pour le son c’est joué directement dans entity player. Donc faudrait passer par un event (de tick par exemple).

                  Pourrais-tu me dire comment faire?
                  Je n’ai jamais utilisé les event

                  1 réponse Dernière réponse Répondre Citer 0
                  • DiabolicaTrixD Hors-ligne
                    DiabolicaTrix Correcteurs Moddeurs confirmés
                    dernière édition par

                    http://www.minecraftforgefrance.fr/showthread.php?tid=716

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

                      Je dois passé par quel event du coup?

                      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

                        TickEvent.PlayerTickEvent je pense.
                        Il faudrait vérifier qu’au coordonnée du joueur il y a une échelle, si oui jouer le son. Si le son est lancé en boucle faut faire un timer.

                        ÉDIT : je viens de faire aussi des recherches sur tous le projet Minecraft, impossible de trouver où le son de l’échelle est joué o_O
                        La recherche de “step.ladder” me renvoie 0 résultat !?!

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

                          @‘robin4002’:

                          TickEvent.PlayerTickEvent je pense.
                          Il faudrait vérifier qu’au coordonnée du joueur il y a une échelle, si oui jouer le son. Si le son est lancé en boucle faut faire un timer.

                          ÉDIT : je viens de faire aussi des recherches sur tous le projet Minecraft, impossible de trouver où le son de l’échelle est joué o_O
                          La recherche de “step.ladder” me renvoie 0 résultat !?!

                          Je sais, idem pour moi.
                          Du coup je vais laisser tomber le son, c’est trop compliqué et je ne veux pas que ça cause de lag

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

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB