Nashoba 254 Posté : 21 mai 2016 Bonjour, Dans cette série de tuto je vais vous apprendre à passer du Skript au Java. En effet la manière de coder en Skript ressemble bien au Java, de ce qui est de la logique du code (événement, puis conditions, puis actions etc...). Bien sûr, des connaissances en Java sont nécessaires avant de commencer. Pour cela je vous conseille de suivre la Partie 1 et 2 de ce tuto: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Les bases Étant donner que des dizaines et des dizaines de tutos pour ça traînent sur le net, j'en ai sélectionné un qui est plutôt bien fait: Les Événements Un événement en Java est recherché dans les classes ayant un Listener. Vous allez me dire: Ouais mais comment ça marche? Je vais vous expliquer du mieux possible. Un Listener doit être implémenté dans la classe contenant des événements et aussi enregistré dans la classe principale de votre plugin. Pour implémenter un Listener, il faut ajouter Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Dans la ligne du "public class" (vers le début). Par exemple avec ma classe principale j'obtiens ceci: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Ensuite il faut enregistrer le Listener dans votre classe principale, sinon Bukkit ne sera pas où aller voir s'il y a des événements. Pour cela, dans la fonction Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Il faut mettre autant de lignes que de classe avec des événements comme ceci: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Bien sûr, vous devrez faire les imports nécessaires. Si vous voulez enregistrer votre classe principale (Avec le "onEnable()"), vous devrez mettre: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Voilà! Vos classes sont prêtes pour recevoir des évnements! Maintenant on va voir comment créer des événements. Tout d'abord, en Java, un événement est une fonction avec en argument l'événement et une annotation "@EventHandler". Vous ne comprenez rien? OK j'explique L'annotation permet de reconnaître la fonction en tant qu’événement et non en tant fonction basique. Sinon toutes vos fonctions seraient appelées et ce serait l'anarchie. Un événement est une fonction avec comme argument l’événement. C'est une fonction qui ne renvoie rien (void) mais qui exécute des actions. Voilà comment ça marche niveau code: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Ici c'est un événement qui n'existe pas mais c'est pour vous montrer la structure. La variable "e" vous permettra ensuite de récupérer des infos de l'événement, on verra ça plus tard. Un exemple avec un événement activé quand le joueur rejoint le serveur: Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Voici la liste des équivalents en class des événements de Skript: [spoiler=Liste] Contenu masqué Réagissez ou répondez à ce message afin de consulter le contenu masqué. Si jamais il vous faut quelques précisions ou aides n'hésitez pas à me demander :) 5 Partager ce message Lien à poster Partager sur d’autres sites
speacraft 16 Répondu : 21 mai 2016 Très pratique ! En effet je vais bientot me mettre au java ! Merci pour ce tutoriel :) 1 Partager ce message Lien à poster Partager sur d’autres sites
Invité Répondu : 23 mai 2016 Bonjour, Dans cette série de tuto je vais vous apprendre à passer du Skript au Java. En effet la manière de coder en Skript ressemble bien au Java, de ce qui est de la logique du code (événement, puis conditions, puis actions etc...). Bien sûr, des connaissances en Java sont nécessaires avant de commencer. Pour cela je vous conseille de suivre la Partie 1 et 2 de ce tuto: openclassrooms.com/courses/apprenez-a-programmer-en-java Les bases Étant donner que des dizaines et des dizaines de tutos pour ça traînent sur le net, j'en ai sélectionné un qui est plutôt bien fait: Les Événements Un événement en Java est recherché dans les classes ayant un Listener. Vous allez me dire: Ouais mais comment ça marche? Je vais vous expliquer du mieux possible. Un Listener doit être implémenté dans la classe contenant des événements et aussi enregistré dans la classe principale de votre plugin. Pour implémenter un Listener, il faut ajouter implements Listerner Dans la ligne du "public class" (vers le début). Par exemple avec ma classe principale j'obtiens ceci: package fr.nashoba24.wolvmc; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.event.Listener; public class WolvMC extends JavaPlugin implements Listener { //CODE } Ensuite il faut enregistrer le Listener dans votre classe principale, sinon Bukkit ne sera pas où aller voir s'il y a des événements. Pour cela, dans la fonction @Override public void onEnable() { } Il faut mettre autant de lignes que de classe avec des événements comme ceci: Bukkit.getPluginManager().registerEvents(new NomDeVotreClasseAvecLeListernerImplémenté(), this); Bien sûr, vous devrez faire les imports nécessaires. Si vous voulez enregistrer votre classe principale (Avec le "onEnable()"), vous devrez mettre: Bukkit.getPluginManager().registerEvents(this, this); Voilà! Vos classes sont prêtes pour recevoir des évnements! Maintenant on va voir comment créer des événements. Tout d'abord, en Java, un événement est une fonction avec en argument l'événement et une annotation "@EventHandler". Vous ne comprenez rien? OK j'explique L'annotation permet de reconnaître la fonction en tant qu’événement et non en tant fonction basique. Sinon toutes vos fonctions seraient appelées et ce serait l'anarchie. Un événement est une fonction avec comme argument l’événement. C'est une fonction qui ne renvoie rien (void) mais qui exécute des actions. Voilà comment ça marche niveau code: @EventHandler public void nomDeLaFonction(ClasseDeL'événement e) { //Actions et Conditions ici } Ici c'est un événement qui n'existe pas mais c'est pour vous montrer la structure. La variable "e" vous permettra ensuite de récupérer des infos de l'événement, on verra ça plus tard. Un exemple avec un événement activé quand le joueur rejoint le serveur: @EventHandler public void onJoin(PlayerJoinEvent e) { //Actions et Conditions } Voici la liste des équivalents en class des événements de Skript: [spoiler=Liste] On Bed Enter: PlayerBedEnterEvent On Bed Leave: PlayerBedLeaveEvent On Block Damage: BlockDamageEvent On Break / Mine: BlockBreakEvent On Bucket Empty: PlayerBucketEmptyEvent On Bucket Fill: PlayerBucketFillEvent On Burn: BlockBurnEvent On Can Build Check: BlockCanBuildEvent On Chat: PlayerChatEvent On Chunk Generate: ChunkPopulateEvent On Chunk Load: ChunkLoadEvent On Chunk Unload: ChunkUnloadEvent On Click: PlayerInteractEvent OU PlayerInteractEntityEvent OU PlayerInteractAtEntityEvent On Combust: EntityCombustEvent On Command: PlayerCommandPreprocessEvent On Connect: PlayerPreLoginEvent On Craft: CraftItemEvent On Creeper Power: CreeperPowerEvent On Damage: EntityDamageByBlockEvent OU EntityDamageByEntityEvent OU EntityDamageEvent On Death: EntityDeathEvent On Dispense: BlockDispenseEvent On Drop: PlayerDropItemEvent On Enderman/Sheep: EntityChangeBlockEvent On Explode: EntityExplodeEvent On Explosion Prime: ExplosionPrimeEvent On Fade: BlockFadeEvent On First Join: PlayerJoinEvent On Fishing: PlayerFishEvent On Flow: BlockFromToEvent On Form: BlockFormEvent On Fuel Burn: FurnaceBurnEvent On Gamemode Change: PlayerGameModeChangeEvent On Grow: StructureGrowEvent On Heal: EntityRegainHealthEvent On Hunger Meter Change: FoodLevelChangeEvent On Ignition: BlockIgniteEvent On Item Break: PlayerItemBreakEvent On Item Spawn: ItemSpawnEvent On Join: PlayerJoinEvent On Kick: PlayerKickEvent On Leaves Decay: LeavesDecayEvent On Level Change: PlayerLevelChangeEvent On Lightning Strike: LightningStrikeEvent On Move on: PlayerMoveEvent On Physics: BlockPhysicsEvent On Pick Up: PlayerPickupItemEvent On Pig Zap: PigZapEvent On Piston Extend: BlockPistonExtendEvent On Piston Retract: BlockPistonRetractEvent On Place: BlockPlaceEvent On Portal: PlayerPortalEvent On Portal Create: PortalCreateEvent On Pressure Plate / Trip: EntityInteractEvent On Projectile Hit: ProjectileHitEvent On Quit: PlayerQuitEvent On Redstone: BlockRedstoneEvent On Respawn: PlayerRespawnEvent On Shoot: EntityShootBowEvent On Sign Change: SignChangeEvent On Smelt: FurnaceSmeltEvent On Sneak Toggle: PlayerToggleSneakEvent On Spawn: CreatureSpawnEvent On Spawn Change: SpawnChangeEvent On Spread: BlockSpreadEvent On Sprint Toggle: PlayerToggleSprintEvent On Tame: EntityTameEvent On Target: EntityTargetEvent On Teleport: PlayerTeleportEvent On Throwing of an Egg: PlayerEggThrowEvent On Tool Change: PlayerItemHeldEvent On Vehicle Change: VehicleUpdateEvent On Vehicle Create: VehicleCreateEvent On Vehicle Damage: VehicleDamageEvent On Vehicle Destroy: VehicleDestroyEvent On Vehicle Enter: VehicleEnterEvent On Vehicle Exit: VehicleExitEvent On Weather Change: WeatherChangeEvent On World Init: WorldInitEvent On World Load: WorldLoadEvent On World Save: WorldSaveEvent On World Unload: WorldUnloadtEvent On Zombie Break Door: EntityBreakDoorEvent Si jamais il vous faut quelques précisions ou aides n'hésitez pas à me demander :) Bon, même si c'est relativement simple, c'est plutôt bien compréhensible et sans être vantard ! Tu ferais un bon professeur toi : ) Partager ce message Lien à poster Partager sur d’autres sites
Aristidee 8 Répondu : 24 mai 2016 Et comment on enregistre des variables comme skript, sur le joueur ? :) Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 25 mai 2016 Je vais traiter de ça dans un prochain tuto, patience... Partager ce message Lien à poster Partager sur d’autres sites
Nashoba 254 Répondu : 27 mai 2016 Voilà @Aristidee, j'ai sorti le tuto dont tu avais besoin :) Partager ce message Lien à poster Partager sur d’autres sites
Aristidee 8 Répondu : 27 mai 2016 Merci beaucoup @Nashoba Partager ce message Lien à poster Partager sur d’autres sites
Protoxy 43 Répondu : 1 juin 2016 Merci énormément, j'attend la suite des tutos ! Partager ce message Lien à poster Partager sur d’autres sites