MFF

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

    Crash lors d'un give via la casse d'un bloc

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    25 Messages 6 Publieurs 4.3k 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.
    • DeletedD Hors-ligne
      Deleted
      dernière édition par

      Voilà le bon code 😃

      
      if(!world.isRemote){
          world.spawnEntityInWorld(new EntityItem(world, x, y, z, new ItemStack(Items.apple, 1 + rand.nextInt(5))))
          world.setBlock(x, y, z, ModAltisCraft.blockPomme, 0, 2);
          }
      
      

      Par-contre c’est un peu différent, ça le fait spawn mais ne l’ajoute pas directement à l’inventaire du joueur. Mais au final c’est pareil…

      1 réponse Dernière réponse Répondre Citer 0
      • Benjamin LoisonB Hors-ligne
        Benjamin Loison
        dernière édition par

        Ce que je veux c’est que ça spawn directement dans son inventaire 😕 ….

        >! Développeur de Altis-Life (Arma III) sur Minecraft !
        >! Site web     : https://lemnoslife.com

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

          Dans ce cas essaie avec les event

          
          @SubscribeEvent
          public void onBlockDestroyed(BreakEvent event)
          {
          if(event.block == TaClassePrincipale.blockPomme)
          {
          event.getPlayer().inventory.addItemStackToInventory(new ItemStack(Items.apple, 1 + rand.nextInt(5)));
             event.world.setBlock(x, y, z, ModAltisCraft.blockPomme, 0, 2);
          }
          }
          
          
          1 réponse Dernière réponse Répondre Citer 0
          • Benjamin LoisonB Hors-ligne
            Benjamin Loison
            dernière édition par

            Pas moyen d’éviter les events ?

            >! Développeur de Altis-Life (Arma III) sur Minecraft !
            >! Site web     : https://lemnoslife.com

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

              Non je ne connais pas d’autre méthode dans la classe Block appelé lorsqu’il est cassé. Mais tu sais tu devras bien y passer en + ce n’est pas compliqué.
              Tu rajoutes cette ligne là dans ta méthode init :
              MinecraftForge.EVENT_BUS.register(new TaClasseDEvent());

              EDIT = Y’a moyen de faire autrement, il suffit d’envoyer un packet.

              1 réponse Dernière réponse Répondre Citer 0
              • Benjamin LoisonB Hors-ligne
                Benjamin Loison
                dernière édition par

                Ouai mais bon les events et moi… :S

                >! Développeur de Altis-Life (Arma III) sur Minecraft !
                >! Site web     : https://lemnoslife.com

                1 réponse Dernière réponse Répondre Citer 0
                • Benjamin LoisonB Hors-ligne
                  Benjamin Loison
                  dernière édition par

                  Et tout mais pas les packets :') enfin bon je suis sûr que c’est possible avec mon code de base quelqu’un d’autre a des idées ? 😕

                  >! Développeur de Altis-Life (Arma III) sur Minecraft !
                  >! Site web     : https://lemnoslife.com

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

                    Nop je suis la seule personne ce soir =D
                    Essaie ça, je n’y avais pas du tout pensé

                    
                    public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int l) {
                       if(world.isRemote){
                       Minecraft.getMinecraft().thePlayer.inventory.addItemStackToInventory(new ItemStack(Items.apple, 1 + rand.nextInt(5)));
                       }
                       else
                       {
                       world.setBlock(x, y, z, ModAltisCraft.blockPomme, 0, 2);
                       }
                       }
                    
                    
                    1 réponse Dernière réponse Répondre Citer 0
                    • Benjamin LoisonB Hors-ligne
                      Benjamin Loison
                      dernière édition par

                      Ca marche impec’ merci beaucoup 😛

                      >! Développeur de Altis-Life (Arma III) sur Minecraft !
                      >! Site web     : https://lemnoslife.com

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

                        Nop ça ne marche pas j’ai testé.
                        Regarde bien, fais toi giver l’item par le block, déco-reco et tu verras qu’il n’est pas sauvegardé dans ta barre d’action….
                        C’est sûrement un prob de Sides, on a dû placer le code au mauvais endroit (dans la mauvaise condition). Il faut regarder dans les autres classes de Minecraft, par-exemple la vache et son saut de lait. Pour ça je te laisse tu ne devrais pas avoir trop de mal 😃

                        1 réponse Dernière réponse Répondre Citer 0
                        • Benjamin LoisonB Hors-ligne
                          Benjamin Loison
                          dernière édition par

                          Alors voilà ma nouvelle classe :

                          package fr.altiscraft.altiscraft.common;
                          
                          import java.util.ArrayList;
                          import java.util.Random;
                          
                          import net.minecraft.block.BlockBush;
                          import net.minecraft.block.material.Material;
                          import net.minecraft.client.Minecraft;
                          import net.minecraft.item.Item;
                          import net.minecraft.item.ItemStack;
                          import net.minecraft.world.IBlockAccess;
                          import net.minecraft.world.World;
                          import net.minecraftforge.common.IShearable;
                          
                          public class CannabisPlante extends BlockBush implements IShearable {
                          protected CannabisPlante() {
                          super(Material.leaves);
                          float f = 0.4F;
                          setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f);
                          }
                          
                          public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int l) {
                          if (world.isRemote) {
                          Minecraft.getMinecraft().thePlayer.inventory.addItemStackToInventory(new ItemStack(ModAltisCraft.itemCannabis, 1));
                          } else {
                          world.setBlock(x, y, z, ModAltisCraft.CannabisPlante, 0, 2);
                          }
                          }
                          
                          public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) {
                          return false;
                          }
                          
                          public ArrayList <itemstack>onSheared(ItemStack item, IBlockAccess world, int x, int y, int z, int fortune) {
                          return null;
                          }
                          
                          public int quantityDropped(Random rdm) {
                          return 0;
                          }
                          
                          public Item getItemDropped(int int1, Random rdm, int int2) {
                          return Item.getItemFromBlock(this);
                          }
                          }
                          

                          Le problème est celui que tu as dis ça ne sauvegarde pas j’ai regardé du côté sceau de lait mais je n’ai vu que ça qui ne m’aide pas trop…

                              /**
                               * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig.
                               */
                              public boolean interact(EntityPlayer p_70085_1_)
                              {
                                  ItemStack itemstack = p_70085_1_.inventory.getCurrentItem();
                          
                                  if (itemstack != null && itemstack.getItem() == Items.bucket && !p_70085_1_.capabilities.isCreativeMode)
                                  {
                                      if (itemstack.stackSize-- == 1)
                                      {
                                          p_70085_1_.inventory.setInventorySlotContents(p_70085_1_.inventory.currentItem, new ItemStack(Items.milk_bucket));
                                      }
                                      else if (!p_70085_1_.inventory.addItemStackToInventory(new ItemStack(Items.milk_bucket)))
                                      {
                                          p_70085_1_.dropPlayerItemWithRandomChoice(new ItemStack(Items.milk_bucket, 1, 0), false);
                                      }
                          
                                      return true;
                                  }
                                  else
                                  {
                                      return super.interact(p_70085_1_);
                                  }
                              }
                          
                          

                          Voilà je ne sais pas comment résoudre ça :x Merci d’avance</itemstack>

                          >! Développeur de Altis-Life (Arma III) sur Minecraft !
                          >! Site web     : https://lemnoslife.com

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

                            On te l’a dit utilise les events !
                            Le give d’objet ça se fait uniquement coté serveur.
                            Le système a été fait pour te simplifier la vie, tu te compliques la vie en cherchant a le contourner.

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

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

                              Surtout que le code n’est pas très compliqué :
                              (code 1.8)

                              
                              @SubscribeEvent
                              public void onPlayerBreakBlock(BreakEvent event)
                              {
                              if(event.state.getBlock() == TestMod.plante && !event.getPlayer().capabilities.isCreativeMode) //Ne donne pas le bloc si le joueur est en créatif car ça peut être embêtant
                              {
                              event.getPlayer().inventory.addItemStackToInventory(new ItemStack(TestMod.plante));
                              }
                              }
                              
                              
                              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

                                Franchement les événements c’est super simple …
                                Et sinon il y a cette fonction :

                                public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int metadata)
                                {
                                super.harvestBlock(world, player, x, y, z, metadata);
                                player.inventory.addItemStackToInventory(new ItemStack(Items.apple, 1 + world.rand.nextInt(5)));
                                }
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • Benjamin LoisonB Hors-ligne
                                  Benjamin Loison
                                  dernière édition par

                                  Merci pour la fonction c’est bon en faite je n’aime pas trop passé par les events perso voilà merci beaucoup à tous 🙂 !

                                  EDIT: La fonction ne marche pas en multi comment faire ?? (Encore sans les events de préférences :S)

                                  S’il vous plaît, merci 🙂

                                  EDIT-EDIT:

                                  1. @SubscribeEvent
                                  2. public void onBlockDestroyed(BreakEvent event)
                                  3. {
                                  4. if(event.block == ModAltisCraft.blockPomme)
                                  5. {
                                  6. event.getPlayer().inventory.addItemStackToInventory(new ItemStack(Items.apple, 1));
                                  7.    event.world.setBlock(x, y, z, ModAltisCraft.blockPomme, 0, 2);
                                  8. }
                                  9. }

                                  J’ai mis ça dans ma classe des events mais rien :S

                                  >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                  >! Site web     : https://lemnoslife.com

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

                                    Au pire, fais un packet qui give au joueur.

                                    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

                                      Heu si elle devrait fonctionner. C’est elle qui gère le drop et la destruction du bloc, donc …
                                      Pour l’event, est-ce que tu as bien enregistré la classe dans laquelle il se trouve ?

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • Benjamin LoisonB Hors-ligne
                                        Benjamin Loison
                                        dernière édition par

                                        Par exemple avec cette classe :

                                        package fr.altiscraft.altiscraft.common;
                                        
                                        import java.util.Random;
                                        
                                        import net.minecraft.block.Block;
                                        import net.minecraft.block.material.Material;
                                        import net.minecraft.entity.player.EntityPlayer;
                                        import net.minecraft.init.Items;
                                        import net.minecraft.item.Item;
                                        import net.minecraft.item.ItemStack;
                                        import net.minecraft.world.World;
                                        
                                        public class BlockPomme extends Block {
                                        public Random rand = new Random();
                                        
                                        public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int l) {
                                        world.setBlock(x, y, z, ModAltisCraft.blockPomme, 0, 2);
                                        }
                                        
                                        protected BlockPomme() {
                                        super(Material.leaves);
                                        }
                                        
                                        public boolean renderAsNormalBlock() {
                                        return false;
                                        }
                                        
                                        public boolean isOpaqueCube() {
                                        return false;
                                        }
                                        
                                        public int quantityDropped(Random rdm) {
                                        return 0;
                                        }
                                        
                                        public Item getItemDropped(int int1, Random rdm, int int2) {
                                        return Item.getItemFromBlock(this);
                                        }
                                        
                                        public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int metadata) {
                                        super.harvestBlock(world, player, x, y, z, metadata);
                                        player.inventory.addItemStackToInventory(new ItemStack(Items.apple, 1));
                                        }
                                        }
                                        

                                        Et si je lance le jeu en multi ou en solo, le block respawn mais je ne gagne pas dans mon inventaire la pomme…

                                        Et pour les events j’ai cette classe je copie tout pour si y a une erreur enfin bon mon code est à la fin :

                                        package diabolicatrix.project;
                                        
                                        import java.util.UUID;
                                        
                                        import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                                        import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
                                        import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent;
                                        import cpw.mods.fml.common.registry.GameRegistry;
                                        import cpw.mods.fml.relauncher.Side;
                                        import cpw.mods.fml.relauncher.SideOnly;
                                        import diabolicatrix.project.proxy.ClientProxy;
                                        import fr.altiscraft.altiscraft.common.GuiSpawn;
                                        import fr.altiscraft.altiscraft.common.ModAltisCraft;
                                        import net.minecraft.client.Minecraft;
                                        import net.minecraft.entity.player.EntityPlayer;
                                        import net.minecraft.init.Items;
                                        import net.minecraft.item.Item;
                                        import net.minecraft.item.ItemStack;
                                        import net.minecraft.scoreboard.Score;
                                        import net.minecraft.scoreboard.ScoreObjective;
                                        import net.minecraft.scoreboard.Scoreboard;
                                        import net.minecraft.server.MinecraftServer;
                                        import net.minecraftforge.event.world.BlockEvent.BreakEvent;
                                        
                                        public class T4EventHandler {
                                        
                                        private MinecraftServer mcs = MinecraftServer.getServer();
                                        private Item checkArmor = GameRegistry.findItem("flansmod", "Archeo");
                                        // private Minecraft mc = Minecraft.getMinecraft();
                                        private UUID uuid;
                                        private String boardTitle;
                                        private String scoreString;
                                        private boolean shift = false;
                                        
                                        @SubscribeEvent
                                        @SideOnly(Side.CLIENT)
                                        public void onKeyInput(KeyInputEvent event) {
                                        if (ClientProxy.overMouse.isPressed()) {
                                        if (Minecraft.getMinecraft().objectMouseOver.entityHit instanceof EntityPlayer) {
                                        Scoreboard scoreboard = Minecraft.getMinecraft().theWorld.getScoreboard();
                                        String name = Minecraft.getMinecraft().thePlayer.getDisplayName();
                                        
                                        ScoreObjective scoreobjective = scoreboard.getObjective("Policier");
                                        if (scoreobjective != null) {
                                        
                                        Score test = scoreboard.func_96529_a(name, scoreobjective);
                                        System.out.println(test.getScorePoints());
                                        if (test.getScorePoints() > 0) {
                                        if (Minecraft.getMinecraft().objectMouseOver.entityHit != null
                                        && Minecraft.getMinecraft().objectMouseOver.entityHit instanceof EntityPlayer) {
                                        
                                        UUID uuid = Minecraft.getMinecraft().objectMouseOver.entityHit.getUniqueID();
                                        
                                        Base.instance.network.sendToServer(new PacketOp(uuid));
                                        }
                                        // }
                                        
                                        // }
                                        // Minecraft.getMinecraft().displayGuiScreen(new
                                        // GuiMouseOver());
                                        
                                        }
                                        }
                                        }
                                        }
                                        if (ClientProxy.gang.isPressed()) {
                                        Minecraft.getMinecraft().displayGuiScreen(new GuiGangMenu());
                                        }
                                        if (ClientProxy.restrain.isPressed()) {
                                        if (Minecraft.getMinecraft().objectMouseOver.entityHit instanceof EntityPlayer) {
                                        Scoreboard scoreboard2 = Minecraft.getMinecraft().theWorld.getScoreboard();
                                        String name2 = Minecraft.getMinecraft().thePlayer.getDisplayName();
                                        ScoreObjective scoreobjective2 = scoreboard2.getObjective("Policier");
                                        EntityPlayer player = (EntityPlayer) Minecraft.getMinecraft().objectMouseOver.entityHit;
                                        EEPRestrained props = EEPRestrained.get(player);
                                        if (Minecraft.getMinecraft().thePlayer.worldObj.isRemote) {
                                        if (scoreobjective2 != null) {
                                        Score test2 = scoreboard2.func_96529_a(name2, scoreobjective2);
                                        System.out.println(test2.getScorePoints());
                                        if (test2.getScorePoints() > 0) {
                                        UUID uuid = Minecraft.getMinecraft().objectMouseOver.entityHit.getUniqueID();
                                        UUID restrainer = Minecraft.getMinecraft().thePlayer.getUniqueID();
                                        Base.instance.network.sendToServer(new PacketRestrain(uuid, restrainer));
                                        // ChatComponentText component = new
                                        // ChatComponentText(EnumChatFormatting.GRAY +
                                        // I18n.format("t4.restraining") +
                                        // player.getDisplayName());
                                        }
                                        }
                                        }
                                        
                                        }
                                        }
                                        if (ClientProxy.unescort.isPressed()) {
                                        
                                        Minecraft.getMinecraft().displayGuiScreen(new GuiSpawn());
                                        
                                        // if (Minecraft.getMinecraft().thePlayer.riddenByEntity != null) {
                                        
                                        // EntityPlayer player = (EntityPlayer)
                                        // Minecraft.getMinecraft().thePlayer.riddenByEntity;
                                        // EntityPlayer lol = Minecraft.getMinecraft().thePlayer;
                                        // System.out.println(player.getDisplayName());
                                        // System.out.println(lol.getDisplayName());
                                        // lol.dismountEntity(lol);
                                        // Base.instance.network.sendToServer(new PacketUnescort(uuid3,
                                        // uuid2));
                                        // System.out.println("packet sent");
                                        // }
                                        }
                                        
                                        /*
                                        * if(Minecraft.getMinecraft().gameSettings.keyBindForward.isPressed()){
                                        * EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                                        * EEPRestrained props = EEPRestrained.get(player);
                                        * if(props.isRestrained()) { event.setCanceled(true); } }
                                        * if(Minecraft.getMinecraft().gameSettings.keyBindBack.isPressed()){
                                        * EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                                        * EEPRestrained props = EEPRestrained.get(player);
                                        * if(props.isRestrained()) { event.setCanceled(true); } }
                                        * if(Minecraft.getMinecraft().gameSettings.keyBindLeft.isPressed()){
                                        * EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                                        * EEPRestrained props = EEPRestrained.get(player);
                                        * if(props.isRestrained()) { event.setCanceled(true); } }
                                        * if(Minecraft.getMinecraft().gameSettings.keyBindRight.isPressed()){
                                        * EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                                        * EEPRestrained props = EEPRestrained.get(player);
                                        * if(props.isRestrained()) { event.setCanceled(true); } }
                                        */
                                        }
                                        
                                        /*
                                        * @SubscribeEvent
                                        * 
                                        * @SideOnly(Side.CLIENT) public void onTickEvent(PlayerTickEvent event) {
                                        * if (Minecraft.getMinecraft().theWorld != null) { EntityPlayer player =
                                        * Minecraft.getMinecraft().thePlayer; EEPRestrained props =
                                        * EEPRestrained.get(player);
                                        * 
                                        * if (player != null && props != null) { if (props.isRestrained()) {
                                        * //IAttributeInstance attribute =
                                        * player.getEntityAttribute(SharedMonsterAttributes.movementSpeed);
                                        * //attribute.applyModifier(new AttributeModifier("Slow", -100D,
                                        * 50).setSaved(false)); player.motionX = 0.0D; player.motionY = 0.0D;
                                        * player.motionZ = 0.0D; player.setJumping(false); } } }
                                        * 
                                        * }
                                        */
                                        /*
                                        * @SubscribeEvent
                                        * 
                                        * @SideOnly(Side.CLIENT) public void onTickEvent(PlayerTickEvent event) {
                                        * if(event.player.inventory.armorInventory[3] != null){
                                        * if(event.player.inventory.armorInventory[3].getItem() == checkArmor) {
                                        * event.player.addPotionEffect(new
                                        * PotionEffect(Potion.waterBreathing.getId(), 0, 3)); } } }
                                        */
                                        
                                        @SubscribeEvent
                                        @SideOnly(Side.CLIENT)
                                        public void onPlayerTickEvent(PlayerTickEvent event) {
                                        /*
                                        * if(GuiSpawn.getSelected() == "dassadsasdasadasd" &&
                                        * Minecraft.getMinecraft().currentScreen == null) {
                                        * Minecraft.getMinecraft().displayGuiScreen(new GuiSpawnMenu()); }
                                        */
                                        // System.out.println("Test 1");
                                        if (event.player.inventory.armorInventory[3] != null) {
                                        // System.out.println("Test 2");
                                        // Minecraft.getMinecraft().displayGuiScreen(new GuiSpawnMenu());
                                        }
                                        }
                                        
                                        @SubscribeEvent
                                        public void onBlockDestroyed(BreakEvent event) {
                                        if (event.block == ModAltisCraft.blockPomme) {
                                        event.getPlayer().inventory.addItemStackToInventory(new ItemStack(Items.apple, 1));
                                        }
                                        }
                                        
                                        }
                                        
                                        

                                        Et ça fonctionne puisque les fonctions dedans marchent et dans la classe principale j’ai dans le init:

                                        FMLCommonHandler.instance().bus().register(new T4EventHandler());
                                        
                                        MinecraftForge.EVENT_BUS.register(new ForgeT4EventHandler());
                                        

                                        >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                        >! Site web     : https://lemnoslife.com

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

                                          En se référant à cette liste : http://www.minecraftforgefrance.fr/forge-events.php , il semblerait que l’event soit un event Forge et non FML, mais tu le met dans la classe qui gèrent les events FML.
                                          L’event devrait se trouver dans ForgeT4EventHandler

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • Benjamin LoisonB Hors-ligne
                                            Benjamin Loison
                                            dernière édition par

                                            Ca a marché merci impec’ j’étais sûr que ça venait de la merci beaucoup !!!

                                            >! Développeur de Altis-Life (Arma III) sur Minecraft !
                                            >! Site web     : https://lemnoslife.com

                                            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