MFF

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

    Modèles d'une boussole custom

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.12.x
    4 Messages 3 Publieurs 1.1k Vues 1 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.
    • DylemD Hors-ligne
      Dylem
      dernière édition par

      Bonjour,

      Je me demandais comment faire pour créer sa boussole custom ?
      J’ai, comme pour la boussole officielle, créé 32 fichiers jsons qui pointent vers 32 textures (0 à 31), et j’ai recopié le code de la boussole dans ma classe Item.

      La question est, comment enregistrer tous les modèles ?

      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

        Je rajoute le code de la boussole (c’est le même que celle de base) :

        
        package net.dylem.styx.item;
        
        import javax.annotation.Nullable;
        
        import net.dylem.styx.init.StyxInitLabels;
        import net.minecraft.entity.Entity;
        import net.minecraft.entity.EntityLivingBase;
        import net.minecraft.entity.item.EntityItemFrame;
        import net.minecraft.item.IItemPropertyGetter;
        import net.minecraft.item.ItemStack;
        import net.minecraft.util.ResourceLocation;
        import net.minecraft.util.math.BlockPos;
        import net.minecraft.util.math.MathHelper;
        import net.minecraft.world.World;
        import net.minecraftforge.fml.relauncher.Side;
        import net.minecraftforge.fml.relauncher.SideOnly;
        
        public class ItemAncientCompass extends ItemStyx {
        
        public ItemAncientCompass(final String itemName) {
        
        super(itemName);
        this.addPropertyOverride(new ResourceLocation("angle"), new IItemPropertyGetter()
                {
                    @SideOnly(Side.CLIENT)
                    double rotation;
                    @SideOnly(Side.CLIENT)
                    double rota;
                    @SideOnly(Side.CLIENT)
                    long lastUpdateTick;
                    @SideOnly(Side.CLIENT)
                    public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn)
                    {
                        if (entityIn == null && !stack.isOnItemFrame())
                        {
                            return 0.0F;
                        }
                        else
                        {
                            boolean flag = entityIn != null;
                            Entity entity = (Entity)(flag ? entityIn : stack.getItemFrame());
        
                            if (worldIn == null)
                            {
                                worldIn = entity.world;
                            }
        
                            double d0;
        
                            if (worldIn.provider.isSurfaceWorld())
                            {
                                double d1 = flag ? (double)entity.rotationYaw : this.getFrameRotation((EntityItemFrame)entity);
                                d1 = MathHelper.positiveModulo(d1 / 360.0D, 1.0D);
                                double d2 = this.getSpawnToAngle(worldIn, entity) / (Math.PI * 2D);
                                d0 = 0.5D - (d1 - 0.25D - d2);
                            }
                            else
                            {
                                d0 = Math.random();
                            }
        
                            if (flag)
                            {
                                d0 = this.wobble(worldIn, d0);
                            }
        
                            return MathHelper.positiveModulo((float)d0, 1.0F);
                        }
                    }
                    @SideOnly(Side.CLIENT)
                    private double wobble(World worldIn, double p_185093_2_)
                    {
                        if (worldIn.getTotalWorldTime() != this.lastUpdateTick)
                        {
                            this.lastUpdateTick = worldIn.getTotalWorldTime();
                            double d0 = p_185093_2_ - this.rotation;
                            d0 = MathHelper.positiveModulo(d0 + 0.5D, 1.0D) - 0.5D;
                            this.rota += d0 * 0.1D;
                            this.rota *= 0.8D;
                            this.rotation = MathHelper.positiveModulo(this.rotation + this.rota, 1.0D);
                        }
        
                        return this.rotation;
                    }
                    @SideOnly(Side.CLIENT)
                    private double getFrameRotation(EntityItemFrame p_185094_1_)
                    {
                        return (double)MathHelper.clampAngle(180 + p_185094_1_.facingDirection.getHorizontalIndex() * 90);
                    }
                    @SideOnly(Side.CLIENT)
                    private double getSpawnToAngle(World p_185092_1_, Entity p_185092_2_)
                    {
                        BlockPos blockpos = p_185092_1_.getSpawnPoint();
                        return Math.atan2((double)blockpos.getZ() - p_185092_2_.posZ, (double)blockpos.getX() - p_185092_2_.posX);
                    }
                });
            }
        
        }
        
        

        Et le code d’enregistrement du modèle pour un item “classique” de mon mod :

        
         private void registerItemModel(final Item item, final ModelResourceLocation fullModelLocation) {
                ModelBakery.registerItemVariants(item, fullModelLocation);
                registerItemModel(item, MeshDefinitionFix.create(stack -> fullModelLocation));
            }
        
            private void registerItemModel(final Item item, final ItemMeshDefinition meshDefinition) {
                itemsRegistered.add(item);
                ModelLoader.setCustomMeshDefinition(item, meshDefinition);
            }
        
        

        Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

        1 réponse Dernière réponse Répondre Citer 0
        • Benjamin LoisonB Hors-ligne
          Benjamin Loison
          dernière édition par

          32 fichiers ?! Ou la la x) enfin bon regardes comment Minecraft gère ça dans son code source dans ton workspace sur eclipse, les petits livres horizontaux dans ton projet: tu trouveras un truc Minecraft et essayes de te repérer avec le nom des packages 😉

          >! Développeur de Altis-Life (Arma III) sur Minecraft !
          >! Site web     : https://lemnoslife.com

          1 réponse Dernière réponse Répondre Citer 0
          • BrokenSwingB Hors-ligne
            BrokenSwing Moddeurs confirmés Rédacteurs
            dernière édition par

            https://www.minecraftforgefrance.fr/showthread.php?tid=4366

            1 réponse Dernière réponse Répondre Citer 0
            • 1 / 1
            • Premier message
              Dernier message
            Design by Woryk
            ContactMentions Légales

            MINECRAFT FORGE FRANCE © 2024

            Powered by NodeBB