[1.10.2] Compatibilité de mod



  • Bonjour,
    J'ai créé un mod qui rajoute des blocs de deco. Je l'ai installer à mon serveur de modpack ( le mod dans le launcher et le source dans le serve ). Et là le problème arrive, je ne peux pas craft les blocks avec ae2 ou regarder les recettes avec NEI ou encore posait les blocks avec RFtools? Comment faire?


  • Moddeurs confirmés Rédacteurs Administrateurs

    Faut exécuter la commande gradlew build, prendre le .jar généré dans le dossier build/libs et tu mets ce .jar dans le dossier mods de ton serveur et de ton client.



  • Pour JEI regarde ça : https://github.com/mezz/JustEnoughItems/wiki/Recipe-Categories

    Et peux tu nous passer ton code de ton block, recette, etc... car sinon dur de voir le problème 🤔



  • @uiytt
    Class block:

    package fr.lebourguignon.bourguimod.block;
    
    import net.minecraft.block.material.Material;
    import net.minecraft.block.properties.IProperty;
    import net.minecraft.block.properties.PropertyEnum;
    import net.minecraft.block.state.BlockStateContainer;
    import net.minecraft.block.state.IBlockState;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.init.Blocks;
    import net.minecraft.block.Block;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IStringSerializable;
    import scala.tools.ant.sabbus.Break;
    
    import java.util.List;
    
    public class UniformBlock extends Block
    {
        public static final String NAME = "uniform_block";
        
        public static final PropertyEnum<UniformBlock.EnumType> VARIANT = PropertyEnum.<UniformBlock.EnumType>create("variant", UniformBlock.EnumType.class);
        
        public UniformBlock(Material material)
        {
            super(material);
         
            BourguiModBlocks.setBlockName(this, NAME);
            setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, UniformBlock.EnumType.FIRST));
    
            setLightOpacity(255);
            setLightLevel(1);
            setResistance(5.0F);
            setHardness(3.0F);
            setCreativeTab(CreativeTabs.BUILDING_BLOCKS);
            setSoundType(blockSoundType.GLASS);
        }
    
        @Override
        public int damageDropped(IBlockState state)
        {
            return state.getValue(VARIANT).getMetadata();
        }
     
        @Override
        public void getSubBlocks(Item itemIn, CreativeTabs tab, List <ItemStack> list)
        {
            for (UniformBlock.EnumType type : UniformBlock.EnumType.values())
            {
                list.add(new ItemStack(itemIn, 1, type.getMetadata()));
            }
        }
     
        @Override
        public IBlockState getStateFromMeta(int meta)
        {
            return this.getDefaultState().withProperty(VARIANT, UniformBlock.EnumType.byMetadata(meta));
        }
     
        @Override
        public int getMetaFromState(IBlockState state)
        {
            return ((UniformBlock.EnumType)state.getValue(VARIANT)).getMetadata();
        }
     
        @Override
        protected BlockStateContainer createBlockState()
        {
            return new BlockStateContainer(this, new IProperty[] {VARIANT});
        }
     
        public static enum EnumType implements IStringSerializable
        {
            FIRST(0, "uniform", "uniform_block_white"),
            SECOND(1, "uniform2", "uniform_block_orange"),
            THIRD(2,"uniform3", "uniform_block_magenta"),
            FOURTH(3,"uniform4", "uniform_block_lightblue"),
            FIFTH(4,"uniform5", "uniform_block_yellow"),
            SIXTH(5,"uniform6", "uniform_block_lime"),
            SEVENTH(6,"uniform7", "uniform_block_pink"),
            EIGHTH(7,"uniform8", "uniform_block_gray"),
            NINTH(8,"uniform9", "uniform_block_silver"),
            TENTH(9,"uniform10", "uniform_block_cyan"),
            ELEVENTH(10,"uniform11", "uniform_block_purple"),
            TWELFTH(11,"uniform12", "uniform_block_blue"),
            THIRTEENTH(12,"uniform13", "uniform_block_brown"),
            FOURTEENTH(13,"uniform14", "uniform_block_green"),
            FIFTEENTH(14,"uniform15", "uniform_block_red"),
            SIXTEENTH(15,"uniform16", "uniform_block_black"),
            ;
     
            private static final UniformBlock.EnumType[] META_LOOKUP = new UniformBlock.EnumType[values().length];
            private final int meta;
            private final String name;
            private final String unlocalizedName;
     
            private EnumType(int metaIn, String nameIn, String unlocalizedIn)
            {
                this.meta = metaIn;
                this.name = nameIn;
                this.unlocalizedName = unlocalizedIn;
            }
     
            public static String[] getUnlocalizedNames()
            {
                String[] names = new String[values().length];
                
                for (int i = 0; i < META_LOOKUP.length; i++)
                    names[i] = META_LOOKUP[i].unlocalizedName;
             
                return names;
            }
     
            public int getMetadata()
            {
                return this.meta;
            }
     
            public static UniformBlock.EnumType byMetadata(int meta)
            {
                if (meta < 0 || meta >= META_LOOKUP.length)
                {
                    meta = 0;
                }
             
                return META_LOOKUP[meta];
            }
     
            public String toString()
            {
                return this.name;
            }
     
            @Override
            public String getName()
            {
                return this.name;
            }
            static
            {
                for (UniformBlock.EnumType type : values())
                {
                    META_LOOKUP[type.getMetadata()] = type;
                }
            }
        }
        
    }
    

    Recette:

    @SubscribeEvent
        public void registerRecipes(RegistryEvent.Register <Item> event) 
        {
            for (int i =0; i < 16; i++)
            {    
                GameRegistry.addRecipe(new ItemStack(BourguiModItems.BLOCK_UNIFORM_BLOCK_ITEM, 4, 15-i), new Object[]{
                        "XYX",
                        "YZY",
                        "XYX",
                        'X', Blocks.STONE,'Y', Blocks.GLOWSTONE,'Z', new ItemStack(Items.DYE, 1, i)});
            }
    
            for (int i =0; i < 16; i++)
            {
                GameRegistry.addRecipe(new ItemStack(BourguiModItems.BLOCK_UNIFORM_BLOCK_ITEM, 8, 15-i), new Object[]{
                        "UUU",
                        "UDU",
                        "UUU",
                        'U', new ItemStack(BourguiModItems.BLOCK_UNIFORM_BLOCK_ITEM, 8, Short.MAX_VALUE),'D', new ItemStack(Items.DYE, 1, i)});
            }
        }
    

    J'ai entendu parler d'api? Est-ce une bonne direction?



  • pour que JEI trouve ta recette il faut que au lieu de faire .addRecipe tu fasse tu le register en tant que "ShapedRecipes"



  • @uiytt Excuse moi de prendre autant de temps pour répondre j'avais pas mon pc sous la main mais Eclipse ne reconnait pas "ShapedRecipes"
    649673e7-e4da-47b6-976d-7a68c2ee3ce5-image.png



  • @uiytt ah non c'est pas plutôt .addShapedRecipe ? Car là, Eclipse le reconnais!


  • Moddeurs confirmés Rédacteurs Administrateurs

    Bonsoir,
    Les recettes ne sont pas censées être enregistrés dans cette event qui est là pour enregistrer des items (ils doivent être mis directement dans une fonction appelé lors d'init) mais je ne sais pas sûr que cela à quelque chose à voir avec ton problème.

    Tu peux toujours essayer de les déplacer au bon endroit.



  • @robin4002 Voila j'ai tout refait correctement et il y a tjr le même problème... J'ai beau cherché dans les log je ne vois rien...
    2019-08-10_15.26.27.png 2019-08-10_15.26.21.png
    Je ne peux pas craft mes blocks


  • Moddeurs confirmés Rédacteurs Administrateurs

    L'item est dans la table de craft mais tu ne peux pas le prendre ? Si oui c'est signe que le mod n'est pas installé sur le serveur.
    Et ça n'a rien à voir avec un problème de compatabilité de mod ...



  • @robin4002 tu peux me dire comment l’installer car ce que j ai fait ne fonctionne pas ( explique à partir du moment où j ai mon mode source et normal )


  • Moddeurs confirmés Rédacteurs Administrateurs

    Faut exécuter la commande gradlew build, prendre le .jar généré dans le dossier build/libs et tu mets ce .jar dans le dossier mods de ton serveur et de ton client.


Log in to reply