Item qui spawn sur un block tout les 60 ticks



  • Bonsoir,
    J'aimerai faire apparaître un lingot de fer au dessus d'un block custom tout les 3 secondes donc 60 ticks !

    J'ai trouvé ce post sur le forum : https://www.minecraftforgefrance.fr/showthread.php?tid=434

    Cependant il n'y a pas de solutions, en avez-vous une svp

    voici mon code :

    package com.mod.ciolmod.blocks;
    
    import java.util.Random;
    
    import com.mod.ciolmod.init.ItemMod;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.entity.item.EntityItem;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class BlockIronSpawner extends Block {
    
    public BlockIronSpawner(Material p_i45394_1_) {
    super(p_i45394_1_);
    this.setTickRandomly(true);
    
    }
    
    @Override
    public void updateTick(World world, int x, int y, int z, Random rand)
    {
    
    EntityItem itemir = new EntityItem(world, x, y + 3, z, new ItemStack(Items.iron_ingot, 1));
    world.spawnEntityInWorld(itemir);
    
    }
    
    public int tickRate()
    {
       return 60;
    }
    
    }
    
    


  • yo, faut un TileEntity sur ton block et que tu override la fonction updateEntity() dans la class tu TileEntity puis que tu fasse 2 un variable qui se nomme timer

    COMMENT CREER UN  TILEENTITY SUR TON BLOCK ===> https://www.minecraftforgefrance.fr/showthread.php?tid=1113
    fait ca avant de regarder le code ci-dessous

    
    if (timer < 60)
    {
         timer++;
    }
    
    if (timer == 60)
    {
        timer = 0;
        // Spawn ton EntityItem
    }
    
    


  • Ok je regarde ça et je te recontacte d'ici fin de semaine si j'ai un souci merci beaucoup ?



  • Merci, cependant je ne sais pas comment faire spawner un item de la tileentity 😞

    [size=smallif][size=small ]size=small
    [size=small{]
    [size=small    timer ][size=small=][size=small ][size=small0][size=small;]
    [size=small    ][size=small// Spawn ton EntityItem]
    [size=small}]

    voici la class de ma TE, il y a cependant une erreur quand je veux faire spawn l'item

    package com.mod.ciolmod.blocks.tileentities;
    
    import java.util.Random;
    
    import net.minecraft.entity.item.EntityItem;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.world.World;
    
    public class TileEntityISpawner extends TileEntity {
    
      @Override
      public void readFromNBT(NBTTagCompound compound)
      {
          super.readFromNBT(compound);
      }
    
      @Override
      public void writeToNBT(NBTTagCompound compound)
      {
          super.writeToNBT(compound);
      }
    
    //l'erreur est à la ligne updateEntity :(
      @Override
      public void updateEntity(World world, int x, int y, int z, Random rand)
      {
    
      int timer = 0;
    
      if (timer < 60)
      {
           timer++;
      }
    
      if (timer == 60)
      {
          timer = 0;
          EntityItem itemir = new EntityItem(world, x, y + 1, z, new ItemStack(Items.iron_ingot, 1));
          world.spawnEntityInWorld(itemir);
      }
    
      }
    
    }
    
    

    Merci beaucoup encore pour toute cette aide 🙂

    J'espère un jour aider à mon tour comme vous le faîtes


  • Moddeurs confirmés Rédacteurs Administrateurs

    x -> this.posX
    idem pour y et z.



  • Merci encore de ton aide !


    C'est bon j'ai trouvé ceci

    DimensionManager.getWorld(0)
    

    par contre toujours aucun résultat aucun item spawn avez-vous une idée ?

    Classe de mon Block

    package com.mod.ciolmod.blocks;
    
    import java.util.Random;
    
    import com.mod.ciolmod.blocks.tileentities.TileEntityISpawner;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.entity.item.EntityItem;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.world.World;
    
    public class BlockIronSpawner extends Block {
    
    public BlockIronSpawner(Material p_i45394_1_) {
    super(p_i45394_1_);
    this.setTickRandomly(true);
    }
    
    @Override
      public TileEntity createTileEntity(World world, int metadata)
      {
          return new TileEntityISpawner();
      }
    
      @Override
      public boolean hasTileEntity(int metadata)
      {
          return true;
      }
    
    }
    
    

    Class de ma TE

    package com.mod.ciolmod.blocks.tileentities;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.item.EntityItem;
    import net.minecraft.init.Items;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraftforge.common.DimensionManager;
    
    public class TileEntityISpawner extends TileEntity {
    
       private Entity field_98291_j;
    
      @Override
      public void readFromNBT(NBTTagCompound compound)
      {
          super.readFromNBT(compound);
      }
    
      @Override
      public void writeToNBT(NBTTagCompound compound)
      {
          super.writeToNBT(compound);
      }
    
      @Override
      public void updateEntity()
      {
    
      int timer = 0;
    
      if (timer < 60)
      {
           timer++;
      }
    
      if (timer == 60)
      {
          timer = 0;
          EntityItem itemir = new EntityItem(DimensionManager.getWorld(0), this.xCoord, this.yCoord + 1, this.zCoord, new ItemStack(Items.iron_ingot, 1));
          this.worldObj.spawnEntityInWorld(itemir);
      }
    
      }
    
    //   public Entity func_98281_h() {
    
    //   if (this.field_98291_j == null)
    //        {
    //           Entity entity = new EntityItem(this.getWorldObj(), this.xCoord, this.yCoord + 2, this.zCoord, new ItemStack(Items.iron_ingot, 1)));
    //            entity = this.getWorldObj().spawnEntityInWorld(entity);
    //           this.field_98291_j = entity;
    //       }
    
    //        return this.field_98291_j;
    
    //   }
    
    }
    
    


  • if (!this.worldObj.isRemote)
    avant de faire spawn l'item afin de seulement executer le code server side only
    et ta method updateentity est chelou normalement c'eset juste updateEntity sans arguments dans la fonction



  • @'SpyMan':

    if (!this.worldObj.isRemote)
    avant de faire spawn l'item afin de seulement executer le code server side only
    et ta method updateentity est chelou normalement c'eset juste updateEntity sans arguments dans la fonction

    Merci beaucoup ça fonctionne !! Je te remercie 1000 fois


Log in to reply