1.15.2 RenderingRegistry



  • Bonjour,
    Ca va faire une heure est demi que je cherche mais je n'arrive pas à enregistrer le render de mon entité,
    Renders :

    @OnlyIn(Dist.CLIENT)
    public class Renders
    {
        public static void registerRenders()
        {
            RenderingRegistry.registerEntityRenderingHandler(Entities.ROBOT, manager -> new RenderRobot(manager) /* c'est ici que ça me mets une erreur */);
        }
    }
    

    et RenderRobot :

    @OnlyIn(Dist.CLIENT)
    public class RenderRobot extends LivingRenderer<EntityRobot, ModelRobot>
    {
        public RenderRobot(EntityRendererManager manager)
        {
            super(manager, new ModelRobot(), 0);
        }
    
        @Override
        public ResourceLocation getEntityTexture(EntityRobot entity)
        {
            return new ResourceLocation(Main.MODID, "texture/entity/robot.png");
        }
    }
    

    EDIT : il demande un IRenderFactory<Entity> alors que moi je lui donne un IRenderFactory<EntityType<?>> donc ça pose problème et je ne sais pas comment dire que c'est Entity

    EDIT 2 : Il n'y pas de RegistryEvent.Register pour ça ?



  • J'ai réglé le problème, j'ai créer une classe à part avec onItemUse puis dedans j'ai fait spawn le mob au bon endroit



  • This post is deleted!


  • Essaye de faire RenderRobot::new.



  • J'avais essayé et ça n'avait pas marché

    EDIT : en fait en 1.14 on pouvait extends de son entity donc moi IRenderFactory<EntityRobot>, mais depuis la 1.15 on est obligé de extends IRenderFactory<Entity> et c'est ça qui pose problème. Or mon entity extends de LivingEntity. Mais après tu pourrais me dire, tu fais une class à part et tu extends juste IRenderFactory seul, et il n'y pas d'erreur, donc c'est cool, je lance mc et la boum, un petit, non mais vraiment tout petit (traduit en français car je ne me souviens pas de la phrase exact) :

    Le mod 'personal_robot' à eu un problème lors du sided_setup
    

    donc moi je clique sur le bouton pour voir les logs et il y a un truc encore mois grave (enfin si un peu) : NullPointerExeption

    EDIT 2 : et à chaque je dis IRenderFactory mais en fait je suis pas sur avec IFactoryRenderer



  • À mon avis tu devrais faire une autre classe dans la RenderRobot qui implements IRenderFactory et passe la dans ta fonction.



  • C'est ce que j'ai fais au début sauf que pour que ça marche il faut mettre IRenderFactory sans les <> sauf que ça mets un npe



  • Dans les crochets il faut mettre la classe de ton entité, c'est bizarre j'avais jamais rencontré un problème comme ça.



  • oui mas ça ne marche pas



  • J'ai trouvé mon problème, ça venait ne Entities.ROBOT qui était un EntityType<?> et pas EntityType<EntityRobot>



  • Bonjour, j'ai un nouveau problème quand j'essaye d'utiliser mon oeuf de spawn,
    voici la jolie erreur :

    [15:46:52] [Server thread/FATAL] [minecraft/ThreadTaskExecutor]: Error executing task on Server
    java.lang.NullPointerException: null
    	at net.minecraft.item.SpawnEggItem.onItemUse(SpawnEggItem.java:80) ~[?:?] {re:classloading}
    	at net.minecraftforge.common.ForgeHooks.onPlaceItemIntoWorld(ForgeHooks.java:610) ~[?:?] {re:classloading}
    	at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:173) ~[?:?] {re:classloading}
    	at net.minecraft.server.management.PlayerInteractionManager.func_219441_a(PlayerInteractionManager.java:353) ~[?:?] {re:classloading}
    	at net.minecraft.network.play.ServerPlayNetHandler.processTryUseItemOnBlock(ServerPlayNetHandler.java:881) ~[?:?] {re:classloading}
    	at net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket.processPacket(CPlayerTryUseItemOnBlockPacket.java:45) ~[?:?] {re:classloading}
    	at net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket.processPacket(CPlayerTryUseItemOnBlockPacket.java:12) ~[?:?] {re:classloading}
    	at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:19) ~[?:?] {re:classloading}
    	at net.minecraft.util.concurrent.TickDelayedTask.run(TickDelayedTask.java:20) ~[?:?] {re:classloading}
    	at net.minecraft.util.concurrent.ThreadTaskExecutor.run(ThreadTaskExecutor.java:140) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.util.concurrent.RecursiveEventLoop.run(RecursiveEventLoop.java:22) [?:?] {re:classloading}
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:759) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:141) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.util.concurrent.ThreadTaskExecutor.driveOne(ThreadTaskExecutor.java:110) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.server.MinecraftServer.driveOneInternal(MinecraftServer.java:742) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.server.MinecraftServer.driveOne(MinecraftServer.java:736) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.util.concurrent.ThreadTaskExecutor.driveUntil(ThreadTaskExecutor.java:123) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.server.MinecraftServer.runScheduledTasks(MinecraftServer.java:722) [?:?] {re:classloading,pl:accesstransformer:B}
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:666) [?:?] {re:classloading,pl:accesstransformer:B}
    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_251] {}
    

    et mon code :

    @Mod.EventBusSubscriber(modid = Main.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
    public class Items
    {
        public static Item PERSONAL_GEM;
    
        public static Item ROBOT_SPAWN_EGG;
    
        public static Item ELECTRICAL_FLUID_BUCKET;
    
        @SubscribeEvent
        public static void registerItems(RegistryEvent.Register<Item> event)
        {
            event.getRegistry().registerAll(
                    PERSONAL_GEM = new ItemPersonalGem(),
    
                    ROBOT_SPAWN_EGG = register("robot_spawn_egg", Entities.ROBOT, 0xFF0000, 0x00FFEE),
    
                    ELECTRICAL_FLUID_BUCKET = register("electrical_fluid_bucket", Fluids.ELECTRICAL)
            );
        }
    
        private static Item register(String name)
        {
            return new Item(new Item.Properties().group(Group.MOD)).setRegistryName(name);
        }
    
        private static Item register(String name, EntityType<?> entity, int primaryColor, int secondaryColor)
        {
            return new SpawnEggItem(entity, primaryColor, secondaryColor, new Item.Properties().group(Group.MOD).maxStackSize(1)).setRegistryName(name);
        }
    
        private static Item register(String name, Fluid fluid)
        {
            return new BucketItem(() -> fluid, new Item.Properties().group(Group.MOD).maxStackSize(1)).setRegistryName(name);
        }
    }
    


  • Tu pourrais montrer la classe de ton item avec steuplé ?



  • Mais non, j'utlise le 2eme register qui est dans la class même (ligne 27)

    EDIT : je viens de me rendre compte que j'avais mis un maxStackSize, mais pourquoi ?



  • up ?



  • J'ai réglé le problème, j'ai créer une classe à part avec onItemUse puis dedans j'ai fait spawn le mob au bon endroit


Log in to reply