SOLVED Crash server OreDictionary et petite question


  • Bonjour à tous,

    J'ai un petit problème de crash lors du démarrage d'un server sur mon mod qui est du apparemment à la manière dont j'utilise OreDictionnary mais je n'arrive pas à comprendre ce que je fais de mal.

    [19:59:35] [main/WARN] [FML]: ****************************************
    [19:59:35] [main/WARN] [FML]: * Invalid registration attempt for an Ore Dictionary item with name AluminiumOre has occurred. The registration has been denied to prevent crashes. The mod responsible for the registration needs to correct this.
    [19:59:35] [main/WARN] [FML]: *  at net.minecraftforge.oredict.OreDictionary.registerOreImpl(OreDictionary.java:642)
    [19:59:35] [main/WARN] [FML]: *  at net.minecraftforge.oredict.OreDictionary.registerOre(OreDictionary.java:628)
    [19:59:35] [main/WARN] [FML]: *  at fr.jules552.mod.proxy.CommonProxy.preInit(CommonProxy.java:30)
    [19:59:35] [main/WARN] [FML]: *  at fr.jules552.mod.proxy.ClientProxy.preInit(ClientProxy.java:16)
    [19:59:35] [main/WARN] [FML]: *  at fr.jules552.mod.Adamantium.preInit(Adamantium.java:36)
    [19:59:35] [main/WARN] [FML]: *  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)…
    [19:59:35] [main/WARN] [FML]: ****************************************
    

    Et voici les classes concernées :

    package fr.jules552.mod.proxy;
    
    import fr.jules552.mod.Reference;
    
    import fr.jules552.mod.WorldGeneration.GenerationHelper;
    import fr.jules552.mod.init.BlocksMod;
    import fr.jules552.mod.init.EntitiesMod;
    import fr.jules552.mod.init.ItemsMod;
    import fr.jules552.mod.init.Adamantium.EntityDynamite;
    import net.minecraft.client.renderer.block.model.ModelResourceLocation;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.model.ModelLoader;
    import net.minecraftforge.fml.common.Mod.EventHandler;
    import net.minecraftforge.fml.common.event.FMLInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
    import net.minecraftforge.fml.common.registry.EntityRegistry;
    import net.minecraftforge.fml.common.registry.GameRegistry;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    import net.minecraftforge.oredict.OreDictionary;
    
    public abstract class  CommonProxy {
    public void preInit(FMLPreInitializationEvent event) {
    
    // Système de Générération
    OreDictionary.registerOre("AdamantiumOre", new ItemStack(BlocksMod.ADAMANTIUM_ORE));
    OreDictionary.registerOre("SilverOre", new ItemStack(BlocksMod.SILVER_ORE));
    OreDictionary.registerOre("AluminiumOre", new ItemStack(BlocksMod.ALUMINIUM_ORE));
    GameRegistry.registerWorldGenerator(new GenerationHelper(), 2);
    
    }
    
    public void init(FMLInitializationEvent event) {
    
    BlocksMod.registerTextRecipies();
    EntitiesMod.registerModEntity();
    
    }
    
    }
    
    
    package fr.jules552.mod;
    
    import fr.jules552.mod.WorldGeneration.GenerationHelper;
    import fr.jules552.mod.init.BlocksMod;
    import fr.jules552.mod.init.ItemsMod;
    import fr.jules552.mod.proxy.CommonProxy;
    import net.minecraft.init.Blocks;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemBlock;
    import net.minecraft.item.ItemStack;
    import net.minecraftforge.common.MinecraftForge;
    import net.minecraftforge.fml.client.registry.ClientRegistry;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.fml.common.Mod.EventHandler;
    import net.minecraftforge.fml.common.Mod.Instance;
    import net.minecraftforge.fml.common.SidedProxy;
    import net.minecraftforge.fml.common.event.FMLInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
    import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
    import net.minecraftforge.fml.common.registry.GameRegistry;
    import net.minecraftforge.oredict.OreDictionary;
    
    @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.MOD_VERSION)
    
    public class Adamantium {
    
    @Instance(Reference.MOD_ID)
    public static Adamantium Instance;
    
    @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS)
    public static CommonProxy proxy;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
    proxy.preInit(event);
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event) {
    proxy.init(event);
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
    
    }
    }
    
    

    Ca doit venir d'un changement fait entre la 1.11 et la 1.12 mais quand je vais voir comment fonctionne OreDictionary tout est similaire à ce que j'ai fait donc je coince un peu 😕

    Sinon seconde question
    J'aimerai trouver le moyen de cacher le pseudonyme afficher au dessus de la tête du joueur, mais même en fouillant dans le fonctionnement du sneak etc.. je n'arrive pas à trouver ce que je cherche donc si quelqu'un pourrait m'aider sur ce point aussi, ça serait gentil à lui ^^

    Merci d'avance pour votre aide  😉

  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,
    Le code qui affiche l'erreur est le suivant :

    if (ore.isEmpty())
    {
    FMLLog.bigWarning("Invalid registration attempt for an Ore Dictionary item with name {} has occurred. The registration has been denied to prevent crashes. The mod responsible for the registration needs to correct this.", name);
    return; //prevent bad ItemStacks.
    }
    

    L'item stack que tu as mis en argument est donc vide, le bloc n'est surement pas initialisé au moment où tu exécutes ce code.
    Passes-le dans init plutôt que dans preinit.


  • @'robin4002':

    Salut,
    Le code qui affiche l'erreur est le suivant :

           if (ore.isEmpty())
           {
               FMLLog.bigWarning("Invalid registration attempt for an Ore Dictionary item with name {} has occurred. The registration has been denied to prevent crashes. The mod responsible for the registration needs to correct this.", name);
               return; //prevent bad ItemStacks.
           }
    

    L'item stack que tu as mis en argument est donc vide, le bloc n'est surement pas initialisé au moment où tu exécutes ce code.
    Passes-le dans init plutôt que dans preinit.

    Effectivement ça règle le soucis ^^
    Merci à toi, bon je laisse le sujet ouvert pour la seconde petite question  🙂


  • Salut,
    Pour ta deuxième question, il me semble que tu trouveras ton bonheur avec l'event "RenderLivingEvent.Specials.Pre" 🙂


  • @'AymericRed':

    Salut,
    Pour ta deuxième question, il me semble que tu trouveras ton bonheur avec l'event "RenderLivingEvent.Specials.Pre" 🙂

    Effectivement ça m'a l'air d'être ça, je vais regarder à ça du coup.

    Merci à vous deux  😉