• 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

Résolu EmotionMod - Bois, Pluie, Nether

1.8.x
1.8
3
7
1.8k
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.
  • EmotionFox
    EmotionFox dernière édition par 10 mars 2015, 06:59

    Mod Emotion

    Bonjour à tous !

    Aujourd’hui j’ai plusieurs chose à vous demander et c’est pourquoi je vais tacher de rendre ça le plus lisible possible, avec pourquoi pas quelques couleurs funky.

    Bon pour le commencement sachez que je mod un mod qui contiens essentiellement des bloques et des items, une sorte d’extension de Minecraft vanillia à ma sauce, j’ai déjà fait énormément de travail depuis le début dont des minerais, de la nourriture, des fleurs, des “fourtinures” style chaise, table de nuit, table etc… Mais aujourd’hui je me suis retrouvé confronté à plusieurs problèmes que je vais vous lister. Si quelqu’un à la moindre réponse à me donner, la moindre aide, je lui serais grandement reconnaissant.

    - 1er problème -
    Bloc de bois

    Voilà j’ai essayé de refaire un bloc de bois Minecraft, j’ai commencé par tester si je ne pouvais pas utiliser l’EnumHelper de forge pour ajouter une ligne en écrivant ceci dans la classe principale des blocs :

    public EnumType enumTypeCherry = EnumHelper.addEnum(EnumType.class, "CHERRY", 0, "cherry");
    

    Étend donné que ça n’as pas fonctionné j’ai créer moi même les différents blocs “BasePlanks” copie de “BlockPlanks”, “BaseLog” copie de “BlockOldLog”, “BaseLog2” copie de “BlockLog”,  “BaseSapling” copie de “BlockSapling”, “BaseLeaf” copie de “BlockOldLeaf” et enfin “BaseLeaves” copie de “BlockLeaves”. Bon le pire c’est que ça fonctionne à pars les feuilles de l’arbre qui ne sont pas transparente, le problème c’est quand je veux les enregistrées dans le “ClientProxy” :

    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(EmotionBlocks.emoLog), 0, new ModelResourceLocation(Strings.MODID + ":cherry_log", "inventory"));
    …
    Minecraft.getMinecraft().getRenderItem().getItemModelMesher().getModelManager().getBlockModelShapes().registerBlockWithStateMapper(EmotionBlocks.emoLog, (new StateMap.Builder()).setProperty(BaseLog.VARIANT).setBuilderSuffix("_log").build());
    ...

    La première partie m’as permis de voir les bloques dans l’inventaire sous forme d’item, la seconde m’as permis de voir la texture sur le bloc en jeu et que le bloc de bois s’oriente bien dans les différents sens. Malheureusement et comme vous aurez pue le constater la première partie ne s’applique qu’à un seul bloc tandis que la seconde s’adapte à toutes les variances définie dans le bloc “BasePlanks” :

    public static enum EnumType implements IStringSerializable
       {
           CHERRY(0, "emomod:cherry");
           private static final BasePlanks.EnumType[] META_LOOKUP = new BasePlanks.EnumType[values().length];
           private final int meta;
           private final String name;
           private final String unlocalizedName;
           ….

    Donc voilà j’aurais aimé savoir comment enregistrer un bloc de bois avec différents type et l’enregistrer ou si il y à une méthode plus simples est envisageable que la mienne.

    - 2eme problème -
    Changer la pluie

    J’ai créer plusieurs bâtons magiques qui permettent différentes choses, comme :

    IBlockState block; //Type Of Block Who Appear
    Long time = worldIn.getWorldTime();
    IBlockState state = worldIn.getBlockState(pos);
    IBlockState stateWest = worldIn.getBlockState(pos.west());
    IBlockState stateEast = worldIn.getBlockState(pos.east());
    IBlockState stateNorth = worldIn.getBlockState(pos.north());
    IBlockState stateSouth = worldIn.getBlockState(pos.south());
    if (this == EmotionItems.blueStaff)
    {
           block = Blocks.water.getDefaultState();
           if (playerIn.isSneaking())
           {
                   if (state != Blocks.air.getDefaultState())
                    {
                           worldIn.setBlockState(pos, block);
                           stack.damageItem(1, playerIn);
                    }
            }
           else
           {
                   if (state != Blocks.air.getDefaultState())
                   {
                           worldIn.setBlockState(pos, block);
                           worldIn.setBlockState(pos.west(), block);
                           worldIn.setBlockState(pos.east(), block);
                           worldIn.setBlockState(pos.north(), block);
                           worldIn.setBlockState(pos.south(), block);
                           stack.damageItem(2, playerIn);
                   }
           }
    }

    Et le blanc est censé lancer un éclair, changer le temps en nuit si celui-ci ne l’est pas déjà et enfin enlever la pluie.

    else if (this == EmotionItems.whiteStaff)
    {
           if (time >= 13000 || time <= 1000)
           {
                   worldIn.setRainStrength(0.0F);
           }
           else
           {
                   worldIn.setWorldTime(13000);
           }
           worldIn.spawnEntityInWorld(new EntityLightningBolt(worldIn, pos.getX(), pos.getY(), pos.getZ()));
           stack.damageItem(2, playerIn);
    }

    Malheureusement la commande “.setRainStrength” ne marche qu’une seconde puis remet la pluie, j’aurais voulue savoir si ce ne serait pas plutôt possible d’envoyer directement la commande “/set weather clear” sur le client où peut-être une autre façon de la changer.

    - 3eme problème -
    Génération dans le nether

    Et pour finir j’ai une classe qui me permet de générer mon minerai le “Purpura Lapidem” ici présent :

    package mods.emotion.world;
    import java.util.Random;
    …
    public class WorldGenEmotion implements IWorldGenerator
    {
    public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
    {
    switch(world.provider.getDimensionId())
    {
    case -1:
    generateNether(world, rand, chunkX * 16, chunkZ * 16);
    case 0:
    generateSurface(world, rand, chunkX * 16, chunkZ * 16);
    case 1:
    generateEnd(world, rand, chunkX * 16, chunkZ * 16);
    }
    }
    private void generateEnd(World world, Random rand, int chunkX, int chunkZ)
    {
    }
    private void generateSurface(World world, Random rand, int chunkX, int chunkZ)
    {
    for (int i = 0; i < 5; i++)
    {
    final Predicate predicate;
    int yMin = 4;
    int yMax = 10;
    int randPosX = chunkX + rand.nextInt(16);
    int randPosY = yMin + rand.nextInt(yMax - yMin);
    int randPosZ = chunkZ + rand.nextInt(16);
    (new WorldGenMinable(EmotionBlocks.purpuraOre.getDefaultState(), 3)).generate(world, rand, new BlockPos(randPosX, randPosY, randPosZ));
    }
    }
    private void generateNether(World world, Random rand, int chunkX, int chunkZ)
    {
    }
    }

    Malheuresement quand je place une génération de minerais dans la private void generateNether() le bloc en question en ce trouve nul pars dans le monde mais sans erreurs au lancement.

    %(#3366ff)[Merci d’avance à toutes les personnes qui pourrons peut-être m’aider, je suis dispo sur Steam, Skype et Mumble si besoin. Je suis vraiment bloqué, j’ai chercher partout sur le net sans trouver aucune réponse et presque aucun tuto de modding en 1.8 -_… Merci encore !

    -EmotionFox -]

    1 réponse Dernière réponse Répondre Citer 0
    • EmotionFox
      EmotionFox dernière édition par 10 mars 2015, 08:31

      [size=largePs: J’aurais besoin d’aide sur quelques autres détails, donc si une personne expérimentée à quelque temps à consacrer à un mec qui fais un mod pour lui et sa copine pour lui expliquer certaine chose de la 1.8 n’hésitais pas à m’envoyer un MP.]

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 10 mars 2015, 08:41

        1. Je ne sais pas
        2. Suffit de regarder ce que fait la commande weather clear :
          WorldInfo worldinfo = world.getWorldInfo();

        worldinfo.setCleanWeatherTime((300 + (new Random()).nextInt(600)) * 20);
        worldinfo.setRainTime(0);
        worldinfo.setThunderTime(0);
        worldinfo.setRaining(false);
        worldinfo.setThundering(false);

        1. Il faut ajouter en 4ème argument dans WorldGenMinable Blocks.netherrack.getDefaultState() pour préciser que le bloc doit se générer sur de la netherrack et non sur de la pierre.
        1 réponse Dernière réponse Répondre Citer 0
        • EmotionFox
          EmotionFox dernière édition par 10 mars 2015, 08:51

          1. Pas de problème merci quand même pour ton aide 🙂
          2. Ah merci beaucoup ! Par contre où a tu trouver les effets de la commande /weather clear ? Ça m’intéresse.
          3. tu veux dire ici ? :
          (new WorldGenMinable(EmotionBlocks.purpuraOre.getDefaultState(), 3)).generate(world, rand, new BlockPos(randPosX, randPosY, randPosZ));

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 10 mars 2015, 11:21

            2. net.minecraft.command.CommandWeather.java
            3. (new WorldGenMinable(EmotionBlocks.purpuraOre.getDefaultState(), 3, Blocks.netherrack.getDefaultState())
            Comme ça.

            1 réponse Dernière réponse Répondre Citer 0
            • Diangle
              Diangle dernière édition par 10 mars 2015, 12:25

              Pour le 1, tu peux passer sur le TS ? si oui, dit moi (par mp) vers quel heure.

              edit : Si tu peux pas donne moi ton skype. Et aussi tu peux envoyer TOUTE la classe de ton bois, les json de ton bois et aussi la classe de l’enum ?

              1 réponse Dernière réponse Répondre Citer 0
              • EmotionFox
                EmotionFox dernière édition par 10 mars 2015, 12:43

                Je reviens vers vous pour la solution de la génération dans le Nether, merci à robin pour l’aide précieuse.

                private void generateNether(World world, Random rand, int chunkX, int chunkZ)
                {
                for (int i = 0; i < 50; i++)
                {
                final Predicate predicate;
                int yMin = 4;
                int yMax = 180;
                int randPosX = chunkX + rand.nextInt(16);
                int randPosY = yMin + rand.nextInt(yMax - yMin);
                int randPosZ = chunkZ + rand.nextInt(16);
                (new WorldGenMinable(EmotionBlocks.purpuraBlock.getDefaultState(), 14,
                BlockHelper.forBlock(Blocks.netherrack))).generate(world, rand, new BlockPos(randPosX, randPosY, randPosZ));
                }
                }

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

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB