MFF

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

    Problème de position sur une EntitySittableBlock

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    16 Messages 4 Publieurs 4.8k 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.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      A quoi te servent les variables blockPosX, blockPosY et blockPosZ ?

      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
      • DeletedD Hors-ligne
        Deleted
        dernière édition par

        @‘SCAREX’:

        A quoi te servent les variables blockPosX, blockPosY et blockPosZ ?

        Ce sont les coordonnées du block donc de l’entity puisque l’entity spawn aux mêmes coordonnées que celles du block
        Regarde les méthodes dans mon block, elles t’aideront à comprendre les NBTTag que j’ai utilisés

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

          @‘Julot10085’:

          @‘SCAREX’:

          A quoi te servent les variables blockPosX, blockPosY et blockPosZ ?

          Ce sont les coordonnées du block donc de l’entity puisque l’entity spawn aux mêmes coordonnées que celles du block
          Regarde les méthodes dans mon block, elles t’aideront à comprendre les NBTTag que j’ai utilisés

          Bah justement, d’après ce que je vois, ces variables ne sont pas utilisées en tant que coordonnés à cause du this.setPosition(x,y,z) mais elles sont utilisées dans les NBT, regarde comment sont enregistrées les autres entités.

          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
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

            @‘SCAREX’:

            @‘Julot10085’:

            @‘SCAREX’:

            A quoi te servent les variables blockPosX, blockPosY et blockPosZ ?

            Ce sont les coordonnées du block donc de l’entity puisque l’entity spawn aux mêmes coordonnées que celles du block
            Regarde les méthodes dans mon block, elles t’aideront à comprendre les NBTTag que j’ai utilisés

            Bah justement, d’après ce que je vois, ces variables ne sont pas utilisées en tant que coordonnés à cause du this.setPosition(x,y,z) mais elles sont utilisées dans les NBT, regarde comment sont enregistrées les autres entités.

            Je n’ai pas trouvé grand chose mais je ne comprends j’ai copié collé le code du github de MFF ainsi que j’ai aussi essayé le github de MrCrayFish de son mod furnitur rien ne marche. Je ne vois plus quoi faire surtout que c’est toujours le même bug….

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

              @‘Julot10085’:

              @‘SCAREX’:

              @‘Julot10085’:

              @‘SCAREX’:

              A quoi te servent les variables blockPosX, blockPosY et blockPosZ ?

              Ce sont les coordonnées du block donc de l’entity puisque l’entity spawn aux mêmes coordonnées que celles du block
              Regarde les méthodes dans mon block, elles t’aideront à comprendre les NBTTag que j’ai utilisés

              Bah justement, d’après ce que je vois, ces variables ne sont pas utilisées en tant que coordonnés à cause du this.setPosition(x,y,z) mais elles sont utilisées dans les NBT, regarde comment sont enregistrées les autres entités.

              Je n’ai pas trouvé grand chose mais je ne comprends j’ai copié collé le code du github de MFF ainsi que j’ai aussi essayé le github de MrCrayFish de son mod furnitur rien ne marche. Je ne vois plus quoi faire surtout que c’est toujours le même bug….

              Pas trouvé grand chose ? regarde les entityThrowable, les entityLiving, etc.

              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
              • DeletedD Hors-ligne
                Deleted
                dernière édition par

                Attends j’ai pas tout compris le soucis est qu’à un certain moment les coordonnées ne sont plus les bonnes en quoi regarder une entityThrowable va m’aider ? Les entityThrowable ne sont pas montées.

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

                  @‘Julot10085’:

                  Attends j’ai pas tout compris le soucis est qu’à un certain moment les coordonnées ne sont plus les bonnes en quoi regarder une entityThrowable va m’aider ? Les entityThrowable ne sont pas montées.

                  Le problème est que ta classe est issue d’une classe abstraite, je pense que ton entité est mal positionnée dans le monde, donc si tu regardes comment sont faites les autres classes extends Entity, tu pourras t’en inspirer. J’aimerais plus t’aider mais je n’ai actuellement pas accès aux sources de Minecraft.

                  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
                  • DeletedD Hors-ligne
                    Deleted
                    dernière édition par

                    @‘SCAREX’:

                    @‘Julot10085’:

                    Attends j’ai pas tout compris le soucis est qu’à un certain moment les coordonnées ne sont plus les bonnes en quoi regarder une entityThrowable va m’aider ? Les entityThrowable ne sont pas montées.

                    Le problème est que ta classe est issue d’une classe abstraite, je pense que ton entité est mal positionnée dans le monde, donc si tu regardes comment sont faites les autres classes extends Entity, tu pourras t’en inspirer. J’aimerais plus t’aider mais je n’ai actuellement pas accès aux sources de Minecraft.

                    Ok je regarderai demain et j’éditerai mon message si je trouve quelque chose qui me paraît important 🙂

                    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 me semble qu’on a le même problème sur FFMT lib.
                      Je viens de regarder un peu Entity.java
                      Et je viens de voir cette fonction :

                      ​    public void updateRiderPosition()
                      
                          {
                              if (this.riddenByEntity != null)
                              {
                                  this.riddenByEntity.setPosition(this.posX, this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset(), this.posZ);
                              }
                          }
                      

                      Du-coup je pense qu’il faudrait override la fonction getMountedYOffset() et changer sa valeur. Donc en gros ajouter dans la classe de ton entité :

                      ​    public double getMountedYOffset()
                      
                          {
                              return 0.5D; // ou autre valeur, à tester. Par défaut c'est return (double)this.height * 0.75D;
                          }
                      
                      1 réponse Dernière réponse Répondre Citer 0
                      • EmotionFoxE Hors-ligne
                        EmotionFox
                        dernière édition par

                        Ce serait vraiment sympa un tutoriel à propos d’une chaise 😄 Une question, c’est possible de s’asseoir sur un bloc et non une entité ?

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

                          @‘EmotionFox’:

                          Ce serait vraiment sympa un tutoriel à propos d’une chaise 😄 Une question, c’est possible de s’asseoir sur un bloc et non une entité ?

                          Non, mais tu peux créer une entité à l’emplacement du bloc et la supprimer lorsque le bloc est détruit.

                          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
                          • DeletedD Hors-ligne
                            Deleted
                            dernière édition par

                            @‘robin4002’:

                            Il me semble qu’on a le même problème sur FFMT lib.
                            Je viens de regarder un peu Entity.java
                            Et je viens de voir cette fonction :

                            ​    public void updateRiderPosition()
                            
                                {
                                    if (this.riddenByEntity != null)
                                    {
                                        this.riddenByEntity.setPosition(this.posX, this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset(), this.posZ);
                                    }
                                }
                            

                            Du-coup je pense qu’il faudrait override la fonction getMountedYOffset() et changer sa valeur. Donc en gros ajouter dans la classe de ton entité :

                            ​    public double getMountedYOffset()
                            
                                {
                                    return 0.5D; // ou autre valeur, à tester. Par défaut c'est return (double)this.height * 0.75D;
                                }
                            

                            Cela ne marche toujours pas : c’est le même bug voici mon code actuelle

                            
                            package mrplaigon.zombarcraftserver.zombarcraftmod.common.entity.other;
                            
                            import net.minecraft.entity.Entity;
                            import net.minecraft.entity.player.EntityPlayer;
                            import net.minecraft.nbt.NBTTagCompound;
                            import net.minecraft.world.World;
                            
                            public class EntitySittableBlock extends Entity
                            {
                            public int blockPosX;
                            public int blockPosY;
                            public int blockPosZ;
                            
                            public EntitySittableBlock(World world)
                            {
                            super(world);
                            this.noClip = true;
                            this.preventEntitySpawning = true;
                            this.setSize(0.0F, 0.0F);
                            }
                            
                            public EntitySittableBlock(World world, EntityPlayer entityplayer, int x, int y, int z, float entityX, float entityY, float entityZ)
                            {
                            this(world);
                            this.blockPosX = x;
                            this.blockPosY = y;
                            this.blockPosZ = z;
                            this.setPosition(entityX, entityY, entityZ);
                            }
                            
                            public boolean interact(EntityPlayer entityplayer)
                            {
                            if(this.riddenByEntity != null)
                            {
                            return true;
                            }
                            
                            if(!this.worldObj.isRemote)
                            {
                            entityplayer.mountEntity(this);
                            }
                            return true;
                            }
                            
                                public void updateRiderPosition()
                                {
                                    if (this.riddenByEntity != null)
                                    {
                                        this.riddenByEntity.setPosition(this.posX, this.posY + this.getMountedYOffset() + this.riddenByEntity.getYOffset(), this.posZ);
                                    }
                                }
                            
                                public double getMountedYOffset()
                            
                                {
                                    return 0.5D; // ou autre valeur, à tester. Par défaut c'est return (double)this.height * 0.75D;
                                }
                            
                            public void onEntityUpdate()
                            {
                            if(this.riddenByEntity == null || this.riddenByEntity.isDead)
                            {
                            this.setDead();
                            }
                            super.onEntityUpdate();
                            }
                            
                            @Override
                            public void readEntityFromNBT(NBTTagCompound compound)
                            {
                            // super.readEntityFromNBT(compound);
                            }
                            
                            @Override
                            public void writeEntityToNBT(NBTTagCompound compound)
                            {
                            // super.writeEntityToNBT(compound);
                            }
                            
                            @Override
                            protected void entityInit()
                            {
                            
                            }
                            }
                            
                            
                            1 réponse Dernière réponse Répondre Citer 0
                            • SCAREXS Hors-ligne
                              SCAREX
                              dernière édition par

                              Je suis arrivé à çà :

                              
                              package fr.scarex.st18.ST18Blocks;
                              
                              import java.util.List;
                              
                              import net.minecraft.block.Block;
                              import net.minecraft.block.material.Material;
                              import net.minecraft.block.state.IBlockState;
                              import net.minecraft.creativetab.CreativeTabs;
                              import net.minecraft.entity.Entity;
                              import net.minecraft.entity.EntityLivingBase;
                              import net.minecraft.entity.player.EntityPlayer;
                              import net.minecraft.item.ItemStack;
                              import net.minecraft.util.AxisAlignedBB;
                              import net.minecraft.util.BlockPos;
                              import net.minecraft.util.EnumFacing;
                              import net.minecraft.world.World;
                              import net.minecraftforge.fml.common.registry.GameRegistry;
                              
                              import com.google.common.base.Predicate;
                              import com.google.common.collect.Lists;
                              
                              import fr.scarex.st18.ST18;
                              import fr.scarex.st18.ST18Entity.EntitySit;
                              
                              public class BlockSittable extends Block
                              {
                              private static final String name = "block_sittable";
                              
                              protected BlockSittable() {
                              super(Material.rock);
                              GameRegistry.registerBlock(this, name);
                              setUnlocalizedName(ST18.MODID + "_" + name);
                              setCreativeTab(CreativeTabs.tabBlock);
                              }
                              
                              public static final String getName() {
                              return name;
                              }
                              
                              @Override
                              public boolean onBlockActivated(World worldIn, final BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) {
                              if (!worldIn.isRemote) {
                              List list = worldIn.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(pos.getX() + minX - 1.0D, pos.getY() + minY - 1.0D, pos.getZ() + minZ - 1.0D, pos.getX() + maxX + 1.0D, pos.getY() + maxY + 1.0D, pos.getZ() + maxZ + 1.0D), new Predicate(){
                              @Override
                              public boolean apply(Object input) {
                              return input instanceof EntitySit && ((Entity)input).getPosition().equals(pos);
                              }
                              });
                              if (list.size() > 0) {
                              playerIn.mountEntity((Entity) list.get(0));
                              } else {
                              worldIn.spawnEntityInWorld(new EntitySit(worldIn, pos));
                              }
                              }
                              return true;
                              }
                              
                              @Override
                              public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) {
                              if (!worldIn.isRemote) worldIn.spawnEntityInWorld(new EntitySit(worldIn, pos));
                              }
                              }
                              
                              
                              package fr.scarex.st18.ST18Entity;
                              
                              import fr.scarex.st18.ST18Blocks.BlockSittable;
                              import fr.scarex.st18.ST18Blocks.ST18Blocks;
                              import net.minecraft.entity.Entity;
                              import net.minecraft.entity.EntityHanging;
                              import net.minecraft.util.AxisAlignedBB;
                              import net.minecraft.util.BlockPos;
                              import net.minecraft.util.EnumFacing;
                              import net.minecraft.world.World;
                              
                              public class EntitySit extends EntityHanging
                              {
                              public EntitySit(World worldIn, BlockPos pos) {
                              super(worldIn, pos);
                              this.field_174860_b = EnumFacing.NORTH;
                              this.setLocationAndAngles(pos.getX() + 0.5D, pos.getY(), pos.getZ() + 0.5D, 0.0F, 0.0F);
                              setEntityBoundingBox(new AxisAlignedBB(this.hangingPosition.getX(), this.hangingPosition.getY(), this.hangingPosition.getZ(), this.hangingPosition.getX() + 1.0D, this.hangingPosition.getY() + 1.0D, this.hangingPosition.getZ() + 1.0D));
                              }
                              
                              public EntitySit(World world) {
                              super(world);
                              this.field_174860_b = EnumFacing.NORTH;
                              }
                              
                              @Override
                              public int getWidthPixels() {
                              return 8;
                              }
                              
                              @Override
                              public int getHeightPixels() {
                              return 8;
                              }
                              
                              @Override
                              public void onBroken(Entity entity) {}
                              
                              @Override
                              public float getCollisionBorderSize() {
                              return 0.0F;
                              }
                              
                              @Override
                              public double getMountedYOffset() {
                              return 0.0D;
                              }
                              
                              @Override
                              public void onUpdate() {
                              super.onUpdate();
                              if (this.worldObj.getBlockState(this.hangingPosition).getBlock() != ST18Blocks.blockSittable) this.setDead();
                              }
                              
                              @Override
                              public boolean onValidSurface() {
                              return true;
                              }
                              }
                              

                              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
                              • 1 / 1
                              • Premier message
                                Dernier message
                              Design by Woryk
                              ContactMentions Légales

                              MINECRAFT FORGE FRANCE © 2024

                              Powered by NodeBB