Advertisement
robin4002

Side de FML

Jul 25th, 2016
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. Il y a dans FML deux façons de gérer les side
  2.  
  3. Première méthode, celle fourni par FMLCommonHandler.instance().getEffectiveSide()
  4. Celle-ci vérifie le side du thread dans lequel la fonction est appelé.
  5. Ainsi si on est en solo et qu'on appelle FMLCommonHandler.instance().getEffectiveSide().isClient() depuis un thread de rendu, la valeur sera true.
  6. Si on l'appelle depuis le thread serveur ou de netty, la valeur sera false.
  7. world.isRemote à la même valeur que FMLCommonHandler.instance().getEffectiveSide().
  8.  
  9. Deuxième méthode, celle fourni par FMLCommonHandler.instance().getSide()
  10. Celle-ci vérifie le type de l'application (client au serveur). FMLCommonHandler.instance().getSide().isClient() sera toujours true si le client est lancé et toujours false si le serveur est lancé.
  11.  
  12. Lors du lancement du jeu, toutes les fonctions ayant @SideOnly(Side.CLIENT) sont supprimées via asm si le serveur est lancé. Si le client est lancé se sont toutes les fonctions avec @SideOnly(Side.SERVER) qui sont supprimées.
  13. Le proxy est initialiser à sa valeur clientSide ou serverSide en fonction de FMLCommonHandler.instance().getSide().
  14. Donc si le serveur est lancé, proxy prend la valeur indiqué dans serverSide et tout ce qui est client ne sera pas exécuté.
  15. Si le client est lancé, proxy prend la valeur indiqué dans clientSide et tout ce qui est dans server side ne sera pas exécuté.
  16. D'où l'intérêt de faire une classe CommonProxy (comme montré dans les tutoriels 1.8 et +) qui sera du-coup exécuté dans les deux cas (à condition de mettre un super.nomDeLaFonction dans chaque fonction qui se trouve dans client et serveur proxy).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement