MFF

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

    Fluids 1.7.10

    Planifier Épinglé Verrouillé Déplacé Tutoriels des membres
    1.7.10
    25 Messages 8 Publieurs 2.4k Vues 8 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.
    • CiolgamingC Hors-ligne
      Ciolgaming
      dernière édition par robin4002

      Introduction

      Dans ce tutoriel, vous allez apprendre à faire un fluid qui ressemblera à celà :

      text alternatif

      Pré-requis

      • Créer un block
      • Créer un Item

      Code

      Classe Principale

      public static Block poisenouswaterb;
      public static Fluid poison;
      public static Item poisonbucket;
      

      Il faudra déclarer cela dans ta classe principale,

      Ensuite on va aller dans PreInit de ta classe principale et mettre :

      	@EventHandler
      	public void preInit(FMLPreInitializationEvent event)
      	{
      		poison = new Fluid("poison").setDensity(4000).setViscosity(500).setTemperature(286).setLuminosity(10).setUnlocalizedName("poison"); //on cree notre fluid que l'on nomme poison
              FluidRegistry.registerFluid(poison); // on register notre fluid
              poison = FluidRegistry.getFluid("poison");
      
              poisenouswaterb = new BlockFluidPoison(poison, Material.water).setBlockTextureName(Reference.MOD_ID + ":poison"); // on crée notre block
      		GameRegistry.registerBlock(poisenouswaterb, poisenouswaterb.getUnlocalizedName().substring(5)); //puis on le register
      
      poisonbucket = new ItemBucketPoison(CiolMod.poisenouswaterb).setUnlocalizedName("poisonbucket").setCreativeTab(CreativeTabs.tabMisc).setContainerItem(Items.bucket).setTextureName(Reference.MOD_ID + ":poisonbucket"); //on definit notre sceau de poison
      
      GameRegistry.registerItem(poisonbucket , "poisonbucket "); // on register l'item
      
      FluidContainerRegistry.registerFluidContainer(FluidRegistry.getFluidStack("poison", FluidContainerRegistry.BUCKET_VOLUME), new ItemStack(ItemMod.poisonbucket), FluidContainerRegistry.EMPTY_BUCKET);
      }
      

      Classe de notre block de poison :

      public class BlockFluidPoison extends BlockFluidClassic {
          
          public boolean canDisplace(IBlockAccess world, int x, int y, int z)
          {
              if(world.getBlock(x, y, z).getMaterial().isLiquid())
              {
                  return false;
              }
              return super.canDisplace(world, x, y, z);
          }
          
          public boolean displaceIfPossible(World world, int x, int y, int z)
          {
              if(world.getBlock(x, y, z).getMaterial().isLiquid())
              {
                  return false;
              }
              return super.displaceIfPossible(world, x, y, z);
          }
      
      	public BlockFluidPoison(Fluid fluid, Material material) {
      		super(fluid, material);
      	}
      }
      

      La class de notre sceau :

      public class ItemBucketPoison extends ItemBucket {
      
      	public ItemBucketPoison(Block p_i45331_1_) {
      		super(p_i45331_1_);
      	}
      }
      

      Les event :

      Retournons dans notre class principale :

      ajoutons-y :

          @SubscribeEvent
          public void onBucketFill(FillBucketEvent event)
          {
              Block id = event.world.getBlock(event.target.blockX, event.target.blockY, event.target.blockZ);
              int metadata = event.world.getBlockMetadata(event.target.blockX, event.target.blockY, event.target.blockZ);
              if(id == this.poisenouswaterb && metadata == 0)
              {
                  event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ);
                  if (!event.world.isRemote){
                  	event.entityPlayer.inventory.consumeInventoryItem(Items.bucket);
                      EntityItem itemsc = new EntityItem(event.world, event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ, new ItemStack(this.poisonbucket, 1));
                      event.world.spawnEntityInWorld(itemsc);
                  }
              }
          }
      

      Pour terminer on va register l’event dans la class principale dans postInit :

      MinecraftForge.EVENT_BUS.register(this);
      

      Bonus

      Si vous voulez ajouter des dégats à votre liquide, il suffit d’ajouter celà à la class de votre block :

          public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
          {
            if (((entity instanceof EntityLivingBase)) && (!world.isRemote)) {
              ((EntityLivingBase)entity).attackEntityFrom(DamageSource.drown, 1.0F);
            }
          }
      

      Merci d’avoir suivi mon tutoriel, si il vous à aidé n’hésitez pas a me donner 1 point positif 😉

      Si vous trouvez une erreur dans le tutoriel, merci de me le signaler

      Ce tutoriel de Ciolgaming publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      W 1 réponse Dernière réponse Répondre Citer 1
      • W Hors-ligne
        whartokx @Ciolgaming
        dernière édition par whartokx

        @Ciolgaming problème, quand on récupère le fluide avec un seau on reçois de l’eau. normal? ma classe principale : https://pastebin.com/xBEwcxUH

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

          @whartokx a dit dans Fluids 1.7.10 :

          https://pastebin.com/xBEwcxUH

          A mon avis tu as oubié de register l’event, regarde le tuto sur les events 🙂

          C’est un truc du genre FMLRegisterEvent.register(this);
          Je suis plus ^sûr en 1.7 déso

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

            @Ciolgaming a dit dans Fluids 1.7.10 :

            @SubscribeEvent public void onBucketFill(FillBucketEvent event) { Block id = event.world.getBlock(event.target.blockX, event.target.blockY, event.target.blockZ); int metadata = event.world.getBlockMetadata(event.target.blockX, event.target.blockY, event.target.blockZ); if(id == this.poisenouswaterb && metadata == 0) { event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ); if (!event.world.isRemote){ event.entityPlayer.inventory.consumeInventoryItem(Items.bucket); EntityItem itemsc = new EntityItem(event.world, event.entityPlayer.posX, event.entityPlayer.posY, event.entityPlayer.posZ, new ItemStack(this.poisonbucket, 1)); event.world.spawnEntityInWorld(itemsc); } } }

            en 1.8 ca marche a moitié le code pour recup bucket ne marche pas

            s

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

              Refais ton tutoriel ou alors quelqu’un le refais je n’ai pas tous compris s’il vous plait.

              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

                Bonsoir,
                J’ai remis en forme le tutoriel (beaucoup de balise cassé dû au passage vers NodeBB), cela sera probablement mieux maintenant.

                AstFasterA 1 réponse Dernière réponse Répondre Citer 0
                • B Hors-ligne
                  Blackbalrog
                  dernière édition par

                  Merci.

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

                    Ce message a été supprimé !
                    1 réponse Dernière réponse Répondre Citer 0
                    • AstFasterA Hors-ligne
                      AstFaster @robin4002
                      dernière édition par

                      @robin4002 Moi aussi je récupère de l’eau et pourtant g bien tout suivi

                      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

                        Vérifies ton event FillBucketEvent

                        AstFasterA 1 réponse Dernière réponse Répondre Citer 0
                        • AstFasterA Hors-ligne
                          AstFaster @robin4002
                          dernière édition par robin4002

                          @robin4002 Je viens de le faire
                          Et tjrs rien. Tu veux mon code ?

                          tiens ma classe principale
                          https://pastebin.com/cPdDV3BV

                          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 robin4002

                            Tu as vérifié que l’événement est bien appelé en mettant un point d’arrêt ou un print dedans ?

                            Et sinon un message ça suffit, inutile de spammer. Il y a l’option éditer pour ajouter du contenu à un message.

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

                              Et mon print il s’affichera où @robin4002 ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • AstFasterA Hors-ligne
                                AstFaster @robin4002
                                dernière édition par

                                @robin4002 Je viens de tester et quand mon event et censé sa déclencher. Il ne se passe rien

                                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

                                  En effet et j’ai trouvé pourquoi, il te manque @Mod.EventHandler au-dessus de init et postInit.

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

                                    Merci Bcp !

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

                                      @robin4002 Connais-tu une méthode pour rajouter de la vie à la place d’en enlever
                                      ?

                                      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

                                        Donner l’effet de régénération. Ou juste appeler la méthode setHealth de l’entité.

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

                                          mrc

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • AstFasterA Hors-ligne
                                            AstFaster @robin4002
                                            dernière édition par

                                            @robin4002 Juste comment tu add un effet ?

                                            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