Charger une classe au démarrage



  • Bonjour tout le monde,

    J'ai créer une classe et j'aimerai quelle se charge au démarrage, il n'y a que le constructeur et je ne souhaite pas en créer d'autre.

    J'ai éssayer de rajouter la classe dans public void Init mais ça ne marche pas.

    Amicalement

    PotTime



  • Salut,
    on ne **rajoute **pas une classe dans une méthode, on **instancie **une classe dans une méthode.
    Qu'est-ce qui ne marche pas ? Du code pourrait nous être utile.

    Au passage, je pense que tu t'es trompé de rubrique.



  • En gros, le code que je veux ajouter c'est :

    
    import java.util.Random;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.renderer.EntityRenderer;
    import net.minecraft.client.resources.IResourceManager;
    
    public class ServerProxy extends EntityRenderer {
    
    private Minecraft m;
    private double d;
    private long l;
    private Random r;
    
    public ServerProxy(Minecraft p_i45076_1_, final IResourceManager p_i45076_2_) {
    super(p_i45076_1_, p_i45076_2_);
    this.d = 3.7;
    this.l = 0L;
    this.r = new Random();
    this.m = p_i45076_1_;
    }
    
    }
    
    

    et j'aimerai le rajouter à ma classe principal qui charge mon mode plus précisément dans le init

    
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import fr.pottime.proxy.CommonProxy;
    
    @Mod(modid = Reference.MODID, name = Reference.Name, version = Reference.Version)
    public class Pottime {
    
    @Instance(Reference.MODID)
    public static Pottime instance;
    
    @SidedProxy(clientSide = Reference.ClientProxy, serverSide = Reference.ServerProxy)
    public static CommonProxy proxy;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
    
    }
    
    @EventHandler
    public void Init(FMLInitializationEvent event)
    {
    
    proxy.registerRenders();
    /*
    * Je souhaite le rajouter ici !
    */
    
    }
    
    @EventHandler
    public void PostInit(FMLPostInitializationEvent event)
    {
    
    }
    }
    
    


  • Qu'essaies-tu de faire concrètement ?
    Car quand je voie un ServerProxy contenir des références vers des classes client, mon cerveau me dit que c'est tout bêtement impossible …



  • Ma classe ServerProxy modifie des choses dans Minecraft, j'ai dejà créer un gui pour le lancer manuellement mais je souhaiterai que ça le fasse automatiquement au démarrage.
    J'aimerai que ma classe s'éxécute au démarrage en gros..



  • Passons le fait que tu auras sûrement des problèmes ClassNotFound lors de l'exécution du mod sur serveur, pour ta demande, je te conseille, en + d'apprendre définitivement les bases de la POO, d'instancier ta classe dans la méthode init, et avec ta variable ServerProxy, lancer les fonctions qui t'intéressent.



  • D'accord, tu peux me dire comment tu pourrai régler mon problème 🙂



  • @'Plaigon':

    'instancier ta classe dans la méthode init, et avec ta variable ServerProxy, lancer les fonctions qui t'intéressent.



  • Tu peux me donner le code car je n'ai pas exactement tout compris,
    instancier ta classe dans la méthode init, faut faire un

    
    @Instance(Reference.ServerProxy)
    public static final ServerProxy ServerProxy;
    
    

    au dessus de

    
    @EventHandler
    public void Init(FMLInitializationEvent event)
    {
    proxy.registerRenders();
    }
    
    

    et après ?



  • Bon premièrement, tu ne devrais pas avoir de classe appelé ServerProxy. C'est soit ClientProxy, soit CommonProxy, pas ServerProxy.
    Ensuite, tu réexpliqueras ce que tu souhaites faire car je n'ai toujours pas compris.


  • Administrateurs

    Salut,
    Pour répondre à ta question :

    new ServerProxy(Minecraft.getMinecraft(), une instance de quelque chose implémentant IResourceManager, aucune idée de quoi);
    

    Voila comment tu peux instancier ta classe (ça fait partie de la base java)

    Et si tu as besoin de faire quelque chose de ton instance :

    ServerProxy nomVariable = new ServerProxy(Minecraft.getMinecraft(), une instance de quelque chose implémentant IResourceManager, aucune idée de quoi);
    

    ceci dit, je pense que tu ferai mieux d'expliquer ce que tu cherches à faire pour qu'on puisse t'aider de façon pertinente.



  • Robin, tu devrais changer ce topic de catégorie, je ne pense pas que ce soit la bonne.


  • Administrateurs

    En effet, je viens de voir.



  • Merci , ça marche !