• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Fluids 1.7.10

Tutoriels des membres
1.7.10
8
25
1.7k
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.
  • Ciolgaming
    Ciolgaming dernière édition par robin4002 30 août 2019, 18:55 3 juil. 2018, 18:02

    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 10 mars 2019, 10:25 Répondre Citer 1
    • W
      whartokx @Ciolgaming dernière édition par whartokx 10 mars 2019, 10:26 10 mars 2019, 10:25

      @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
      • Ciolgaming
        Ciolgaming dernière édition par Ciolgaming 11 mars 2019, 20:09 11 mars 2019, 20:07

        @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
        • JustAnDev
          JustAnDev dernière édition par 16 avr. 2019, 06:31

          @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
            Blackbalrog dernière édition par 30 août 2019, 14:09

            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
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 30 août 2019, 18:57

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

              AstFaster 1 réponse Dernière réponse 3 nov. 2019, 10:56 Répondre Citer 0
              • B
                Blackbalrog dernière édition par 30 août 2019, 19:08

                Merci.

                1 réponse Dernière réponse Répondre Citer 0
                • S
                  skyreth dernière édition par 31 août 2019, 21:48

                  Ce message a été supprimé !
                  1 réponse Dernière réponse Répondre Citer 0
                  • AstFaster
                    AstFaster @robin4002 dernière édition par 3 nov. 2019, 10:56

                    @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
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 3 nov. 2019, 10:59

                      Vérifies ton event FillBucketEvent

                      AstFaster 1 réponse Dernière réponse 3 nov. 2019, 10:59 Répondre Citer 0
                      • AstFaster
                        AstFaster @robin4002 dernière édition par robin4002 3 nov. 2019, 14:31 3 nov. 2019, 10:59

                        @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
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par robin4002 3 nov. 2019, 14:31 3 nov. 2019, 14:30

                          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.

                          AstFaster 1 réponse Dernière réponse 3 nov. 2019, 15:30 Répondre Citer 0
                          • AstFaster
                            AstFaster dernière édition par 3 nov. 2019, 15:25

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

                            1 réponse Dernière réponse Répondre Citer 0
                            • AstFaster
                              AstFaster @robin4002 dernière édition par 3 nov. 2019, 15:30

                              @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
                              • robin4002
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 3 nov. 2019, 20:12

                                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
                                • AstFaster
                                  AstFaster dernière édition par 4 nov. 2019, 12:52

                                  Merci Bcp !

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • AstFaster
                                    AstFaster dernière édition par 10 nov. 2019, 17:39

                                    @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
                                    • robin4002
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 10 nov. 2019, 18:39

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

                                      AstFaster 1 réponse Dernière réponse 13 nov. 2019, 15:23 Répondre Citer 0
                                      • AstFaster
                                        AstFaster dernière édition par 10 nov. 2019, 19:59

                                        mrc

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • AstFaster
                                          AstFaster @robin4002 dernière édition par 13 nov. 2019, 15:23

                                          @robin4002 Juste comment tu add un effet ?

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 1
                                          • 2
                                          • 1 / 2
                                          8 sur 25
                                          • Premier message
                                            8/25
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB