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

    Nouveau fluide en source infini + remplacement fluide nouveau biome

    Sans suite
    1.7.10
    4
    17
    3083
    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.
    • S
      sventus last edited by

      Bonjour à vous mes loulous,

      alors voila, j’ai récemment fait un liquide qui marche parfaitement bien (enfin il coule bien ;))  j’aimerais maintenant l’intégrer dans mon biome, donc qu’il remplace l’eau qui y est présente et en même temps,  j’aimerais ajouté un effet quand on se trouve dans l’eau (un effet de poison).

      le problème c’est que j’ai pas vraiment d’idée sur la façon de faire.  Je pensais tout d’abord à quelque chose comme ça :

      player.addPotionEffect(new PotionEffect(21, 450, 1));

      mais je vois pas comment agir sur le fait qu’il doit être dans l’eau pour que l’effet marche.

      Donc si vous avez des idées pour les deux points, je vous en serez reconnaissant.

      Merci à vous,
      Antho

      1 Reply Last reply Reply Quote 0
      • AymericRed
        AymericRed last edited by

        Bonjour,
        Ton idée pour l’effet est bonne, il faut que tu utilises ça dans la fonction ```java
        public void onEntityCollidedWithBlock(World p_149670_1_, int p_149670_2_, int p_149670_3_, int p_149670_4_, Entity p_149670_5_) {}

        Pour la génération dans ton biome, je sais pas mais tu dois avoir un truc en rapport avec "water" dans la classe de ton biome, ou la(les) classe(s) parente(s) (celle du extends).

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

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

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

        1 Reply Last reply Reply Quote 0
        • S
          sventus last edited by

          je vais voir ça, mais c’est pas dans l’eau que je veux cet effet, c’est dans un nouveau fluide.

          Merci en tout cas

          1 Reply Last reply Reply Quote 0
          • AymericRed
            AymericRed last edited by

            Oui j’ai compris ^^il faut que tu mettes cette fonction dans le bloc de ton fluide.

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

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

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

            1 Reply Last reply Reply Quote 0
            • S
              sventus last edited by

              pourtant en mettant ça

              public void onEntityCollidedWithBlock(World p_149670_1_, int p_149670_2_, int p_149670_3_, int p_149670_4_, EntityPlayer player) {
              
              player.addPotionEffect(new PotionEffect(19, 450, 10));
              }
              ``` il ne se passe rien en rentrant.
              
              et aussi voila la class complète :
              
              ```java
              package fr.craftesys.craftesys.blocs;
              
              import net.minecraft.block.material.Material;
              import net.minecraft.client.renderer.texture.IIconRegister;
              import net.minecraft.entity.player.EntityPlayer;
              import net.minecraft.potion.PotionEffect;
              import net.minecraft.util.IIcon;
              import net.minecraft.world.IBlockAccess;
              import net.minecraft.world.World;
              import net.minecraftforge.fluids.BlockFluidClassic;
              import net.minecraftforge.fluids.Fluid;
              
              public class BlockFluid extends BlockFluidClassic
              {
              private IIcon stillIcon, flowingIcon;
              
              public BlockFluid(Fluid fluid, Material material)
              {
              super(fluid, material);
              }
              
              public IIcon getIcon(int side, int meta)
              {
              return (side == 0 || side == 1) ? stillIcon : flowingIcon;
              }
              
              public void registerBlockIcons(IIconRegister register)
              {
              stillIcon = register.registerIcon("craftesys:fluide1");
              flowingIcon = register.registerIcon("craftesys:fluide2");
              }
              
              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 void onEntityCollidedWithBlock(World p_149670_1_, int p_149670_2_, int p_149670_3_, int p_149670_4_, EntityPlayer player) {
              
              player.addPotionEffect(new PotionEffect(19, 450, 10));
              }
              }
              

              j’aimerais faire comme l’eau, faire des sources infini car la, je peux pas placer deux fois le fluide l’un à côté de l’autre

              1 Reply Last reply Reply Quote 0
              • AymericRed
                AymericRed last edited by

                Mets un System.out.println dans la fonction et regardes si elle est appelée dans la console.
                Pour la source infinie, prends exemple sur le code du bloc de l’eau.

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

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

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

                1 Reply Last reply Reply Quote 0
                • S
                  sventus last edited by

                  je comprend justement rien dans le block de l’eau avec ces noms de fonctions à la noix xD

                  non le println fait rien donc elle est pas appelé

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

                    Ajoutes un @Override au dessus de la fonction, si ça fait une erreur ça veut dire que ce n’est pas la bonne fonction.

                    1 Reply Last reply Reply Quote 0
                    • darkvince37
                      darkvince37 last edited by

                      @‘sventus’:

                      je comprend justement rien dans le block de l’eau avec ces noms de fonctions à la noix xD

                      non le println fait rien donc elle est pas appelé

                      Essaye sa

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

                      La c’est pas poison mais juste pour voir

                      1 Reply Last reply Reply Quote 0
                      • S
                        sventus last edited by

                        le @Override  me dit : The method onEntityCollidedWithBlock(World, int, int, int, EntityPlayer) of type BlockFluid must override or implement a supertype method

                        rien de plus avec ce que tu m’as passé dark

                        1 Reply Last reply Reply Quote 0
                        • darkvince37
                          darkvince37 last edited by

                          @‘sventus’:

                          le @Override  me dit : The method onEntityCollidedWithBlock(World, int, int, int, EntityPlayer) of type BlockFluid must override or implement a supertype method

                          rien de plus avec ce que tu m’as passé dark

                          Chez moi le code que j’ai envoyé fonctionne

                          Ma class: (si sa peut aidé car chez moi il fonctionne)

                          package fr.darkvince.ultrav2.ultrawather;
                          
                          import java.awt.Color;
                          import net.minecraft.block.Block;
                          import net.minecraft.block.material.Material;
                          import net.minecraft.client.renderer.texture.IIconRegister;
                          import net.minecraft.entity.Entity;
                          import net.minecraft.entity.EntityLivingBase;
                          import net.minecraft.util.DamageSource;
                          import net.minecraft.util.IIcon;
                          import net.minecraft.world.IBlockAccess;
                          import net.minecraft.world.World;
                          import net.minecraftforge.fluids.BlockFluidClassic;
                          import net.minecraftforge.fluids.Fluid;
                          
                          public class BlockFluidTutorial
                            extends BlockFluidClassic
                          {
                            private IIcon stillIcon;
                            private IIcon flowingIcon;
                          
                            public BlockFluidTutorial(Fluid fluid, Material material)
                            {
                              super(fluid, material);
                            }
                          
                            public IIcon func_149691_a(int side, int meta)
                            {
                              return (side == 0) || (side == 1) ? this.stillIcon : this.flowingIcon;
                            }
                          
                            public void registerBlockIcons(IIconRegister register)
                            {
                              this.stillIcon = register.registerIcon("ultrav2:ultra_fluid_still");
                              this.flowingIcon = register.registerIcon("ultrav2:ultra_fluid_flow");
                            }
                          
                            public int getColor()
                            {
                              return new Color(80, 123, 138).getRGB();
                            }
                          
                            public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
                            {
                              if (((entity instanceof EntityLivingBase)) && (!world.isRemote)) {
                                ((EntityLivingBase)entity).attackEntityFrom(DamageSource.magic, 2.0F);
                              }
                            }
                          
                            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);
                            }
                          }
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • S
                            sventus last edited by

                            effectivement je prend des dégats  merci <3.

                            1 Reply Last reply Reply Quote 0
                            • S
                              sventus last edited by

                              Bonjour (c’est pas un double post, j’avais un soucis qui je pensais été résolu mais en réalité j’ai remarqué qu’il y avait d’autres problèmes ^^.

                              1 Reply Last reply Reply Quote 0
                              • S
                                sventus last edited by

                                Finalement, voila les deux points qui bloquent :

                                • possibilité de faire une source infinie
                                • remplacer l’eau du biome par le nouveau fluide
                                1 Reply Last reply Reply Quote 0
                                • S
                                  sventus last edited by

                                  personne n’a d’idée ? j’ai essayé de changer les extends comme l’a dit robin mais en vain 😕

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    sventus last edited by

                                    j’ai éssayé de faire cela pour pour changer l’eau par mon block dans mon biome, mais cela ne change rien :

                                    
                                    @Override
                                    public BiomeDecorator createBiomeDecorator() {
                                    
                                    MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z));
                                    int i;
                                    int j;
                                    int k;
                                    int l;
                                    int i1;
                                    boolean doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, LAKE);
                                    if (doGen && this.generateLakes)
                                    {
                                    for (j = 0; j < 50; ++j)
                                    {
                                    k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                                    l = this.randomGenerator.nextInt(this.randomGenerator.nextInt(248) + 8);
                                    i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                                    (new WorldGenLiquids(Mods.fluidblock)).generate(this.currentWorld, this.randomGenerator, k, l, i1);
                                    }
                                    
                                    for (j = 0; j < 20; ++j)
                                    {
                                    k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                                    l = this.randomGenerator.nextInt(this.randomGenerator.nextInt(this.randomGenerator.nextInt(240) + 8) + 8);
                                    i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                                    (new WorldGenLiquids(Mods.fluidblock)).generate(this.currentWorld, this.randomGenerator, k, l, i1);
                                    }
                                    }
                                    
                                    MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Post(currentWorld, randomGenerator, chunk_X, chunk_Z));
                                    
                                    return super.createBiomeDecorator();
                                    }
                                    
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • AymericRed
                                      AymericRed last edited by

                                      Pour désactiver les lacs, il faut faire

                                      
                                      this.theBiomeDecorator.generateLakes = false;
                                      

                                      dans le constructeur du biome, mais pour remplacer l’eau, il faut que tu override la fonction “createBiomeDecorator”, que tu mettes un BiomeDecorator custome en return et dans celui-ci, tu copies la fonction “genDecorations” de BiomeDecorator, et à la fin tu as le génération de l’eau que tu peux changer

                                      Il faut obligatoirement passer par un BiomeDecorator custom.

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

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

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

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

                                      MINECRAFT FORGE FRANCE © 2018

                                      Powered by NodeBB