• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu TileEntity Spawn mob

    1.7.x
    1.7.10
    3
    8
    1353
    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.
    • P
      PlagueZ dernière édition par

      salut,

      je revient avec mes concept bizard et je cherche a faire en sorte que un tileEntity spawn des mob avec un probabilité après un temps donné donc j’utilise une variable Time qui s’incrémente tout les tick le probleme c’est que je vois pas du tout comment faire pour faire spawner des mob dans la méthode OnUpdate

      package virusz.tileEntity;
      
      import net.minecraft.block.Block;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.nbt.NBTTagList;
      import net.minecraft.network.NetworkManager;
      import net.minecraft.network.Packet;
      import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
      import net.minecraft.world.World;
      import scala.util.Random;
      import virusz.block.BlockSpawnerSafeZone;
      import virusz.core.IAdaptableTile;
      import virusz.mob.zombie.EntityTermite;
      import virusz.mob.zombie.EntityZombSurvivor;
      import virusz.registry.EntityRegister;
      
      public class TileEntitySpawnersafeZone extends TileEntitySafeZone implements IAdaptableTile
      {
         private ItemStack stack;
         public int Time;
         public int random = (int) (Math.random()*(0+100));
      
         public void readFromNBT(NBTTagCompound nbtTag)
         {
             super.readFromNBT(nbtTag);
             NBTTagList nbttaglist = nbtTag.getTagList("Blocks", 10);
             NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(0);
             this.stack = ItemStack.loadItemStackFromNBT(nbttagcompound1);
         }
         @Override
      public void updateEntity()
      {
          Time++;
          //67000 == 1H
          if(Time >= 67000){
          Time=0;
          if(random>= 50 && random <=60){
          System.out.println("OK");
          }
          }
      }
         public void writeToNBT(NBTTagCompound nbtTag)
         {
             super.writeToNBT(nbtTag);
      
             NBTTagList nbttaglist = new NBTTagList();
             if(this.stack != null)
             {
                 NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                 this.stack.writeToNBT(nbttagcompound1);
                 nbttaglist.appendTag(nbttagcompound1);
             }
             nbtTag.setTag("Blocks", nbttaglist);
         }
      
         @Override
         public Block getBlockForTexture()
         {
             if(stack != null && stack.getItem() != null && Block.getBlockFromItem(stack.getItem()) != null)
             {
                 return Block.getBlockFromItem(stack.getItem());
             }
             return null;
         }
      
         @Override
         public int getBlockMetadataForTexture()
         {
             if(stack != null)
             {
                 return stack.getItemDamage();
             }
             return 0;
         }
         @Override
         public void setStack(ItemStack stack)
         {
             this.stack = stack;
         }
      
         public Packet getDescriptionPacket()
         {
             NBTTagCompound nbttagcompound = new NBTTagCompound();
             this.writeToNBT(nbttagcompound);
             return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbttagcompound);
         }
      
         public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
         {
             this.readFromNBT(pkt.func_148857_g());
             this.worldObj.markBlockRangeForRenderUpdate(this.xCoord, this.yCoord, this.zCoord, this.xCoord, this.yCoord, this.zCoord);
         }
      }
      

      “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

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

        if(!worldObj.isRemote)
        {
        this.worldObj.spawnEntityInWorld(new EntityBlabla(this.worldObj);
        }
        
        1 réponse Dernière réponse Répondre Citer 0
        • P
          PlagueZ dernière édition par

          l’entité n’apparait pas sur mon block pourtant la probabilité fonctionne

          “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

          1 réponse Dernière réponse Répondre Citer 0
          • Deleted
            Deleted dernière édition par

            Sers toi de la méthode :
            instanceDeTonEntity.setLocationAndAngles(double x, double y, double z, float yaw, float pitch);

            1 réponse Dernière réponse Répondre Citer 0
            • P
              PlagueZ dernière édition par

              ok ça fonctionne j’avais oublier ce détail XD

              Encore une fois merci a vous tous

              “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

              1 réponse Dernière réponse Répondre Citer 0
              • Deleted
                Deleted dernière édition par

                Par-contre ta variable random n’est pas idéale car elle unique  et reste inchangée à chaque nouvelle instance de ton TileEntity. Ce que je veux dire c’est qu’il aurait mieux fallu la placer dans une autre méthode afin qu’elle puisse être modifiée. Par-exemple la mettre dans ta méthode updateEntity() aurait permit qu’elle n’ait pas toujours la même valeur. Je ne sais pas si tu me comprends mais debug, et envoies des messages dans la console et tu verras que pour chaque TileEntity dans le monde ta variable random est la même, elle ne change jamais.

                Pareil autre détail à propos de tes varaibles, ta variable Time devrait être stockée dans le NBTTagCompound de ton TileEntity afin d’être unique à chaque instance. Là par exemple ta variable est universelle et du coup chaque TileEntity affichera ce message
                System.out.println(“OK”);
                En même temps.
                Pour finir ça rejoint le premier problème, si tu ne souhaites pas que chaque TileEntity ait la même proba, ajoute et enregistre ta variable random dans le NBTTagCompound de ton TileEntity 😃

                1 réponse Dernière réponse Répondre Citer 0
                • P
                  PlagueZ dernière édition par

                  @‘Julot10085’:

                  Par-contre ta variable random n’est pas idéale car elle unique  et reste inchangée à chaque nouvelle instance de ton TileEntity. Ce que je veux dire c’est qu’il aurait mieux fallu la placer dans une autre méthode afin qu’elle puisse être modifiée. Par-exemple la mettre dans ta méthode updateEntity() aurait permit qu’elle n’ait pas toujours la même valeur. Je ne sais pas si tu me comprends mais debug, et envoies des messages dans la console et tu verras que pour chaque TileEntity dans le monde ta variable random est la même, elle ne change jamais.

                  Pareil autre détail à propos de tes varaibles, ta variable Time devrait être stockée dans le NBTTagCompound de ton TileEntity afin d’être unique à chaque instance. Là par exemple ta variable est universelle et du coup chaque TileEntity affichera ce message
                  System.out.println(“OK”);
                  En même temps.
                  Pour finir ça rejoint le premier problème, si tu ne souhaites pas que chaque TileEntity ait la même proba, ajoute et enregistre ta variable random dans le NBTTagCompound de ton TileEntity 😃

                  Yep merci je ré ouvre en vitesse le topic pour savoir si il y a un moyen de préciser le nombre d entité a spawner sur le block pour la var random j ai déjà remarquer le probleme et je viens de le corriger pour les nbttag j’avais juste pas écrit les lignes je viens des les ajouter aussi x)

                  “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

                  1 réponse Dernière réponse Répondre Citer 0
                  • P
                    PlagueZ dernière édition par

                    j’ai fini par trouve un moyen en créant un méthode avec this.worldObj.spawnEntityInWorld(new EntityBlabla(this.worldObj); et la position et en la faisant boucler le nombre d’entité désiré 😃

                    “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

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

                    MINECRAFT FORGE FRANCE © 2018

                    Powered by NodeBB