MFF

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

    Problème de récupération d'entité

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.11.x
    7 Messages 3 Publieurs 1.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.
    • loustakL Hors-ligne
      loustak
      dernière édition par

      Bonjour,

      J’essaye d’appliquer une force à une entité quand c’elle-ci marche sur mon bloc. Le problème c’est que je veut que mon bloc possède en plus un TileEntity.
      Voici mon code:

      
      @Override
      public void onEntityWalk(World world, BlockPos pos, Entity entity) {    
          // Make the entity jump
          if (!world.isRemote) {
              TileEntity tile = getTileEntity(world, pos);
      
              if (tile instanceof TileEntityJumper) {
                  TileEntityJumper tileJumper = (TileEntityJumper) tile;
      
                  entity.motionY += tileJumper.getJump();
                  System.out.println(tileJumper.getJump());
      
                  System.out.println(entity);
              }
          }
      }
      
      

      Quand je print entity, la console m’affiche bien le jour. Et tileJumper correspond bien au TileEntity de mon bloc, la méthode getJump() fonctionne bien.
      Du coup je ne comprends pas pourquoi aucune force n’est appliqué sur les entités qui marchent sur le bloc.
      getJump() est bien > 0

      Merci de votre aide.

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

        Salut,
        Peux-tu envoyer le code de ton tile entity ?

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

          Yep

          
          public class TileEntityJumper extends TileEntity {
          
              private double jump;
          
              @Override
              public void readFromNBT(NBTTagCompound compound) {
                  this.jump = compound.getDouble("jump");
                  super.readFromNBT(compound);
              }
          
              @Override
              public NBTTagCompound writeToNBT(NBTTagCompound compound) {
                  compound.setDouble("jump", this.jump);
                  return super.writeToNBT(compound);
              }
          
              public double getJump() {
                  return this.jump;
              }
          
              public void increaseJump() {
                  this.jump++;
                  markDirty();
              }
          
              public void decreaseJump() {
                  this.jump–;
                  markDirty();
              }
          }
          
          

          Et le BlocTileEntity qui va avec :

          
          public abstract class BlockTileEntity <te extends="" tileentity="">extends BlockBase {
          
              public BlockTileEntity(Material material, String name) {
                  super(material, name);
              }
          
              public abstract Class <te>getTileEntityClass();
          
              public TE getTileEntity(IBlockAccess world, BlockPos pos) {
                  return (TE)world.getTileEntity(pos);
              }
          
              @Override
              public boolean hasTileEntity(IBlockState state) {
                  return true;
              }
          
              @Nullable
              @Override
              public abstract TE createTileEntity(World world, IBlockState state);
          
          }
          
          ```</te></te>
          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R En ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Je ne vois aucun problème dans ton code 😕

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

              Je doit être un peu bête mais j’ai beau regarder et je ne vois où est incrémenté la variable jump, à moins qu’il le fasse depuis un gui (auquel cas il n’y a effectivement aucun problème)

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

                @‘BrokenSwing’:

                Je doit être un peu bête mais j’ai beau regarder et je ne vois où est incrémenté la variable jump, à moins qu’il le fasse depuis un gui (auquel cas il n’y a effectivement aucun problème)

                La variable est modifié l’ors du clic souris sur le bloc lui même. Dès que je rentre chez moi j’envoi le code complet de la classe.
                De plus toutes les classes présentés sont dans le package proxy.common.

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

                  Et voilà la totalité de ma classe BlockBasicJumper:

                  
                  package com.loustak.flask.proxy.common.blocks;
                  
                  import javax.annotation.Nullable;
                  
                  import com.loustak.flask.proxy.common.tileentity.BlockTileEntity;
                  import com.loustak.flask.proxy.common.tileentity.TileEntityJumper;
                  
                  import net.minecraft.block.material.Material;
                  import net.minecraft.block.state.IBlockState;
                  import net.minecraft.entity.Entity;
                  import net.minecraft.entity.player.EntityPlayer;
                  import net.minecraft.tileentity.TileEntity;
                  import net.minecraft.util.EnumFacing;
                  import net.minecraft.util.EnumHand;
                  import net.minecraft.util.math.BlockPos;
                  import net.minecraft.util.text.TextComponentString;
                  import net.minecraft.world.World;
                  
                  public class BlockBasicJumper extends BlockTileEntity <tileentityjumper>{
                  
                  public BlockBasicJumper() {
                      super(Material.IRON, "basic_jumper");
                      setHardness(1.0f);
                      setResistance(10.0F);
                  }
                  
                  @Override
                  public void onEntityWalk(World world, BlockPos pos, Entity entity) {    
                      // Make the entity jump
                      if (!world.isRemote) {
                          TileEntity tile = getTileEntity(world, pos);
                  
                          if (tile instanceof TileEntityJumper) {
                              TileEntityJumper tileJumper = (TileEntityJumper) tile;
                  
                              entity.motionY += tileJumper.getJump();
                              System.out.println(tileJumper.getJump());
                  
                              System.out.println(entity);
                          }
                      }
                  }
                  
                  @Override
                  public void onFallenUpon(World worldIn, BlockPos pos, Entity entityIn, float fallDistance) {
                      // Remove fall damage
                      entityIn.fall(fallDistance, 0.0F);
                  }
                  
                  @Override
                  public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, 
                          EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
                  
                      if (!world.isRemote) {
                          TileEntityJumper tile = getTileEntity(world, pos);
                  
                          if (side == EnumFacing.DOWN) {
                              tile.decreaseJump();
                          } else if (side == EnumFacing.UP) {
                              tile.increaseJump();
                          }
                          player.sendMessage(new TextComponentString("Jump height: " + tile.getJump()));
                  
                          return true;
                      }
                      return false;
                  }
                  
                  @Override
                  @Deprecated
                  public boolean canEntitySpawn(IBlockState state, Entity entityIn) {
                      return false;
                  }
                  
                  @Override
                  @Deprecated
                  public boolean isOpaqueCube(IBlockState state) {
                      return false;
                  }
                  
                  @Override
                  @Deprecated
                  public boolean isFullCube(IBlockState state) {
                      return false;
                  }
                  
                  @Override
                  public Class <tileentityjumper>getTileEntityClass() {
                      return TileEntityJumper.class;
                  }
                  
                  @Nullable
                  @Override
                  public TileEntityJumper createTileEntity(World world, IBlockState state) {
                      return new TileEntityJumper();
                  }
                  
                  }
                  
                  

                  Je vais aussi tenté de mettre forge à jour.

                  Edit: Le problème persiste après la mise à jour de forge…</tileentityjumper></tileentityjumper>

                  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