MFF

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

    Savoir quelle entity regarde le joueur

    Planifier Épinglé Verrouillé Déplacé Sans suite
    28 Messages 4 Publieurs 6.5k 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.
    • isadorI Hors-ligne
      isador Moddeurs confirmés Modérateurs
      dernière édition par

      bon pour le problème de null c’était moi, tromper de condition
      maintenant ca crash au niveau du .getEntitiesWithinAABB de

      
      List entityTagetList = par2World.getEntitiesWithinAABB(CoeMob.Mob.MobtestEntity.class, player.boundingBox.expand(32.0D, 32.0D, 32.0D));
      
      

      le crash report:
      :::

      
      –-- Minecraft Crash Report ----
      // Why is it breaking :(
      
      Time: 30/06/14 13:15
      Description: Unexpected error
      
      java.lang.NullPointerException
      at CoeQuest.KeyBindQuest.keyUp(KeyBindQuest.java:84)
      at cpw.mods.fml.client.registry.KeyBindingRegistry$KeyHandler.keyTick(KeyBindingRegistry.java:129)
      at cpw.mods.fml.client.registry.KeyBindingRegistry$KeyHandler.tickStart(KeyBindingRegistry.java:102)
      at cpw.mods.fml.common.SingleIntervalHandler.tickStart(SingleIntervalHandler.java:28)
      at cpw.mods.fml.common.FMLCommonHandler.tickStart(FMLCommonHandler.java:122)
      at cpw.mods.fml.common.FMLCommonHandler.onRenderTickStart(FMLCommonHandler.java:372)
      at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:944)
      at net.minecraft.client.Minecraft.run(Minecraft.java:838)
      at net.minecraft.client.main.Main.main(Main.java:93)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
      at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
      
      A detailed walkthrough of the error, its code path and all known details is as follows:
      ---------------------------------------------------------------------------------------
      
      -- Head --
      Stacktrace:
      at CoeQuest.KeyBindQuest.keyUp(KeyBindQuest.java:84)
      at cpw.mods.fml.client.registry.KeyBindingRegistry$KeyHandler.keyTick(KeyBindingRegistry.java:129)
      at cpw.mods.fml.client.registry.KeyBindingRegistry$KeyHandler.tickStart(KeyBindingRegistry.java:102)
      at cpw.mods.fml.common.SingleIntervalHandler.tickStart(SingleIntervalHandler.java:28)
      at cpw.mods.fml.common.FMLCommonHandler.tickStart(FMLCommonHandler.java:122)
      
      -- Affected level --
      Details:
      Level name: MpServer
      All players: 1 total; [EntityClientPlayerMP['isador34'/4, l='MpServer', x=1143,30, y=5,62, z=223,68]]
      Chunk stats: MultiplayerChunkCache: 275
      Level seed: 0
      Level generator: ID 01 - flat, ver 0\. Features enabled: false
      Level generator options:
      Level spawn location: World: (1121,4,239), Chunk: (at 1,0,15 in 70,14; contains blocks 1120,0,224 to 1135,255,239), Region: (2,0; contains chunks 64,0 to 95,31, blocks 1024,0,0 to 1535,255,511)
      Level time: 375011 game time, 107102 day time
      Level dimension: 0
      Level storage version: 0x00000 - Unknown?
      Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
      Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
      Forced entities: 5 total; [MobtestEntity['entity.Testmob.name'/0, l='MpServer', x=1141,31, y=4,00, z=223,69], EntityClientPlayerMP['isador34'/4, l='MpServer', x=1143,30, y=5,62, z=223,68], MobtestEntity['entity.Testmob.name'/1, l='MpServer', x=1151,31, y=4,00, z=226,69], MobtestEntity['entity.Testmob.name'/2, l='MpServer', x=1151,69, y=4,00, z=226,69], MobtestEntity['entity.Testmob.name'/3, l='MpServer', x=1151,69, y=4,00, z=226,69]]
      Retry entities: 0 total; []
      Server brand: fml,forge
      Server type: Integrated singleplayer server
      Stacktrace:
      at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:440)
      at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2312)
      at net.minecraft.client.Minecraft.run(Minecraft.java:863)
      at net.minecraft.client.main.Main.main(Main.java:93)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
      at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
      
      – System Details --
      Details:
      Minecraft Version: 1.6.4
      Operating System: Windows 8 (amd64) version 6.2
      Java Version: 1.7.0_45, Oracle Corporation
      Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
      Memory: 661595768 bytes (630 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
      JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
      AABB Pool Size: 19636 (1099616 bytes; 1 MB) allocated, 1 (56 bytes; 0 MB) used
      Suspicious classes: FML and Forge are installed
      IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
      FML: MCP v8.11 FML v6.4.45.953 Minecraft Forge 9.11.1.953 15 mods loaded, 15 mods active
      mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      FML{6.4.45.953} [Forge Mod Loader] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      Forge{9.11.1.953} [Minecraft Forge] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coebiome{1.0.0} [CoeBiome] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coeblock{1.0.0} [Coe Block] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coebordure{1.0.0} [Coe Bordure] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coecore{1.0.0} [CoeCore] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coelevel{1.0.0} [CoeLevel] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coemob{1.0.0} [Coemob] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coequest{1.0.0} [CoeQuest] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coespell{1.0.0} [CoeSpell] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      coeweapon{1.0.0} [CoeWeapon] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      crusadegui{2.0.0} [COE gui] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      mineralherb{1.0.1} [Mineralherb] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      PM{V.1.0.0} [Portal WoW] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
      Launched Version: 1.6
      LWJGL: 2.9.0
      OpenGL: GeForce GTX 660/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
      Is Modded: Definitely; Client brand changed to 'fml,forge'
      Type: Client (map_client.txt)
      Resource Pack: Default
      Current Language: English (US)
      Profiler Position: N/A (disabled)
      Vec3 Pool Size: 292 (16352 bytes; 0 MB) allocated, 14 (784 bytes; 0 MB) used
      
      

      :::
      le code:

      
      package CoeQuest;
      
      import java.util.EnumSet;
      import java.util.List;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.settings.KeyBinding;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.util.MovingObjectPosition;
      import net.minecraft.util.Vec3;
      import net.minecraft.world.World;
      
      import org.lwjgl.input.Keyboard;
      
      import cpw.mods.fml.client.FMLClientHandler;
      import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler;
      import cpw.mods.fml.common.TickType;
      import cpw.mods.fml.common.network.FMLNetworkHandler;
      
      public class KeyBindQuest extends KeyHandler
      {
      public static KeyBinding questKey = new KeyBinding("key.button.interactKey", Keyboard.KEY_I);
      private EntityLivingBase entityTarget;
      private World par2World;
      private String team;
      
      private String Newligne=System.getProperty("line.separator");
      
      public KeyBindQuest()
      {
      
      super(new KeyBinding[] {questKey}, new boolean[] {false});
      }
      
      @Override
      public String getLabel()
      {
      return "Intéragir";
      }
      
      @Override
      public void keyDown(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
      {}
      
      @Override
      public void keyUp(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd)
      {
      
      EntityPlayer player = FMLClientHandler.instance().getClient().thePlayer;
      Minecraft mc = Minecraft.getMinecraft();
      
      MovingObjectPosition mouseOver = player.rayTrace(100D, 1F);
      /*
      * if(mouseOver != null && mouseOver.typeOfHit ==
      * EnumMovingObjectType.ENTITY) { if(mouseOver.entityHit instanceof
      * MobtestEntity) { System.out.println(mouseOver.typeOfHit.name());
      * if(kb.keyCode == questKey.keyCode && mc.currentScreen == null &&
      * player.getCurrentEquippedItem() != null &&
      * player.getCurrentEquippedItem().getItem() == CoeQuestMain.quest)//
      * ADMIN { FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 2,
      * player.worldObj, (int)Math.floor(player.posX),
      * (int)Math.floor(player.posY), (int)Math.floor(player.posZ)); }
      *
      * else if(kb.keyCode == questKey.keyCode && mc.currentScreen == null) {
      * FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 1,
      * player.worldObj, (int)Math.floor(player.posX),
      * (int)Math.floor(player.posY), (int)Math.floor(player.posZ)); } } }
      */
      if(kb.keyCode == questKey.keyCode && mc.currentScreen == null )
      //&& player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == CoeQuestMain.quest)//ADMIN
      System.out.println("test 0");
      {
      FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 2, player.worldObj, (int)Math.floor(player.posX), (int)Math.floor(player.posY), (int)Math.floor(player.posZ));
      if(player instanceof EntityPlayer)
      {
      System.out.println("test 1");
      player = (EntityPlayer)player;
      Entity target = null;
      List entityTagetList =
      par2World
      .getEntitiesWithinAABB
      (CoeMob.Mob.MobtestEntity.class
      , player.boundingBox.expand(32.0D, 32.0D, 32.0D));
      for(int i = 0; i < entityTagetList.size(); i++)
      {
      System.out.println("test 2");
      Entity entityTarget = (Entity)entityTagetList.get(i);
      if(entityTarget != player && entityTarget instanceof EntityLivingBase)
      {
      EntityLivingBase entityLivingTarget = (EntityLivingBase)entityTarget;
      Vec3 vec3 = player.getLook(1.0F).normalize();
      Vec3 vec31 = entityLivingTarget.worldObj.getWorldVec3Pool().getVecFromPool(entityLivingTarget.posX - player.posX, entityLivingTarget.boundingBox.minY + (double)(entityLivingTarget.height / 2.0F) - (player.posY + (double)player.getEyeHeight()), entityLivingTarget.posZ - player.posZ);
      double d0 = vec31.lengthVector();
      vec31 = vec31.normalize();
      double d1 = vec3.dotProduct(vec31);
      if(d1 > 1.0D - 0.025D / d0 && player.canEntityBeSeen(entityLivingTarget))
      {
      System.out.println("test 3");
      target = entityLivingTarget;
      }
      else
      {
      System.out.println("test 4");
      target = null;
      }
      
      }
      }
      }
      }
      
      /*else if(kb.keyCode == questKey.keyCode && mc.currentScreen == null)
      {
      FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 1, player.worldObj, (int)Math.floor(player.posX), (int)Math.floor(player.posY), (int)Math.floor(player.posZ));
      }*/
      team = Minecraft.getMinecraft().thePlayer.getTeam().toString();
      System.out.println("team: "+team+Newligne);
      System.out.println("target: " + entityTarget+Newligne);
      System.out.println("MouseOver"+mouseOver);
      }
      
      @Override
      public EnumSet <ticktype>ticks()
      {
      return EnumSet.allOf(TickType.class);
      }
      }
      
      ```</ticktype></ticktype></ticktype>
      1 réponse Dernière réponse Répondre Citer 0
      • GuguG Hors-ligne
        Gugu
        dernière édition par

        Fais un check que la méthode ne return pas null

        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
        ― Jordan B. Peterson

        1 réponse Dernière réponse Répondre Citer 0
        • isadorI Hors-ligne
          isador Moddeurs confirmés Modérateurs
          dernière édition par

          comment ca?

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

            if(par2World.getEntitiesWithinAABB(CoeMob.Mob.MobtestEntity.class, player.boundingBox.expand(32.0D, 32.0D, 32.0D)) != null)

            "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
            ― Jordan B. Peterson

            1 réponse Dernière réponse Répondre Citer 0
            • isadorI Hors-ligne
              isador Moddeurs confirmés Modérateurs
              dernière édition par

              par contre si je veux check avec plusieurs entity comment faire?

              edit: j’ai un NPE sur if(par2World.getEntitiesWithinAABB(CoeMob.Mob.MobtestEntity.class, player.boundingBox.expand(32.0D, 32.0D, 32.0D)) != null)

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

                Essaie de voir de quelle partie ça viens

                "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                ― Jordan B. Peterson

                1 réponse Dernière réponse Répondre Citer 0
                • isadorI Hors-ligne
                  isador Moddeurs confirmés Modérateurs
                  dernière édition par

                  ca vient du .getEntitiesWithinAABB

                  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

                    Dans ce cas ton objet world est null, envoie toute ta classe.

                    1 réponse Dernière réponse Répondre Citer 0
                    • isadorI Hors-ligne
                      isador Moddeurs confirmés Modérateurs
                      dernière édition par

                      
                      package CoeQuest;
                      
                      import java.util.EnumSet;
                      import java.util.List;
                      
                      import net.minecraft.client.Minecraft;
                      import net.minecraft.client.settings.KeyBinding;
                      import net.minecraft.entity.Entity;
                      import net.minecraft.entity.EntityLivingBase;
                      import net.minecraft.entity.player.EntityPlayer;
                      import net.minecraft.util.MovingObjectPosition;
                      import net.minecraft.util.Vec3;
                      import net.minecraft.world.World;
                      
                      import org.lwjgl.input.Keyboard;
                      
                      import cpw.mods.fml.client.FMLClientHandler;
                      import cpw.mods.fml.client.registry.KeyBindingRegistry.KeyHandler;
                      import cpw.mods.fml.common.TickType;
                      import cpw.mods.fml.common.network.FMLNetworkHandler;
                      
                      public class KeyBindQuest extends KeyHandler
                      {
                      public static KeyBinding questKey = new KeyBinding("key.button.interactKey", Keyboard.KEY_I);
                      private EntityLivingBase entityTarget;
                      private World par2World;
                      
                      private String Newligne = System.getProperty("line.separator");
                      
                      public KeyBindQuest()
                      {
                      
                      super(new KeyBinding[] {questKey}, new boolean[] {false});
                      }
                      
                      @Override
                      public String getLabel()
                      {
                      return "Intéragir";
                      }
                      
                      @Override
                      public void keyDown(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd, boolean isRepeat)
                      {}
                      
                      @Override
                      public void keyUp(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd)
                      {
                      
                      EntityPlayer player = FMLClientHandler.instance().getClient().thePlayer;
                      Minecraft mc = Minecraft.getMinecraft();
                      
                      MovingObjectPosition mouseOver = player.rayTrace(100D, 1F);
                      /*
                      * if(mouseOver != null && mouseOver.typeOfHit ==
                      * EnumMovingObjectType.ENTITY) { if(mouseOver.entityHit instanceof
                      * MobtestEntity) { System.out.println(mouseOver.typeOfHit.name());
                      * if(kb.keyCode == questKey.keyCode && mc.currentScreen == null &&
                      * player.getCurrentEquippedItem() != null &&
                      * player.getCurrentEquippedItem().getItem() == CoeQuestMain.quest)//
                      * ADMIN { FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 2,
                      * player.worldObj, (int)Math.floor(player.posX),
                      * (int)Math.floor(player.posY), (int)Math.floor(player.posZ)); }
                      *
                      * else if(kb.keyCode == questKey.keyCode && mc.currentScreen == null) {
                      * FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 1,
                      * player.worldObj, (int)Math.floor(player.posX),
                      * (int)Math.floor(player.posY), (int)Math.floor(player.posZ)); } } }
                      */
                      if(kb.keyCode == questKey.keyCode && mc.currentScreen == null)
                      // && player.getCurrentEquippedItem() != null &&
                      // player.getCurrentEquippedItem().getItem() == CoeQuestMain.quest)ADMIN
                      {
                      System.out.println("test 0");
                      // FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 2,
                      // player.worldObj, (int)Math.floor(player.posX),
                      // (int)Math.floor(player.posY), (int)Math.floor(player.posZ));
                      if(player instanceof EntityPlayer)
                      {
                      System.out.println("test 1");
                      player = (EntityPlayer)player;
                      Entity target = null;
                      System.out.println("test 1 bis");
                      if(par2World
                      .getEntitiesWithinAABB
                      (CoeMob.Mob.MobtestEntity.class,
                      player
                      .boundingBox
                      .expand
                      (32.0D,
                      32.0D,
                      32.0D))
                      != null)
                      {
                      List entityTagetList = par2World.getEntitiesWithinAABB(CoeMob.Mob.MobtestEntity.class, player.boundingBox.expand(32.0D, 32.0D, 32.0D));
                      System.out.println("test 1 tris");
                      for(int i = 0; i < entityTagetList.size(); i++)
                      {
                      System.out.println("test 2");
                      Entity entityTarget = (Entity)entityTagetList.get(i);
                      if(entityTarget != player && entityTarget instanceof EntityLivingBase)
                      {
                      EntityLivingBase entityLivingTarget = (EntityLivingBase)entityTarget;
                      Vec3 vec3 = player.getLook(1.0F).normalize();
                      Vec3 vec31 = entityLivingTarget.worldObj.getWorldVec3Pool().getVecFromPool(entityLivingTarget.posX - player.posX, entityLivingTarget.boundingBox.minY + (double)(entityLivingTarget.height / 2.0F) - (player.posY + (double)player.getEyeHeight()), entityLivingTarget.posZ - player.posZ);
                      double d0 = vec31.lengthVector();
                      vec31 = vec31.normalize();
                      double d1 = vec3.dotProduct(vec31);
                      if(d1 > 1.0D - 0.025D / d0 && player.canEntityBeSeen(entityLivingTarget))
                      {
                      System.out.println("test 3");
                      target = entityLivingTarget;
                      }
                      else
                      {
                      System.out.println("test 4");
                      target = null;
                      }
                      }
                      }
                      }
                      }
                      System.out.println("team: " + (Minecraft.getMinecraft().thePlayer.getTeam()) + Newligne);
                      System.out.println("target: " + entityTarget + Newligne);
                      System.out.println("MouseOver" + mouseOver);
                      }
                      
                      /*
                      * else if(kb.keyCode == questKey.keyCode && mc.currentScreen == null) {
                      * FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 1,
                      * player.worldObj, (int)Math.floor(player.posX),
                      * (int)Math.floor(player.posY), (int)Math.floor(player.posZ)); }
                      */
                      }
                      
                      @Override
                      public EnumSet <ticktype>ticks()
                      {
                      return EnumSet.allOf(TickType.class);
                      }
                      }
                      
                      ```</ticktype></ticktype></ticktype>
                      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

                        private World par2World;
                        Forcement il est null si tu fais ça …
                        Vire se truc et remplace par2World par player.worldObj

                        1 réponse Dernière réponse Répondre Citer 0
                        • isadorI Hors-ligne
                          isador Moddeurs confirmés Modérateurs
                          dernière édition par

                          car crash plus mais target est toujours null

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

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB