MFF

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

    TileEntity Spawn mob

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    8 Messages 3 Publieurs 1.4k 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.
    • P Hors-ligne
      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
      • robin4002R Hors-ligne
        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 Hors-ligne
          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
          • DeletedD Hors-ligne
            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 Hors-ligne
              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
              • DeletedD Hors-ligne
                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 Hors-ligne
                  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 Hors-ligne
                    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
                    ContactMentions Légales

                    MINECRAFT FORGE FRANCE © 2024

                    Powered by NodeBB