Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    UNSOLVED Enregistrer les NBT Tags et Individualisé les items?

    Support pour les moddeurs
    1.12.2
    2
    13
    61
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Gwar
      Gwar last edited by Gwar

      Bonjour ,
      La problématique : j’ai créé une arme a feu et pour enregistrer mes munitions j’utilise les nbt tags
      enfaite j’ai 2 questions ,:
      ma première était , que quand je quitte le monde mon nbt tag se réinitialise , et donc mes munitions repartes à 0
      ma seconde question , étant que le problème c’est que dès que je tir ou recharge ou qu’importe cela impacte pas que mon arme mais aussi celle du créative tab , dans l’inventaire ?
      Merci
      Capture.PNG

      Mon programme :

      public class ItemWeapon extends Item  {
      
      
      public int maxAmmo;
      public int cooldown;
      public int timer ;
      public Item bullet;
      Minecraft mc = Minecraft.getMinecraft();
      NBTTagCompound nbt = new NBTTagCompound();
      
      public ItemWeapon(String name, int munition,Item itembullet,int cooldown){
      
          this.setUnlocalizedName(name);
          this.setRegistryName(name);
          this.setCreativeTab(Main.SpaceTab);
          Items.ITEMS.add(this);
          this.cooldown = cooldown*20;
          this.maxStackSize = 1;
          bullet = itembullet;
          this.maxAmmo = munition;
      
      }
      private void setmun(int mun){
      
          nbt.setInteger("mun", mun);
      }
      private int getmun(){
      
          int getmun = nbt.getInteger("mun");
          return getmun;
      }
      private boolean setCooldown(int x){
          return timer>= x * cooldown;
      }
      private void Cooldown(){
          mc.player.getCooldownTracker().setCooldown(this, cooldown);
      }
      @Override
      public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
          timer++;
      
          KeyBinding[] keyBindings = ClientProxy.keyBindings;
      
              if (keyBindings[0].isPressed()) {
                  findammo(stack);
              }
      
          super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected);
      }
      private void findammo(ItemStack stack){
      
          if(setCooldown(2) && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == this) {
              timer=0;
              if (mc.player.inventory.hasItemStack(new ItemStack(Items.Bullet)) && nbt.getInteger("mun") <= this.maxAmmo) {
      
                  if (nbt.hasKey("mun")) {
                      setmun(getmun() + 1);
                  } else {
                      setmun(0);
                  }
                  stack.setTagCompound(nbt);
                  mc.player.inventory.clearMatchingItems(this.bullet, 0, 1, null);
                  Cooldown();
                  System.out.println(nbt.getInteger("mun") + "tir");
              }
          }
      }
      @Override
      public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) {
      
          Minecraft mc = Minecraft.getMinecraft();
          if(entityLiving instanceof EntityPlayer)
          {
              if(!entityLiving.world.isRemote)
              {
                  if(!stack.hasTagCompound()) {
                      stack.setTagCompound(new NBTTagCompound());
                  }else{
                      if(getmun() >= 1){
                          if(setCooldown(2)) {
                              EntityBullet entitysnowball = new EntityBullet(entityLiving.world, mc.player);
                              entitysnowball.shoot(mc.player, mc.player.rotationPitch+ 5.0f, mc.player.rotationYaw + 5.0f, 0.0F, 1.5F, 1.0F);
                              entityLiving.world.spawnEntity(entitysnowball);
                              Cooldown();
                              setmun(getmun() - 1);
                          }
                      }else{
                          findammo(stack);
                      }
                  }
      
              }
          }
          return super.onEntitySwing(entityLiving, stack);
      }
      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

        Bonsoir,

        Tu n’utilises pas correctement les NBT. Ta variable NBTTagCompound nbt = new NBTTagCompound(); présent dans la classe de ton item ne devrait pas du tout être présent, car elle n’est connecté a aucune logique de Minecraft (d’où la non sauvegarde des valeurs) et comme elle est lié à ton item, qui est un singleton, elle est partagé entre tous tes ItemWeapon (d’où ce que tu observe sur la capture d’écran 1).

        Il faut que tu utilise stack.getTagCompound() pour obtenir le NBT lié à l’itemstack (qui lui est donc bien unique et sauvegardé par Minecraft).

        Donc au début de ta fonction findammo, ajoutes ceci :

               if(!stack.hasTagCompound()) {
                    stack.setTagCompound(new NBTTagCompound());
               }
               NBTTagCompound nbt = stack.getTagCompound();
        

        Pas besoin de changer le reste.

        Pour les fonctions getmun et setmun il va falloir les adapter afin d’ajouter l’item stack en argument.

        Gwar 1 Reply Last reply Reply Quote 0
        • Gwar
          Gwar @robin4002 last edited by robin4002

          @robin4002 j’ai logiquement fait les modificication mais le jeu crash depuis je ne comprend pas pourquoi ?

              public class ItemWeapon extends Item  {
          
              public int maxAmmo;
              public int cooldown;
              public int timer ;
              public Item bullet;
              Minecraft mc = Minecraft.getMinecraft();
          
              public ItemWeapon(String name, int munition,Item itembullet,int cooldown){
          
                  this.setUnlocalizedName(name);
                  this.setRegistryName(name);
                  this.setCreativeTab(Main.SpaceTab);
                  Items.ITEMS.add(this);
                  this.cooldown = cooldown*20;
                  this.maxStackSize = 1;
                  bullet = itembullet;
                  this.maxAmmo = munition;
          
              }
              private void setmun(ItemStack stack,int mun){
          
                  stack.getTagCompound().setInteger("mun", mun);
          
              }
              private int getmun(ItemStack stack){
                int getmun =  stack.getTagCompound().getInteger("mun");
                  return getmun;
              }
              private boolean setCooldown(int x){
                  return timer>= x * cooldown;
              }
              private void Cooldown(){
                  mc.player.getCooldownTracker().setCooldown(this, cooldown);
              }
              @Override
              public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
                  timer++;
          
                  KeyBinding[] keyBindings = ClientProxy.keyBindings;
          
                      if (keyBindings[0].isPressed()) {
                          findammo(stack);
                      }
          
                  super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected);
              }
              private void findammo(ItemStack stack){
          
                  if(!stack.hasTagCompound()) {
                      stack.setTagCompound(new NBTTagCompound());
                  }else {
                  NBTTagCompound nbt = stack.getTagCompound();
                      if(setCooldown(2) && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == this) {
                          timer = 0;
          
                          if (mc.player.inventory.hasItemStack(new ItemStack(Items.Bullet)) && nbt.getInteger("mun") <= this.maxAmmo) {
          
                              if (nbt.hasKey("mun")) {
                                  setmun(stack, getmun(stack) + 1);
                              } else {
                                  setmun(stack, 0);
                              }
                              stack.setTagCompound(nbt);
                              mc.player.inventory.clearMatchingItems(this.bullet, 0, 1, null);
                              Cooldown();
                              System.out.println(nbt.getInteger("mun") + "tir");
                          }
                      }
                  }
              }
              @Override
              public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) {
          
                  Minecraft mc = Minecraft.getMinecraft();
                          if(entityLiving instanceof EntityPlayer)
                  {
                      if(!entityLiving.world.isRemote)
                      {
                              if(getmun(stack) >= 1){
                                  if(setCooldown(2)) {
                                      EntityBullet entitysnowball = new EntityBullet(entityLiving.world, mc.player);
                                      entitysnowball.shoot(mc.player, mc.player.rotationPitch+ 5.0f, mc.player.rotationYaw + 5.0f, 0.0F, 1.5F, 1.0F);
                                      entityLiving.world.spawnEntity(entitysnowball);
                                      Cooldown();
                                      setmun(stack,getmun(stack) - 1);
                                  }
                              }else{
                                  findammo(stack);
          
                          }
          
                      }
                  }
                  return super.onEntitySwing(entityLiving, stack);
              }
          
              @Override
              public void addInformation(ItemStack stack,  World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
                  tooltip.add(getmun(stack) + "/6 munitions");
          
                  super.addInformation(stack, worldIn, tooltip, flagIn);
              }
          
              public void registerModels() {
                  Main.proxy.registerItemRenderer(this, 0, "inventory");
              }
          
          }
          

          Crash report :

          java.lang.NullPointerException: Initializing game
          	at fr.saizone.space.item.event.gun.ItemWeapon.getmun(ItemWeapon.java:48)
          	at fr.saizone.space.item.event.gun.ItemWeapon.addInformation(ItemWeapon.java:126)
          	at net.minecraft.item.ItemStack.getTooltip(ItemStack.java:707)
          	at net.minecraft.client.Minecraft.lambda$populateSearchTreeManager$1(Minecraft.java:576)
          	at net.minecraft.client.util.SearchTree.index(SearchTree.java:59)
          	at net.minecraft.client.util.SearchTree.add(SearchTree.java:50)
          	at java.lang.Iterable.forEach(Iterable.java:75)
          	at net.minecraft.client.Minecraft.populateSearchTreeManager(Minecraft.java:590)
          	at net.minecraft.client.Minecraft.init(Minecraft.java:529)
          	at net.minecraft.client.Minecraft.run(Minecraft.java:378)
          	at net.minecraft.client.main.Main.main(Main.java:118)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:498)
          	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
          	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:498)
          	at net.minecraftforge.legacydev.Main.start(Main.java:86)
          	at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
          
          
          A detailed walkthrough of the error, its code path and all known details is as follows:
          ---------------------------------------------------------------------------------------
          
          -- Head --
          Thread: Client thread
          Stacktrace:
          	at fr.saizone.space.item.event.gun.ItemWeapon.getmun(ItemWeapon.java:48)
          	at fr.saizone.space.item.event.gun.ItemWeapon.addInformation(ItemWeapon.java:126)
          	at net.minecraft.item.ItemStack.getTooltip(ItemStack.java:707)
          	at net.minecraft.client.Minecraft.lambda$populateSearchTreeManager$1(Minecraft.java:576)
          	at net.minecraft.client.util.SearchTree.index(SearchTree.java:59)
          	at net.minecraft.client.util.SearchTree.add(SearchTree.java:50)
          	at java.lang.Iterable.forEach(Iterable.java:75)
          	at net.minecraft.client.Minecraft.populateSearchTreeManager(Minecraft.java:590)
          	at net.minecraft.client.Minecraft.init(Minecraft.java:529)
          
          -- Initialization --
          Details:
          Stacktrace:
          	at net.minecraft.client.Minecraft.run(Minecraft.java:378)
          	at net.minecraft.client.main.Main.main(Main.java:118)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:498)
          	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
          	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:498)
          	at net.minecraftforge.legacydev.Main.start(Main.java:86)
          	at net.minecraftforge.legacydev.MainClient.main(MainClient.java:29)
          
          1 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

            Tu essaies d’accéder a une valeur d’un tag NBT null.
            Avant chaque utilisation de stack.getTagCompound() il faut que tu t’assures que le tag n’est pas null, en vérifiant avec stack.hasTagCompound()

            Gwar 1 Reply Last reply Reply Quote 0
            • Gwar
              Gwar @robin4002 last edited by

              @robin4002 Merci beaucoup , c’était la première fois que j’utilisais les nbt tag et je suis encore pas très bon en dev en java.

              1 Reply Last reply Reply Quote 0
              • robin4002
                robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                De rien ! Le problème est résolu ?

                Gwar 1 Reply Last reply Reply Quote 0
                • Gwar
                  Gwar @robin4002 last edited by

                  @robin4002 enfaite je viens de remarquer un autre problème , c’est que ça enregistre les nbt tag sur l’item qui se trouve dans l’inventaire , le plus à gauche

                  public class ItemWeapon extends Item  {
                  
                  public int maxAmmo;
                  public int cooldown;
                  public int timer ;
                  public Item bullet;
                  
                      Minecraft mc = Minecraft.getMinecraft();
                     public ItemWeapon(String name, int munition,Item itembullet,int cooldown){
                  
                      this.setUnlocalizedName(name);
                      this.setRegistryName(name);
                      this.setCreativeTab(Main.SpaceTab);
                      Items.ITEMS.add(this);
                      this.cooldown = cooldown*20;
                      this.maxStackSize = 1;
                      bullet = itembullet;
                      this.maxAmmo = munition;
                  
                  }
                  private void setmun(ItemStack stack,int mun){
                      if(!stack.hasTagCompound()){
                          stack.setTagCompound(new NBTTagCompound());
                      }
                      {
                          stack.getTagCompound().setInteger("mun", mun);
                      }
                  }
                  private int getmun(ItemStack stack){
                      if(!stack.hasTagCompound()){
                          stack.setTagCompound(new NBTTagCompound());
                      }
                      {
                          int getmun = stack.getTagCompound().getInteger("mun");
                          return getmun;
                      }
                  }
                  private boolean setCooldown(int x){
                      return timer>= x * cooldown;
                  }
                  private void Cooldown(){
                      mc.player.getCooldownTracker().setCooldown(this, cooldown);
                  }
                  @Override
                  public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
                      timer++;
                  
                      KeyBinding[] keyBindings = ClientProxy.keyBindings;
                      if(!stack.hasTagCompound()){
                          stack.setTagCompound(new NBTTagCompound());
                      }
                      {
                          if (keyBindings[0].isPressed()) {
                              findammo(stack);
                          }
                      }
                      super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected);
                  }
                  private void findammo(ItemStack stack){
                  
                      if(!stack.hasTagCompound()) {
                          stack.setTagCompound(new NBTTagCompound());
                      }else {
                      NBTTagCompound nbt = stack.getTagCompound();
                          if(setCooldown(2) && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == this) {
                              timer = 0;
                  
                              if (mc.player.inventory.hasItemStack(new ItemStack(Items.Bullet)) && nbt.getInteger("mun") <= this.maxAmmo) {
                  
                                  if (nbt.hasKey("mun")) {
                                      setmun(stack, getmun(stack) + 1);
                                  } else {
                                      setmun(stack, 0);
                                  }
                                  stack.setTagCompound(nbt);
                                  mc.player.inventory.clearMatchingItems(this.bullet, 0, 1, null);
                                  Cooldown();
                                  System.out.println(nbt.getInteger("mun") + "tir");
                              }
                          }
                      }
                  }
                  @Override
                  public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) {
                  
                      Minecraft mc = Minecraft.getMinecraft();
                              if(entityLiving instanceof EntityPlayer)
                      {
                          if(!entityLiving.world.isRemote)
                          {
                              if(!stack.hasTagCompound()){
                                  stack.setTagCompound(new NBTTagCompound());
                              }
                              {
                                  if (getmun(stack) >= 1) {
                                      if (setCooldown(2)) {
                                          EntityBullet entitysnowball = new EntityBullet(entityLiving.world, mc.player);
                                          entitysnowball.shoot(mc.player, mc.player.rotationPitch + 5.0f, mc.player.rotationYaw + 5.0f, 0.0F, 1.5F, 1.0F);
                                          entityLiving.world.spawnEntity(entitysnowball);
                                          Cooldown();
                                          setmun(stack, getmun(stack) - 1);
                                      }
                                  } else {
                                      findammo(stack);
                  
                                  }
                              }
                          }
                      }
                      return super.onEntitySwing(entityLiving, stack);
                  }
                  1 Reply Last reply Reply Quote 0
                  • robin4002
                    robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                    Étrange, je ne vois pas ce qui peut expliquer ce comportement 😕

                    Gwar 3 Replies Last reply Reply Quote 0
                    • Gwar
                      Gwar @robin4002 last edited by

                      @robin4002 j’ai finalement réussi en utilisant la fonction :

                      findammo(mc.player.inventory.getCurrentItem());

                      1 Reply Last reply Reply Quote 0
                      • Gwar
                        Gwar @robin4002 last edited by

                        @robin4002 Enfaite je viens de regarder j’ai rien changer à mon code , mais le problème c’est que je ne sais pas pourquoi mais quand je relance le monde il y a 1 arme qui est rechargé a 1/6 et les autres à 0/6 à chaque fois que je reviens dans le monde e je ne sais pas d’ou ça viens
                        Le problème avait été résolu mais je ne sais pas pourquoi il est revenue :

                        public class ItemWeapon extends Item  {
                        
                        public int maxAmmo;
                        public int cooldown;
                        public int timer ;
                        public Item bullet;
                        
                        Minecraft mc = Minecraft.getMinecraft();
                        public ItemWeapon(String name, int munition,Item itembullet,int cooldown){
                        
                            this.setUnlocalizedName(name);
                            this.setRegistryName(name);
                            this.setCreativeTab(Main.SpaceTab);
                            Items.ITEMS.add(this);
                            this.cooldown = cooldown*20;
                            this.maxStackSize = 1;
                            bullet = itembullet;
                            this.maxAmmo = munition;
                        
                        }
                        private void setmun(ItemStack stack,int mun){
                            if(!stack.hasTagCompound()){
                                stack.setTagCompound(new NBTTagCompound());
                            }
                            {
                                stack.getTagCompound().setInteger("mun", mun);
                            }
                        }
                        private int getmun(ItemStack stack){
                            if(!stack.hasTagCompound()){
                                stack.setTagCompound(new NBTTagCompound());
                            }
                            {
                                int getmun = stack.getTagCompound().getInteger("mun");
                                return getmun;
                            }
                        }
                        private boolean setCooldown(int x){
                            return timer>= x * cooldown;
                        }
                        private void Cooldown(){
                            mc.player.getCooldownTracker().setCooldown(this, cooldown);
                        }
                        @Override
                        public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) {
                            timer++;
                        
                            KeyBinding[] keyBindings = ClientProxy.keyBindings;
                            if(!stack.hasTagCompound()){
                                stack.setTagCompound(new NBTTagCompound());
                            }
                            {
                                if (keyBindings[0].isPressed()) {
                                    findammo(mc.player.inventory.getCurrentItem());
                        
                                }
                            }
                            super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected);
                        }
                        private void findammo(ItemStack stack){
                        
                            if(!stack.hasTagCompound()) {
                                stack.setTagCompound(new NBTTagCompound());
                            }else {
                                NBTTagCompound nbt = stack.getTagCompound();
                                if(setCooldown(2) && mc.player.getHeldItem(EnumHand.MAIN_HAND).getItem() == this) {
                                    timer = 0;
                        
                                    if (mc.player.inventory.hasItemStack(new ItemStack(Items.Bullet)) && nbt.getInteger("mun") <= this.maxAmmo) {
                        
                                        if (nbt.hasKey("mun")) {
                                            setmun(stack, getmun(stack) + 1);
                                        } else {
                                            setmun(stack, 0);
                                        }
                                        stack.setTagCompound(nbt);
                                        mc.player.inventory.clearMatchingItems(this.bullet, 0, 1, null);
                                        Cooldown();
                                        System.out.println(nbt.getInteger("mun") + "tir");
                                    }
                                }
                            }
                        }
                        @Override
                        public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) {
                        
                            Minecraft mc = Minecraft.getMinecraft();
                            if(entityLiving instanceof EntityPlayer)
                            {
                                if(!entityLiving.world.isRemote)
                                {
                                    if(!stack.hasTagCompound()){
                                        stack.setTagCompound(new NBTTagCompound());
                                    }
                                    {
                                        if (getmun(stack) >= 1) {
                                            if (setCooldown(2)) {
                                                EntitySnowball entitysnowball = new EntitySnowball(entityLiving.world, mc.player);
                                                entitysnowball.shoot(mc.player, mc.player.rotationPitch + 5.0f, mc.player.rotationYaw + 5.0f, 0.0F, 1.5F, 1.0F);
                                                entityLiving.world.spawnEntity(entitysnowball);
                                                Cooldown();
                                                setmun(stack, getmun(stack) - 1);
                                            }
                                        } else {
                                            findammo(mc.player.inventory.getCurrentItem());
                        
                        
                                        }
                                    }
                                }
                            }
                            return super.onEntitySwing(entityLiving, stack);
                        }
                        
                        @Override
                        public void addInformation(ItemStack stack,  World worldIn, List<String> tooltip, ITooltipFlag flagIn) {
                            if(!stack.hasTagCompound()){
                                stack.setTagCompound(new NBTTagCompound());
                            }
                            {
                                tooltip.add(getmun(stack) + "/6 munitions");
                            }
                            super.addInformation(stack, worldIn, tooltip, flagIn);
                        }
                        
                        public void registerModels() {
                            Main.proxy.registerItemRenderer(this, 0, "inventory");
                        }
                        

                        }

                        1 Reply Last reply Reply Quote 0
                        • Gwar
                          Gwar @robin4002 last edited by

                          @robin4002 tu en penses quoi robin ?

                          1 Reply Last reply Reply Quote 0
                          • robin4002
                            robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                            Je ne sais pas

                            Gwar 1 Reply Last reply Reply Quote 0
                            • Gwar
                              Gwar @robin4002 last edited by

                              @robin4002 car j’ai essayé de voir de regarder mais a chaque fois ça se remet à 0 mais je ne comprend pas pourquoi

                              1 Reply Last reply Reply Quote 0
                              • 1 / 1
                              • First post
                                Last post
                              Design by Woryk
                              Contact / Mentions Légales / Faire un don

                              MINECRAFT FORGE FRANCE © 2018

                              Powered by NodeBB