MFF

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

    Ajout de plusieurs Fluids

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    37 Messages 4 Publieurs 2.0k Vues 4 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Peux-tu envoyer le code de ta classe ModBlocks

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

        Problème à Moitié résolu :

        package fr.luky.feurimod.utils.handlers;
        
        import fr.luky.feurimod.init.ModBlocks;
        import fr.luky.feurimod.utils.Reference;
        import net.minecraft.block.Block;
        import net.minecraft.block.state.IBlockState;
        import net.minecraft.client.renderer.ItemMeshDefinition;
        import net.minecraft.client.renderer.block.model.ModelResourceLocation;
        import net.minecraft.client.renderer.block.statemap.StateMapperBase;
        import net.minecraft.item.Item;
        import net.minecraft.item.ItemStack;
        import net.minecraft.util.ResourceLocation;
        import net.minecraftforge.client.model.ModelLoader;
        
        public class RenderHandler {
        
            public static Block blockFluid = ModBlocks.MOLTEN_IRIDIUM_BLOCK;
        
            public static void registerCustomMeshesAndStates(){
                ModelLoader.setCustomMeshDefinition(Item.getItemFromBlock((Block) blockFluid), new ItemMeshDefinition() {
                    @Override
                    public ModelResourceLocation getModelLocation(ItemStack stack) {
                        return new ModelResourceLocation(new ResourceLocation(Reference.MODID, blockFluid.getUnlocalizedName().substring(5)), "fluid");
                    }
                });
                ModelLoader.setCustomStateMapper((Block) blockFluid, new StateMapperBase() {
                    @Override
                    protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
                        return new ModelResourceLocation(new ResourceLocation(Reference.MODID, blockFluid.getUnlocalizedName().substring(5)), "fluid");
                    }
                });
            }
        }
        

        mais maintenant je n’arrive plus à ajouter mon 2 ème fluid dans la variable blockFluid…
        Comment puis je faire ?

        Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
        Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

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

          toujours aucune réponse🤔. Il n’y a vraiment personne pour m’aider ?

          Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
          Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

          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

            Tu peux envoyer la classe dans laquelle tes fluides sont déclarés ?

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

              la voila:

              package fr.luky.feurimod.init;
              
              import fr.luky.feurimod.fluids.FluidFeurimodFluid;
              import net.minecraft.util.ResourceLocation;
              import net.minecraftforge.fluids.Fluid;
              import net.minecraftforge.fluids.FluidRegistry;
              
              public class ModFluids {
              
                  public static final Fluid MOLTEN_IRIDIUM_FLUID = new FluidFeurimodFluid("molten_iridium", new ResourceLocation("feurimod:blocks/molten_iridium_still"), new ResourceLocation("feurimod:blocks/molten_iridium_flow"));
                  public static final Fluid MOLTEN_FEURIUM_FLUID = new FluidFeurimodFluid("molten_feurium", new ResourceLocation("feurimod:blocks/molten_feurium_still"), new ResourceLocation("feurimod:blocks/molten_feurium_flow"));
              
                  public static void registerFluids(){
                      registerFluid(MOLTEN_IRIDIUM_FLUID);
                      registerFluid(MOLTEN_FEURIUM_FLUID);
                  }
              
                  public static void registerFluid(Fluid fluid){
                      FluidRegistry.registerFluid(fluid);
                      FluidRegistry.addBucketForFluid(fluid);
                  }
              }
              

              et ma classe FluidFeurimodFluid:

              package fr.luky.feurimod.fluids;
              
              import net.minecraft.util.ResourceLocation;
              import net.minecraftforge.fluids.Fluid;
              
              public class FluidFeurimodFluid extends Fluid {
              
              
                  public FluidFeurimodFluid(String name, ResourceLocation still, ResourceLocation flowing) {
                      super(name, still, flowing);
                      this.setUnlocalizedName(name);
                  }
              }
              

              Mais pourquoi ces classes alors que le problème est aux 3/4 résolu (je n’arrive juste pas a ajouter mon deuxième fluid dans ma variable blockFluid) ?

              Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
              Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

              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

                Parce que je ne vois pas où est ton problème, donc il faut bien une vu d’ensemble, non ?

                Sur les exemples de forge, la ModelResourceLocation a comme valeur “normal” au lieu de “fluid”, peut-être que le problème vient de là https://github.com/MinecraftForge/MinecraftForge/blob/1.12.x/src/test/java/net/minecraftforge/debug/fluid/FluidPlacementTest.java#L110

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

                  Aaaaaah on as eu un petit décalage.😩
                  En fait le problème des textures est déja réglé (j’ai réussi a ajouter ma texture via une variable) mais maintenant le problème c’est que je n’arrive pas à ajouter mon second fluid à cette variable(en fait je suis meme pas sur que c’est une variable vu mon niveau en programation)

                  Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

                  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

                    Par rapport à ce message ? https://www.minecraftforgefrance.fr/topic/6066/ajout-de-plusieurs-fluids/7?_=1585578136723

                    La variable que tu as créé ne change rien par rapport au premier code (la seule différence étant que tu n’as plus qu’un fluide au lieu de deux). Mais sinon cela revient au même …
                    EDIT : ah si, il y a une différence, le ResourceLocation n’est pas identique.

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

                      Donc est il possible d’enregistrer mes fluid via une variable ??

                      Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

                      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

                        Oui, mais en soit la présence de cette variable ne change rien. Tu peux mettre directement ModBlocks.MOLTEN_IRIDIUM_BLOCK là où tu utilises blockFluid.

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

                          Mon objectif c’est que dans cette variable, on aie tous mes fluids (donc molten_iridium_block ET molten_feurium_block)

                          Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

                          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

                            Non mais ça ce n’est pas possible.
                            Enfin pas avec son type actuel, il te faut une array pour que ce soit le cas.

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

                              Super 😁😁
                              Mais du coup j’utilise une liste où autre chose ??

                              Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                              Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

                              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

                                Un array.
                                Mais je ne vois pas en quoi cela va résoudre ton problème …

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

                                  oui j’ai hue le même problème jusque a aujourd’hui ou j’ai compris cette erreur,
                                  le constructeur complet que tu utilise est pas bons sais un constructeur de fluid démonstration que on trouve sur le net et montrée sur YouTube aussi.
                                  Juste ou j’ai hue une idée de voir le constructeur en lui même qui est complexe et fonctionnelle.

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

                                    Donc quelle seriat la solution svp

                                    Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • F Hors-ligne
                                      Fury
                                      dernière édition par robin4002

                                      oui voila.

                                      public class FluidInit(){
                                      public FluidInit(){
                                      registerAllFluids();
                                             registerAllFluidBlocks();
                                             createBuckets();
                                             refreshReferences();
                                      
                                      }
                                      public static void registerAllFluids(){
                                           //public static final Fluid Beer_Fluid = new BeerInit("beer_liquid",new ResourceLocation("psychedelicraft:blocks/beer_still"), new ResourceLocation("psychedelicraft:blocks/beer_flow"));
                                      //fluidbeer_liquid = new FluidCore("coffee", References.MODID).setDensity(900).setViscosity(2000);
                                      // FluidRegistry.registerFluid(fluidbeer_liquid);
                                      }
                                      public static void createBuckets(){
                                      // FluidRegistry.addBucketForFluid(fluidCrudeOil);
                                      }
                                      public static void refreshReferences() {
                                        //fluidCrudeOil = FluidRegistry.getFluid("crude_oil");
                                      }
                                      }
                                      

                                      ////////////////////////////////////////////////////////////////////////////////////////////////////
                                      Class blockInit

                                      public class Blockinit extends BlockFluidClassic 
                                       protected String modName;
                                          protected String name;
                                      	 public  Blockinit(Fluid fluid, Material material, String modName, String name){
                                      	  super(fluid, material);
                                      
                                              this.name = name;
                                              this.modName = modName;
                                      
                                              setUnlocalizedName(modName + ".fluid." + name);
                                              displacements.put(this, false);
                                      	 
                                      	 }
                                       public Blockinit(Fluid fluid, Material material, String name) {
                                      
                                              this(fluid, material, References.MODID, name);
                                          }
                                      
                                      
                                      
                                      
                                      @Override
                                          public Boolean isEntityInsideMaterial(IBlockAccess world, BlockPos blockpos, IBlockState iblockstate, Entity entity, double yToTest, Material materialIn, boolean testingHead) {
                                      
                                              if (this.density < 0) {
                                                  return false;
                                              }
                                              if (testingHead) {
                                                  return true;
                                              }
                                              //		if (iblockstate.getMaterial().equals(this.blockMaterial)) {
                                              //			if (yToTest <= blockpos.getY() + 1 + getQuantaPercentage(world, blockpos)) {
                                              //				return true;
                                              //			}
                                              //		}
                                              return super.isEntityInsideMaterial(world, blockpos, iblockstate, entity, yToTest, materialIn, testingHead);
                                          }
                                      
                                          @Override
                                          @SideOnly (Side.CLIENT)
                                          public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand) {
                                      
                                              double px = pos.getX() + rand.nextFloat();
                                              double py = pos.getY() - 1.05D;
                                              double pz = pos.getZ() + rand.nextFloat();
                                      
                                              if (density < 0) {
                                                  py = pos.getY() + 2.10D;
                                              }
                                              if (rand.nextInt(20) == 0 && world.isSideSolid(pos.add(0, densityDir, 0), densityDir == -1 ? EnumFacing.UP : EnumFacing.DOWN) && !world.getBlockState(pos.add(0, 2 * densityDir, 0)).getMaterial().blocksMovement()) {
                                                  Particle fx = new EntityDropParticleFX(world, px, py, pz, particleRed, particleGreen, particleBlue, densityDir);
                                                  FMLClientHandler.instance().getClient().effectRenderer.addEffect(fx);
                                              }
                                          }
                                      
                                          @Override
                                          public boolean canCreatureSpawn(IBlockState state, IBlockAccess world, BlockPos pos, net.minecraft.entity.EntityLiving.SpawnPlacementType type) {
                                      
                                              return false;
                                          }
                                      
                                          @Override
                                          public boolean canDisplace(IBlockAccess world, BlockPos pos) {
                                      
                                              if (!shouldDisplaceFluids && world.getBlockState(pos).getMaterial().isLiquid()) {
                                                  return false;
                                              }
                                              return super.canDisplace(world, pos);
                                          }
                                      
                                          @Override
                                          public boolean displaceIfPossible(World world, BlockPos pos) {
                                      
                                              if (!shouldDisplaceFluids && world.getBlockState(pos).getMaterial().isLiquid()) {
                                                  return false;
                                              }
                                              return super.displaceIfPossible(world, pos);
                                          }
                                      
                                          /* ACCESSORS */
                                          public int getDensitySafe() {
                                      
                                              return density;
                                          }
                                      
                                          public int getDensityDirSafe() {
                                      
                                              return densityDir;
                                          }
                                      
                                          public float getParticleRed() {
                                      
                                              return particleRed;
                                          }
                                      
                                          public float getParticleGreen() {
                                      
                                              return particleGreen;
                                          }
                                      
                                          public float getParticleBlue() {
                                      
                                              return particleBlue;
                                          }
                                      
                                          @Override
                                          @SideOnly (Side.CLIENT)
                                          public Vec3d getFogColor(World world, BlockPos pos, IBlockState state, Entity entity, Vec3d originalColor, float partialTicks) {
                                      
                                              return new Vec3d(getParticleRed(), getParticleGreen(), getParticleBlue());
                                          }
                                      
                                          /* IModelRegister */
                                          @Override
                                          @SideOnly (Side.CLIENT)
                                          public void registerModels() {
                                      
                                              Item item = Item.getItemFromBlock(this);
                                              StateMapper mapper = new StateMapper(modName, "fluid", name);
                                      
                                              // Item Model
                                              ModelBakery.registerItemVariants(item);
                                              ModelLoader.setCustomMeshDefinition(item, mapper);
                                              // Block Model
                                              ModelLoader.setCustomStateMapper(this, mapper);
                                          }
                                      
                                      F 1 réponse Dernière réponse Répondre Citer 1
                                      • F Hors-ligne
                                        Fury @Fury
                                        dernière édition par robin4002

                                        et pour finir cette classe la,

                                        public class StateMapper extends StateMapperBase implements ItemMeshDefinition {
                                            public final ModelResourceLocation location;
                                        
                                            public StateMapper(String modName, String fileName, String modelName) {
                                        
                                                this.location = new ModelResourceLocation(modName + ":" + fileName, modelName);
                                            }
                                        
                                            @Override
                                            protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
                                        
                                                return location;
                                            }
                                        
                                            @Override
                                            public ModelResourceLocation getModelLocation(ItemStack stack) {
                                        
                                                return location;
                                            }
                                        }
                                        
                                        1 réponse Dernière réponse Répondre Citer 1
                                        • Ck_LukyC Hors-ligne
                                          Ck_Luky
                                          dernière édition par

                                          Tu appelle quekque par cette classe StateMapper

                                          Sinon Merci beaucoup

                                          Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

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

                                            Es ce que je pourrait voir ta class BeerFluid svp

                                            Merci d’avance

                                            Je travail actuellement sur le Feurimod, un mod à l'origine pour un serveur entre potes en 1.12.2, mais le projet de serveur aillant été abandonné, je le termine pour mon propre plaisir.
                                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 3 points de réputation.

                                            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