• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

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

    Sans suite
    1.11.x
    3
    7
    1059
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • loustak
      loustak last edited by

      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 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

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

        1 Reply Last reply Reply Quote 0
        • loustak
          loustak last edited by

          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 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

            Je ne vois aucun problème dans ton code 😕

            1 Reply Last reply Reply Quote 0
            • BrokenSwing
              BrokenSwing Moddeurs confirmés Rédacteurs last edited by

              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 Reply Last reply Reply Quote 0
              • loustak
                loustak last edited by

                @‘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 Reply Last reply Reply Quote 0
                • loustak
                  loustak last edited by

                  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 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Design by Woryk
                  Contact / Mentions Légales

                  MINECRAFT FORGE FRANCE © 2018

                  Powered by NodeBB