MFF

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

    Plusieurs problèmes de mise à jour

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.9
    69 Messages 8 Publieurs 13.1k 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.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      1. La première est un NPE donc soit Minecraft est null, soit le monde est null, tu tick le client ou le monde ? Envoi la fonction entière ce sera plus claire.
      2. Peut être qu’il faut préciser que ton monde n’a pas de village (c’est une supposition, je n’y connais pas grand chose en dimensions)
      3. C’est un simple avertissement, il n’a rien d’important (j’ai la même chose dans mes logs)

      PS : si tu mets à jour ton mod pense à respecter la convention java au passage.

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

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

        1. Il semblerait que ça soit l’entity type qui soit null, je vois ça dans les logs :
        Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
        

        C’est le joueur que je tick, voilà ma fonction : ```java
        @SubscribeEvent
        public void nightSound(TickEvent.PlayerTickEvent event)
        {
        if (event.phase == TickEvent.Phase.END)
        {
        Minecraft mc = FMLClientHandler.instance().getClient();

        if(mc.theWorld.getWorldTime() == 15000)
        {
        mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
        }

        if(mc.theWorld.getWorldTime() == 16000)
        {
        mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
        }

        if(mc.theWorld.getWorldTime() == 17000)
        {
        mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
        }

        if(mc.theWorld.getWorldTime() == 18000)
        {
        mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
        }

        if(mc.theWorld.getWorldTime() == 19000)
        {
        mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
        }

        if(mc.theWorld.getWorldTime() == 20000)
        {
        mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
        }
        }
        }

        Ce que je ne comprend pas, c'est pourquoi ça crash quand je charge un monde et pas au moment où ça doit jouer le son. De plus, le son se joue quand même la nuit.
        
        2) Je ne sais pas comment faire (si c'est bien ça qu'il faut faire …). Mais je ne comprend pas pourquoi ça fait ça quand je créer un monde. Ca devrait plutôt le faire quand je rentre dans ma dimension.
        
        3) Ok merci :)
        
        EDIT : Pour la convention java, j'essaye mais je n'y arrive pas toujours
        1 réponse Dernière réponse Répondre Citer 0
        • SCAREXS Hors-ligne
          SCAREX
          dernière édition par

          1. Impossible car tu n’appelles pas l’entité à ce moment là. Essaie plutôt un WorldTick
            Voici un meilleur code :
          @SubscribeEvent
          public void nightSound(TickEvent.WorldTickEvent event)
          {
          if (event.phase == TickEvent.Phase.END)
          {
          Minecraft mc = FMLClientHandler.instance().getClient();
          
          switch (mc.theWorld.getWorldTime()) {
          case 15000:
          case 16000:
          case 17000:
          case 18000:
          case 19000:
          case 20000:
          mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
          break;
          }
          }
          
          1. tu n’arrives pas à quoi ?

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            Salut

            J’ai essayé (en gardant mon code) de tick le world et pas le joueur, c’est pareil. J’ai ensuite mis ton code, mais il y a eu une erreur à cette ligne :java switch (mc.theWorld.getWorldTime()) Ca ne peut pas switch des valeurs de type long. J’ai ajouté un int pour faire ```java
            switch ((int)mc.theWorld.getWorldTime())

            [13:27:33] [Server thread/ERROR] [FML]: Exception caught during firing event net.minecraftforge.fml.common.gameevent.TickEvent$WorldTickEvent@7b87a4de:
            java.lang.NullPointerException
            at thisishalloween.client.ClientTickHandler.nightSound(ClientTickHandler.java:73) ~[ClientTickHandler.class:?]
            at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_14_ClientTickHandler_nightSound_WorldTickEvent.invoke(.dynamic) ~[?:?]
            at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:49) ~[ASMEventHandler.class:?]
            at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:140) [EventBus.class:?]
            at net.minecraftforge.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:261) [FMLCommonHandler.class:?]
            at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:788) [MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) [MinecraftServer.class:?]
            at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [IntegratedServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) [MinecraftServer.class:?]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
            [13:27:33] [Server thread/ERROR] [FML]: Index: 1 Listeners:
            [13:27:33] [Server thread/ERROR] [FML]: 0: NORMAL
            [13:27:33] [Server thread/ERROR] [FML]: 1: ASM: thisishalloween.client.ClientTickHandler@54b7bfbe nightSound(Lnet/minecraftforge/fml/common/gameevent/TickEvent$WorldTickEvent;)V
            [13:27:33] [Server thread/ERROR]: Encountered an unexpected exception
            java.lang.NullPointerException
            at thisishalloween.client.ClientTickHandler.nightSound(ClientTickHandler.java:73) ~[ClientTickHandler.class:?]
            at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_14_ClientTickHandler_nightSound_WorldTickEvent.invoke(.dynamic) ~[?:?]
            at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:49) ~[ASMEventHandler.class:?]
            at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:140) ~[EventBus.class:?]
            at net.minecraftforge.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:261) ~[FMLCommonHandler.class:?]
            at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:788) ~[MinecraftServer.class:?]
            at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) ~[MinecraftServer.class:?]
            at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) ~[IntegratedServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) [MinecraftServer.class:?]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
            [13:27:33] [Server thread/ERROR]: This crash report has been saved to: G:\Codage\Minecraft\This_is_Halloween\v1.3\MC 1.9\run.\crash-reports\crash-2016-08-11_13.27.33-server.txt
            [13:27:33] [Server thread/INFO]: Stopping server
            [13:27:33] [Server thread/INFO]: Saving players
            [13:27:33] [Server thread/INFO]: Saving worlds
            [13:27:33] [Server thread/INFO]: Saving chunks for level ‘New World’/Overworld
            [13:27:34] [Server thread/INFO]: Saving chunks for level ‘New World’/Nether
            [13:27:34] [Server thread/INFO]: Saving chunks for level ‘New World’/The End
            [13:27:34] [Server thread/INFO] [FML]: Unloading dimension 0
            [13:27:34] [Server thread/INFO] [FML]: Unloading dimension -1
            [13:27:34] [Server thread/INFO] [FML]: Unloading dimension 1
            [13:27:34] [Server thread/INFO] [FML]: Applying holder lookups
            [13:27:34] [Server thread/INFO] [FML]: Holder lookups applied
            [13:27:34] [Server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STOPPING and forced into state SERVER_STOPPED. Errors may have been discarded.
            [13:27:35] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:646]: –-- Minecraft Crash Report ----
            // On the bright side, I bought you a teddy bear!

            Time: 11/08/16 13:27
            Description: Exception in server tick loop

            java.lang.NullPointerException: Exception in server tick loop
            at thisishalloween.client.ClientTickHandler.nightSound(ClientTickHandler.java:73)
            at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_14_ClientTickHandler_nightSound_WorldTickEvent.invoke(.dynamic)
            at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:49)
            at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:140)
            at net.minecraftforge.fml.common.FMLCommonHandler.onPostWorldTick(FMLCommonHandler.java:261)
            at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:788)
            at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683)
            at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532)
            at java.lang.Thread.run(Unknown Source)

            A detailed walkthrough of the error, its code path and all known details is as follows:

            – System Details –
            Details:
            Minecraft Version: 1.9
            Operating System: Windows 10 (amd64) version 10.0
            Java Version: 1.8.0_92, Oracle Corporation
            Java VM Version: Java HotSpot™ 64-Bit Server VM (mixed mode), Oracle Corporation
            Memory: 624213848 bytes (595 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
            JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
            IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
            FML: MCP 9.23 Powered by Forge 12.16.1.1887 4 mods loaded, 4 mods active
            States: ‘U’ = Unloaded ‘L’ = Loaded ‘C’ = Constructed ‘H’ = Pre-initialized ‘I’ = Initialized ‘J’ = Post-initialized ‘A’ = Available ‘D’ = Disabled ‘E’ = Errored
            UCHIJAAAA mcp{9.19} [Minecraft Coder Pack] (minecraft.jar)
            UCHIJAAAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.9-12.16.1.1887.jar)
            UCHIJAAAA Forge{12.16.1.1887} [Minecraft Forge] (forgeSrc-1.9-12.16.1.1887.jar)
            UCHIJAAAA This_is_Halloween{1.3} [This_is_Halloween] (bin)
            Loaded coremods (and transformers):
            GL info: ERROR RuntimeException: No OpenGL context found in the current thread.
            Profiler Position: N/A (disabled)
            Player Count: 0 / 8; []
            Type: Integrated Server (map_client.txt)
            Is Modded: Definitely; Client brand changed to ‘fml,forge’
            [13:27:35] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:646]: #@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2016-08-11_13.27.33-server.txt
            [13:27:35] [Client Shutdown Thread/INFO]: Stopping server
            [13:27:35] [Client Shutdown Thread/INFO]: Saving players
            [13:27:35] [Client Shutdown Thread/INFO]: Saving worlds
            AL lib: (EE) alc_cleanup: 1 device not closed
            Java HotSpot™ 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

            
            En regardant plus bas, ça parle de server. Peut-être est-ce à cause de ça. Mais c'est censé être uniquement client, c'est enregistrer dans le ClientProxy
            
            Pour ta question, je n'arrive pas à toujours respecter la convention. J'essaye de faire plus attention, mais ça ne suffit pas quelques fois.
            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

              Ajoutes juste un null check.

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

                J’ai testé ça, j’ai testé d’autres trucs et j’ai enfin trouvé (malgré que ça soit bizarre) : la fonction n’est pas appelé côté client. Ca peut paraître bizarre, mais pourtant c’est ça.```java
                @SubscribeEvent
                public void nightSound(TickEvent.WorldTickEvent event)
                {
                if(event.world.isRemote)
                {
                if (event.phase == TickEvent.Phase.END)
                {
                System.out.println(“test”);
                //if(event.world != null && event.side.isClient() && event.type.WORLD != null && event.type.CLIENT != null && event.type.PLAYER != null)
                {
                System.out.println(“rien n’est nul”);
                Minecraft mc = FMLClientHandler.instance().getClient();

                switch ((int)mc.theWorld.getWorldTime())
                {
                case 15000:
                case 16000:
                case 17000:
                case 18000:
                case 19000:
                case 20000:
                mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, SoundsRegistering.ambient_nightSound, SoundCategory.AMBIENT, 0.2F, 1.0F, false);
                break;
                }
                }
                }
                }
                }

                Si j'enlève le world isRemote, ça crash. Or, si je le met ça marche bien mais il n'y a pas les messages (ce qui prouve que la fonction n'est pas appelé. Mais c'est quand même bizarre vu que la classe est enregistré dans le ClientProxy
                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

                  Utilises alors TickEvent.ClientTickEvent

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

                    J’ai testé, Minecraft charge bien mais il m’affiche le menu principal une demi-seconde et crash en me précisant cette ligne : ```java
                    switch ((int)mc.theWorld.getWorldTime())

                    
                    Sinon, j'ai réessayé PlayerTickEvent et ça marche bien seulement si je met :```java
                    if(event.side.isClient())
                    ```Ca ne me gène pas de l'utiliser (au contraire, si c'est pour le bon fonctionnement je suis pour) mais pourquoi c'est aussi appelé côté serveur sinon ? C'est enregistrer dans le client proxy pourtant.
                    1 réponse Dernière réponse Répondre Citer 0
                    • AymericRedA Hors-ligne
                      AymericRed
                      dernière édition par

                      Les events enregistrés dans le client proxy sont toujours appelés côté serveur intégré, vu que c’est le programme client, le seul endroit où ils ne sont pas appelés, c’est le serveur dédié, mais tu peux mettre un @SideOnly(Side.CLIENT) sur la fonction pour éviter ça.
                      Et pour le NPE, tu peux faire un null check sur mc.theWorld au lieu d’utiliser PlayerTickEvent.

                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                        Ok merci 🙂

                        Je n’ai plus que deux problèmes dans le mod. Dans le blockPortal, j’utilisait java mcServer.getConfigurationManager().transferPlayerToDimension(player, ThisisHalloween.DIMENSION_ID, new TeleporterFrightful(mcServer.worldServerForDimension(ThisisHalloween.DIMENSION_ID))); pour me tp dans ma dimension. Mais getConfigurationManager n’existe plus. J’ai cherché et j’ai trouvé ```java
                        entityIn.changeDimension(ThisisHalloween.DIMENSION_ID);

                        Encore dans le blockPortal, cette fonction```java
                        entity1.copyDataFromOld(entity);
                        ``` est private. Là, on n'y peut malheureusement pas grand chose, mais est-elle importante ? Elle est dans cette fonction :```java
                        private void travelToDimension(Entity entity, int id)
                        {
                        if (!entity.worldObj.isRemote && !entity.isDead)
                        {
                        entity.worldObj.theProfiler.startSection("changeDimension");
                        MinecraftServer minecraftserver = entity.getServer();
                        int j = entity.dimension;
                        WorldServer worldserver = minecraftserver.worldServerForDimension(j);
                        WorldServer worldserver1 = minecraftserver.worldServerForDimension(id);
                        entity.dimension = id;
                        
                        if (j == 1 && id == 1) {
                        worldserver1 = minecraftserver.worldServerForDimension(0);
                        entity.dimension = 0;
                        }
                        
                        entity.worldObj.removeEntity(entity);
                        entity.isDead = false;
                        entity.worldObj.theProfiler.startSection("reposition");
                        //. minecraftserver.getConfigurationManager().transferEntityToWorld(entity, j, worldserver, worldserver1, new Teleporter(worldserver1));
                        entity.worldObj.theProfiler.endStartSection("reloading");
                        Entity entity1 = EntityList.createEntityByName(EntityList.getEntityString(entity), worldserver1);
                        
                        if (entity1 != null)
                        {
                        // entity1.copyDataFromOld(entity);
                        
                        if (j == 1 && id == 1)
                        {
                        BlockPos spawnPoint = worldserver1.getSpawnPoint();
                        spawnPoint = entity.worldObj.getTopSolidOrLiquidBlock(spawnPoint);
                        entity1.setLocationAndAngles(spawnPoint.getX(), spawnPoint.getY(), spawnPoint.getZ(), entity1.rotationYaw, entity1.rotationPitch);
                        }
                        
                        worldserver1.spawnEntityInWorld(entity1);
                        }
                        
                        entity.isDead = true;
                        entity.worldObj.theProfiler.endSection();
                        worldserver.resetUpdateEntityTick();
                        worldserver1.resetUpdateEntityTick();
                        entity.worldObj.theProfiler.endSection();
                        }
                        }
                        

                        Pour le problème de la création d’un monde à l’enregistrement du WorldProvider (voir dernier post page 1), c’est de ma faute, j’ai oublier un truc.```java
                        @Override
                        public DimensionType getDimensionType()
                        {
                        return ThisisHalloween.FRIGHTFUL_DIMENSION_TYPE;
                        }

                        
                        Merci d'avance
                        1 réponse Dernière réponse Répondre Citer 0
                        • AymericRedA Hors-ligne
                          AymericRed
                          dernière édition par

                          getConfiguration doit avoir changé de nom, ou l’élément qu’elle return est passé en public, donc la fonction est devenue inutile, regarde si une fonction ou une field n’a pas un nom semblable dans la classe McServer.
                          Pour le copyDataFromOld, regarde dans la version de mc où cette fonction existe et essaye de le refaire, sinon, il faudra passer par de la réflexion pour accéder quand même à la fonction.

                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                            1. Mais c’est là que viens le problème, elle retourne le fichier ServerConfigurationManager, qui n’existe plus en 1.9 (il a dû changer de nom et de package).

                            2. Je viens d’essayer, mais la fonction utilise des trucs en private, et d’autres en protégés. Du coup, je vais essayer d’utiliser la réflexion

                            EDIT : j’ai essayer d’utiliser le reflection, j’ai fait ```java

                            ObfuscationReflectionHelper.setPrivateValue(Entity.class, instance, entity1., “lastPortalPos”);
                            ObfuscationReflectionHelper.setPrivateValue(Entity.class, instance, entity1., “lastPortalVec”);
                            ObfuscationReflectionHelper.setPrivateValue(Entity.class, instance, entity1., “teleportDirection”);

                            
                            EDIT n°2 : je viens de trouver pour la 1\. Il faut remplacer ```java
                            mcServer.getConfigurationManager().transferPlayerToDimension(player, 0, new TeleporterFrightful(mcServer.worldServerForDimension(0)));
                            ``` par ```java
                            playerList.transferPlayerToDimension(player, 0, new TeleporterFrightful(mcServer.worldServerForDimension(0)));
                            ```. Je vais vous expliquer comment j'ai trouvé. J'ai ouvert eclipse avec mon mod en 1.8 et je suis aller dans le fichiers ServerConfigurationManager. J'ai utilisé la méthode que quelqu'un (désolé si tu lis ce post, je ne me souviens plus de ton pseudo) m'a donné pour voir où est appelé la classe UserListBans (elle est appelé dans convertUserBanlist et ServerConfigurationManager). Je suis retourné en 1.9, j'ai fait pareil et elle est appelé dans convertUserBanlist et dans PlayerList. Comme PlayerList n'est pas en 1.8, je l'ai ouvert et l'ai comparé à ServerConfigurationManager. C'est exactement pareil. Il me reste un seul problème : il faut initialiser la variable. J'utilise ```java
                            PlayerList playerList;
                            ``` et ensuite je l'utilise pour ```java
                            playerList.transferPlayerToDimension(
                            ``` mais je ne sais pas quoi mettre pour l'initialiser.
                            1 réponse Dernière réponse Répondre Citer 0
                            • AymericRedA Hors-ligne
                              AymericRed
                              dernière édition par

                              1. Je regarde ça 🙂
                              2. Pour l’instance, c’est ton entité (donc entity1), et pour les valeurs, faut regarder dans la fonction en private les valeurs qu’elle utilise.
                                PS: Il y a aussi un moyen (plus compliqué) d’appeler directement la fonction copyDataFromOld, car là, si tu changes plusieurs valeurs, au niveau perfs c’est pas extra ^^

                              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                Pour la 1, j’ai modifier le post d’au-dessus, regarde l’édit n°2.
                                Pour la 2, je vais voir
                                EDIT : je ne change que 3 valeurs par la reflection. Tu pense que ça va beaucoup jouer sur les performances ?

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

                                  Pour le playerList, tu dois pouvoir l’avoir via le mcServer.
                                  Vu que le code n’est pas appelé souvent, oui ça ira.

                                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                    J’ai testé d’entre dans le portail, mais ça crash. J’ai donc essayé de modifier l’ID pour que ça me mène vers le Nether (pour savoir si c’est ma dimension qui bug) et ça crash pareil. Voilà les logs :

                                    [23:07:26] [Server thread/FATAL]: Error executing task
                                    java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Colliding entity with block
                                    at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_92]
                                    at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_92]
                                    at net.minecraft.util.Util.runTask(Util.java:24) [Util.class:?]
                                    at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:738) [MinecraftServer.class:?]
                                    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:683) [MinecraftServer.class:?]
                                    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:155) [IntegratedServer.class:?]
                                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:532) [MinecraftServer.class:?]
                                    at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
                                    Caused by: net.minecraft.util.ReportedException: Colliding entity with block
                                    at net.minecraft.entity.Entity.moveEntity(Entity.java:962) ~[Entity.class:?]
                                    at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:499) ~[NetHandlerPlayServer.class:?]
                                    at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
                                    at net.minecraft.network.play.client.CPacketPlayer$C06PacketPlayerPosLook.processPacket(CPacketPlayer.java:162) ~[CPacketPlayer$C06PacketPlayerPosLook.class:?]
                                    at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
                                    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
                                    at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
                                    at net.minecraft.util.Util.runTask(Util.java:23) ~[Util.class:?]
                                    … 5 more
                                    Caused by: java.lang.NullPointerException
                                    at thisishalloween.world.frightful.TeleporterFrightful.placeInExistingPortal(TeleporterFrightful.java:139) ~[TeleporterFrightful.class:?]
                                    at thisishalloween.world.frightful.TeleporterFrightful.placeInPortal(TeleporterFrightful.java:43) ~[TeleporterFrightful.class:?]
                                    at net.minecraft.server.management.PlayerList.transferEntityToWorld(PlayerList.java:733) ~[PlayerList.class:?]
                                    at net.minecraft.server.management.PlayerList.transferPlayerToDimension(PlayerList.java:640) ~[PlayerList.class:?]
                                    at thisishalloween.block.BlockPortalFrightful.onEntityCollidedWithBlock(BlockPortalFrightful.java:242) ~[BlockPortalFrightful.class:?]
                                    at net.minecraft.entity.Entity.doBlockCollisions(Entity.java:1037) ~[Entity.class:?]
                                    at net.minecraft.entity.Entity.moveEntity(Entity.java:955) ~[Entity.class:?]
                                    at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:499) ~[NetHandlerPlayServer.class:?]
                                    at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
                                    at net.minecraft.network.play.client.CPacketPlayer$C06PacketPlayerPosLook.processPacket(CPacketPlayer.java:162) ~[CPacketPlayer$C06PacketPlayerPosLook.class:?]
                                    at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:15) ~[PacketThreadUtil$1.class:?]
                                    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_92]
                                    at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_92]
                                    at net.minecraft.util.Util.runTask(Util.java:23) ~[Util.class:?]
                                    … 5 more
                                    [23:07:26] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 3689ms behind, skipping 73 tick(s)
                                    [23:07:26] [Server thread/INFO] [FML]: Unloading dimension -1
                                    

                                    Le crash me reporte à deux endroits différents : à cette ligne :```java
                                               d6 = (double)(blockpattern$patternhelper.getPos().getY() + 1) - entityIn.getLastPortalVec().yCoord * (double)blockpattern$patternhelper.func_181119_e();

                                    qui est dans la fonction placeInExistingPortal dans le teleporter. Ca me reporte aussi à la ligne qui appelle placeInExistingPortal. Je vous met la fonction en entière :java
                                    public boolean placeInExistingPortal(Entity entityIn, float rotationYaw)
                                       {
                                           int i = 128;
                                           double d0 = -1.0D;
                                           int j = MathHelper.floor_double(entityIn.posX);
                                           int k = MathHelper.floor_double(entityIn.posZ);
                                           boolean flag = true;
                                           BlockPos blockpos = BlockPos.ORIGIN;
                                           long l = ChunkCoordIntPair.chunkXZ2Int(j, k);

                                    if (this.destinationCoordinateCache.containsItem(l))
                                           {
                                               Teleporter.PortalPosition teleporter$portalposition = (Teleporter.PortalPosition)this.destinationCoordinateCache.getValueByKey(l);
                                               d0 = 0.0D;
                                               blockpos = teleporter$portalposition;
                                               teleporter$portalposition.lastUpdateTime = this.worldServerInstance.getTotalWorldTime();
                                               flag = false;
                                           }
                                           else
                                           {
                                               BlockPos blockpos3 = new BlockPos(entityIn);

                                    for (int i1 = -128; i1 <= 128; ++i1)
                                               {
                                                   BlockPos blockpos2;

                                    for (int j1 = -128; j1 <= 128; ++j1)
                                                   {
                                                       for (BlockPos blockpos1 = blockpos3.add(i1, this.worldServerInstance.getActualHeight() - 1 - blockpos3.getY(), j1); blockpos1.getY() >= 0; blockpos1 = blockpos2)
                                                       {
                                                           blockpos2 = blockpos1.down();

                                    if (this.worldServerInstance.getBlockState(blockpos1).getBlock() == CreateBlocks.portalFrightful)
                                                           {
                                                               while (this.worldServerInstance.getBlockState(blockpos2 = blockpos1.down()).getBlock() == CreateBlocks.portalFrightful)
                                                               {
                                                                   blockpos1 = blockpos2;
                                                               }

                                    double d1 = blockpos1.distanceSq(blockpos3);

                                    if (d0 < 0.0D || d1 < d0)
                                                               {
                                                                   d0 = d1;
                                                                   blockpos = blockpos1;
                                                               }
                                                           }
                                                       }
                                                   }
                                               }
                                           }

                                    if (d0 >= 0.0D)
                                           {
                                               if (flag)
                                               {
                                                   this.destinationCoordinateCache.add(l, new Teleporter.PortalPosition(blockpos, this.worldServerInstance.getTotalWorldTime()));
                                                   this.destinationCoordinateKeys.add(Long.valueOf(l));
                                               }

                                    double d5 = (double)blockpos.getX() + 0.5D;
                                               double d6 = (double)blockpos.getY() + 0.5D;
                                               double d7 = (double)blockpos.getZ() + 0.5D;
                                               BlockPattern.PatternHelper blockpattern$patternhelper = Blocks.portal.func_181089_f(this.worldServerInstance, blockpos);
                                               boolean flag1 = blockpattern$patternhelper.getFinger().rotateY().getAxisDirection() == EnumFacing.AxisDirection.NEGATIVE;
                                               double d2 = blockpattern$patternhelper.getFinger().getAxis() == EnumFacing.Axis.X ? (double)blockpattern$patternhelper.getPos().getZ() : (double)blockpattern$patternhelper.getPos().getX();
                                               d6 = (double)(blockpattern$patternhelper.getPos().getY() + 1) - entityIn.getLastPortalVec().yCoord * (double)blockpattern$patternhelper.func_181119_e();

                                    if (flag1)
                                               {
                                                   ++d2;
                                               }

                                    if (blockpattern$patternhelper.getFinger().getAxis() == EnumFacing.Axis.X)
                                               {
                                                   d7 = d2 + (1.0D - entityIn.getLastPortalVec().xCoord) * (double)blockpattern$patternhelper.func_181118_d() * (double)blockpattern$patternhelper.getFinger().rotateY().getAxisDirection().getOffset();
                                               }
                                               else
                                               {
                                                   d5 = d2 + (1.0D - entityIn.getLastPortalVec().xCoord) * (double)blockpattern$patternhelper.func_181118_d() * (double)blockpattern$patternhelper.getFinger().rotateY().getAxisDirection().getOffset();
                                               }

                                    float f = 0.0F;
                                               float f1 = 0.0F;
                                               float f2 = 0.0F;
                                               float f3 = 0.0F;

                                    if (blockpattern$patternhelper.getFinger().getOpposite() == entityIn.getTeleportDirection())
                                               {
                                                   f = 1.0F;
                                                   f1 = 1.0F;
                                               }
                                               else if (blockpattern$patternhelper.getFinger().getOpposite() == entityIn.getTeleportDirection().getOpposite())
                                               {
                                                   f = -1.0F;
                                                   f1 = -1.0F;
                                               }
                                               else if (blockpattern$patternhelper.getFinger().getOpposite() == entityIn.getTeleportDirection().rotateY())
                                               {
                                                   f2 = 1.0F;
                                                   f3 = -1.0F;
                                               }
                                               else
                                               {
                                                   f2 = -1.0F;
                                                   f3 = 1.0F;
                                               }

                                    double d3 = entityIn.motionX;
                                               double d4 = entityIn.motionZ;
                                               entityIn.motionX = d3 * (double)f + d4 * (double)f3;
                                               entityIn.motionZ = d3 * (double)f2 + d4 * (double)f1;
                                               entityIn.rotationYaw = rotationYaw - (float)(entityIn.getTeleportDirection().getOpposite().getHorizontalIndex() * 90) + (float)(blockpattern$patternhelper.getFinger().getHorizontalIndex() * 90);

                                    if (entityIn instanceof EntityPlayerMP)
                                               {
                                                   ((EntityPlayerMP)entityIn).playerNetServerHandler.setPlayerLocation(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
                                               }
                                               else
                                               {
                                                   entityIn.setLocationAndAngles(d5, d6, d7, entityIn.rotationYaw, entityIn.rotationPitch);
                                               }

                                    return true;
                                           }
                                           else
                                           {
                                               return false;
                                           }
                                       }

                                    
                                    EDIT : j'ai testé en utilisant le teleporter de base, ça crash paeil. Même logs. Du coup, c'est bien les modifs que j'ai fait pour contrer le private de copyDataFromOld qui font buguer. Voilà ce que j'ai fait :
                                    ```java
                                        BlockPos lastPortalPos = new BlockPos(entity.posX, entity.posY, entity.posZ);
                                        Vec3d lastPortalVec = entity.getLastPortalVec();
                                        EnumFacing teleportDirection = entity.getTeleportDirection();
                                    
                                        entity.timeUntilPortal = entity1.timeUntilPortal;
                                        ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalPos, "lastPortalPos");
                                        ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, lastPortalVec, "lastPortalVec");
                                        ObfuscationReflectionHelper.setPrivateValue(Entity.class, entity1, teleportDirection, "teleportDirection");
                                    
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • AymericRedA Hors-ligne
                                      AymericRed
                                      dernière édition par

                                      Fais un print de “entityIn.getLastPortalVec()” dans ta fonction placeInExistingPortal. et regarde dans les logs si tu n’a pas une erreur sur le réflexion.

                                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                        Arrêtez de debugger avec des prints …
                                        Tu mets un point d’arret sur la ligne qui pose problème, tu lance en debug et tu fais du pas par pas …
                                        C’est 1000x plus efficace et rapide.

                                        Si tu ne sais pas te servir du debuggueur Eclipse, cherche sur internet, ça te changera la vie

                                        –------------------------------------------------------------------------------------
                                        Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                                          Salut
                                          Ca doit être la reflection qui bug car

                                          [13:49:58] [Server thread/INFO] [STDOUT]: [thisishalloween.world.frightful.TeleporterFrightful:placeInExistingPortal:76]: lastPortalVec : null
                                          [13:49:58] [Server thread/INFO] [STDOUT]: [thisishalloween.world.frightful.TeleporterFrightful:placeInExistingPortal:77]: teleportDirection : null
                                          

                                          lastPortalVec est nul.
                                          Je vais voir le blockPortal vanilla voir ce qui change

                                          @‘RedRelay’:

                                          Tu mets un point d’arret sur la ligne qui pose problème …

                                          Si je sais pas c’est quelle ligne qui bug, ça va être plutôt dur  😕

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

                                            @‘Axaurus’:

                                            @‘RedRelay’:

                                            Tu mets un point d’arret sur la ligne qui pose problème …

                                            Si je sais pas c’est quelle ligne qui bug, ça va être plutôt dur  😕

                                            
                                            thisishalloween.world.frightful.TeleporterFrightful.placeInExistingPortal(TeleporterFrightful.java:139)
                                            
                                            

                                            Elle est la ta ligne qui pose problème

                                            –------------------------------------------------------------------------------------
                                            Si tu trouves mon intervention pertinente, n'hésite pas a m…

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 4 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB