Aller au contenu

Classement


Contenu populaire

Affichage du contenu avec la meilleure réputation le 06/06/20 dans toutes les zones

  1. 1 point
    format slot 11 of player with 8407 named "&a&lMétier Gratuit" with lore "&eJe suis||&bun lore||&dAvec beaucoup de||ligne" to close then run [make player execute command "/§guigratuit"] les "||" servent à faire sauter des lignes
  2. 1 point
    Bonjour! Dans Skript, il y a quelques chose qui plutôt pratique, c'est de pouvoir attribuer une variable à un joueur, un uuid, un monde etc... Par exemple la variable {test.%player%} change à chaque joueur. Ou alors {test.%event-block%} change en fonction du bloc Et bien en Java c'est possible ? Dans ce tuto, je ne traiterai pas d'enregistrer ces variables dans des fichiers, ça je ferais peut-être plus tard dans un autre tuto. Ces variables s'appellent des HashMap. Un HashMap est constitué d'une clé (key) et d'une valeur (value). A chaque clé est associée une valeur. Une clé est une variable de n'importe quel type, mais c'est bien souvent un String. Si vous recherchez une variable dans le HashMap qui est identique à la clé, alors vous récupérerez la valeur associé. Les HashMaps permettent aussi d'enregistrer des variables temporairement, sans charger le fichier de sauvegarde à chaque fois car ça bouffe ÉNORMÉMENT de ressources de faire ça. Bon maintenant passons à la pratique! Pour retrouver l'utilité des variables de Skript, les HashMap doivent être déclaré juste après le "public class", avant toute fonction. Les HashMap contiennent deux type de variable, un pour la clé et un pour la valeur. Ces types de variables peuvent être différents ou les même, ce sera déterminé en fonction de ce que vous en ferez. Voila à quoi ressemble un HashMap: HashMap<String, Double> variable; Le String est donc le type de clé et le double est le type de la valeur associée. Voilà maintenant comment déclarer cette variable: public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Double> missions = new HashMap<String, Double>(); @Override public void onEnable() { //CODE } } Vous pouvez changer le "static" en "public static" si vous voulez que cette variable puisse être lu par d'autres classe ou même enlever le "static" si vous n'utilisez pas de fonctions static. Maintenant on va apprendre à mettre et récupérer des infos de cette variable. Dans les exemples suivant, ma variable sera nommé "exemple". Si vous voulez mettre des joueurs ou d'autre choses en clé, je vous conseille de mettre un String, souvent avec le nom. Ça évite de charger des grosses variables comme les Player et les noms ne bougent pas. Voilà comment mettre une clé et une valeur: exemple.put(key, value); Et voici comment récupérer une valeur: exemple.get(key); Pour tester si le HashMap contient une clé: exemple.containsKey(key); Pour tester si le HashMap contient une valeur: exemple.containsValue(value); Pour finir un petit exemple. On enregistre ici une variable contenant un nombre de point d'un joueur. La clé est donc le nom du joueur et la valeur son nombre de points. public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Integer> points = new HashMap<String, Integer>(); @Override public void onEnable() { } @EventHandler public void onJoin(PlayerJoinEvent e) { Integer pts = 1; //Normalement je charge de mon fichier de config mais là c'est un exemple points.put(e.getPlayer().getName(), pts); } } Maintenant imaginons qu'à sa déconnexion je sauvegarde ses points. J'utilise donc: public class Exemple extends JavaPlugin implements Listener { static HashMap<String, Integer> points = new HashMap<String, Integer>(); @Override public void onEnable() { } @EventHandler public void onLeave(PlayerQuitEvent e) { Player p = e.getPlayer(); //Je crée une variable pour raccourcir le code if(points.containsKey(p.getName())) { Integer pts = points.get(p.getName()); //Là j'utilise ma fonction pour sauvegarder les points } } } Voilà! Encore une fois j'espère avoir été assez clair et que ce tuto vous sera utile ? (un p'tit like ça fait toujours plaisir aussi :D) Et je vous invite à me demander sur quel thème voulez vous que mon prochain tuto soit ?
  3. 1 point
    Si ça marche n'oublie pas de passer ton sujet en résolu et pourquoi pas donner une p'tit like :p
  4. 1 point
    Bonjour à tous! Je vais dans ce tuto vous expliquer comment récupérer des informations à partir de l’événement. Il est donc indispensable d'avoir suivi mon Tuto #1 :) D'abord vous savez certainement que pour chaque variable, on peut mettre un point après pour afficher toutes les fonctions possibles pour cette variable. Or, la variable évent nomée "e" dont j'ai parlé dans mon ancien tuto en est une! En Java il faut réfléchir de la façon dont vous aller trouver ce que vous chercher étape par étape. Si vous chercher par exemple l'altitude d'un joueur, il faut d'abord avoir le joueur, sa position et ensuite on peut tirer de cette position la position Y. Exemple: @EventHandler public void onBreak(BlockBreakEvent e) { Double Ypos = e.getPlayer().getLocation().getY(); } On retrouve bien les étapes: on récupère à partir de l'événement le joueur, on récupère sa location (position) et on récupère le Y de la position. Après les points, seul ce qu'on à récupéré avant influe sur les fonctions disponibles. On aurait bien pu faire ça étape par étape au lieu de tout d'une traite pour bien comprendre: @EventHandler public void onBreak(BlockBreakEvent e) { Player p = e.getPlayer(); Location loc = p.getLocation(); Double Ypos = loc.getY(); } Un petit exemple pour la route, pour le seed d'un monde: @EventHandler public void onBreak(BlockBreakEvent e) { e.getBlock().getWorld().getSeed(); } Je récupère ici le bloc de l'évent, puis le monde, puis le seed. Je tiens à préciser quand dans la liste des fonctions, vous pouvez trouver également des actions, bien souvent ça ne retourne rien donc pas besoin d'enregistrer la variable. Par exemple, pour autoriser le PvP dans un monde, ça ne retourne rien: e.getBlock().getWorld().setPVP(true); Je vous propose maintenant une petite liste d'expression en Skript avec leur correspondance en Java. Cette liste est loin d'être exhaustive, et elle ne contient que les méthodes pour obtenir des infos et non les changer. Pour le reste essayer de trouver vous même en fouillant dans les méthodes des différentes infos (variables) que vous avez récupérer de l'évent :) Dans cette liste, il y a d'abord le type de variable pour récupérer l'infos puis la méthode à utiliser sur cette variable: [spoiler=Liste] Altitude: Location puis getY() Amount: ItemStack puis getAmount() Armour Slot: Inventory puis getBoots(); getChestplate(); getHelmet() ou getLeggings() Bed: Player puis getBedSpawnLocation() Biome: Block puis getBiome() Block: Location puis getBlock() Chunk: Block ou Location puis getChunk() Console: Server puis getConsoleSender() Coordinate: Location puis getX(); getY() ou getZ() Distance: Location puis distance(Location) Enchantment Level: ItemStack puis getEnchantmentLevel(Enchantment) Ender Chest: Player puis getEnderChest() Food Level: Player puis getFoodLevel() Game Mode: Player puis getGameMode() Head Location: Player puis getEyeLocation() Health: Player ou Living Entity puis getHealth() Id: ItemStack ou Block puis getTypeId() Inventory: Player puis getInventory() Level: Player puis getLevel() Level Progress: Player puis getExp() Light Level: Block puis getLightLevel(); getLightFromSky() ou getLightFromBlocks() Lore: ItemMeta puis getLore() Max Health: LivingEntity puis getMaxHealth() Maximum Stack Size: ItemStack puis getMaxStackSize() Name / Display Name: ItemMeta puis getDisplayName() ou Player puis getDisplayName() Now: System puis currentTimeMillis() Remaining Air: Player puis getRemainingAir() Spawn: World puis getSpawnLocation() Time: World puis getTime() Tool: PlayerInventory puis getItemInMainHand() ou getItemInOffHand() Type of: Entity puis getType() UUID: Player puis getUniqueId() Version: Bukkit puis getVersion() Yaw / Pitch: Location puis getYaw() ou getPitch() Encore une fois, n'hésitez pas à me poser des questions :) (Et si ça vous a aidé pourquoi pas un petit j'aime ;) )
  5. 1 point
    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 :)
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.