Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

Dermenslof

Membres
  • Compteur de contenus

    2 477
  • Inscription

  • Dernière visite

Réputation sur la communauté

2 739 va-t-il s'arrêter ?!

À propos de Dermenslof

  • Rang
    L'ancien
  • Date de naissance 06/01/1986

Me contacter

  • Minecraft Dermenslof

Informations de profil

  • Sexe
  1. Cuboid selection

    c'est marrant apres 500 message t'as toujours pas compris qu'il y a une fonction rechercher sur le forum ??? tu le dit toi meme un cuboid est represete par 2 location. donc il suffit juste de checker si une location se trouve entre 2 points...
  2. Sérialization de l'inventaire d'un joueur !

    oui
  3. Sérialization de l'inventaire d'un joueur !

    ah dans ce cas la serialise en base64: /* * mysql> CREATE TABLE playerInventory * ( * id INT AUTO_INCREMENT, * uid varchar(36), * value BLOB, * primary key (id) * ); **/ public static void savePlayerInventoryToDB(Player p) throws Exception { PreparedStatement stmt = conn.prepareStatement("REPLACE INTO playerInventory (uid, value) VALUES(?, ?)"); stmt.setString(1, p.getUniueID().toString()); stmt.setObject(2, BukkitSerialization.playerInventoryToBase64(p.getInventory())); stmt.executeUpdate(); stmt.close(); } public static void restorePlayerInventoryFromDB(Player p) throws Exception { PreparedStatement stmt = conn.prepareStatement("SELECT value FROM playerInentory WHERE uid = ?"); stmt.setString(1, p.getUniueID().toString()); ResultSet rs = stmt.executeUpdate(); String[] base64Inv = rs.next() ? (String[])rs.getObject(1) : null; rs.close(); stmt.close(); if (base64Inv == null) throws(new Exception("impossible de trouver l'inventaire de " + p.getName() + " dans la base de donnée")); PlayerInventory inv = p.getInventory(); inv.setContents(BukkitSerialization.itemStackArrayFromBase64(base64Inv[0])); inv.setArmorContents(BukkitSerialization.itemStackArrayFromBase64(base64Inv[1])); }  
  4. Sérialization de l'inventaire d'un joueur !

    /* * mysql> CREATE TABLE playerInventory * ( * id INT AUTO_INCREMENT, * uid varchar(36), * value BLOB, * primary key (id) * ); **/ public static void savePlayerInventoryToDB(Player p) throws Exception { PreparedStatement stmt = conn.prepareStatement("REPLACE INTO playerInventory (uid, value) VALUES(?, ?)"); stmt.setString(1, p.getUniueID().toString()); stmt.setObject(2, p.getInventory().getContents()); stmt.executeUpdate(); stmt.close(); } public static ItemStack[] getPlayerInventoryFromDB(Player p) throws Exception { PreparedStatement stmt = conn.prepareStatement("SELECT value FROM playerInentory WHERE uid = ?"); stmt.setString(1, p.getUniueID().toString()); ResultSet rs = stmt.executeUpdate(); Object obj = rs.next() ? rs.getObject(1) : null; rs.close(); stmt.close(); return (ItemStack[])obj; }  
  5. Sérialization de l'inventaire d'un joueur !

    Object obj = (Object)anyJavaObject;  
  6. Sérialization de l'inventaire d'un joueur !

    un mot: BLOB   ex:http://www.java2s.com/Code/Java/Database-SQL-JDBC/HowtoserializedeserializeaJavaobjecttotheMySQLdatabase.htm  
  7. NPE lors d'un call event

    hum... this.knocker = knocker; this.knocker = knocked; c'est pas plutot: this.knocker = knocker; this.knocked = knocked;  
  8. Méthode saveResource

    le problème se situe entre la chaise et le bureau
  9. Restart le timer

    donc c'est bien ce que je disais, le problème vient bien d'une initialisation statique. quand tu déclare les fields de ta  class et que tu les initialises en même temps on appel ca une initialisation statique parce que ceci est créer juste avant la création de l'instance elle même (l'appel du constructeur). et dans ton cas plus particulièrement,  c'est dans ton constructeur que tu défini la valeur de l'objet pl. donc l'initialisation de ton objet prefix ne peut pas fonctionner car a ce moment la pl vaut null. donc si pl vaut null: pl.getConfig() == null.getConfig() == NullPointerException   et en plus WTF, tu défini tes message par msg = prefix + "..."; et derrière tu fait Bukkit.broadcastMessage(prefix + msg) tu vois pas un gros problème ???     correction: public BallOfSteel pl; private String prefix; private static final String msgRunGame = "%sLa partie commence !"; private static final String msgCancelGame = "%sLa partie n'a pas demarré car il n'y a pas assez de personne"; private static final String msgInfoGame = "%sLa partie commence dans %d seconde%s"; public PlayerJoin(BallOfSteel ballOfSteel) { pl = ballOfSteel; prefix = ChatColor.translateAlternateColorCodes('&', pl.getConfig().getString("prefix")); }     et franchement il va falloir franchement réfléchir avant de pondre du code, il y a plein d'erreurs dans ton code  pl == BallOfSteel.getInstance() donc soit tu utilise pl soi BallOfSteel.getInstance(), mais pas les deux écrire ceci toString().valueOf(BallOfSteel.getInstance().playerList.size()) reviens a cela: "" + pl.playerList.size()     et pour finit tu compte lancer une nouvelle task à chaque fois qu'un joueur rejoins le server ???  
  10. Restart le timer

    donne ton code en entier .. on ne sais pas ou tu as mis ca. et pas de screenshot stp, j'ai pas envie de tout recopier pour te corriger, il y a les balises code pour ca
  11. Restart le timer

    c'eat pas la config mais l''objet pl qui est null. a mon avis tu fait une initialisation statique pour ta "prefix" ce qui est une grosse erreur donne ton code, sinon on peut pas ti'aider on te corrigera
  12. Restart le timer

    https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object...) https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
  13. Restart le timer

    ce n'est pas une class mais un simple bout de code. tu le met ou tu veut
  14. Restart le timer

    private static final String prefix = "§8[§aBallOfSteel§8]§r"; private static final String msgRunGame = "%sLa partie commence !"; private static final String msgCancelGame = "%sLa partie n'a pas demarré car il n'y a pas assez de personne"; private static final String msgInfoGame = "%sLa partie commence dans %d seconde%s"; // ... new BukkitRunnable() { private int time = 31; public void run() { if (--time == 0) { if (BallOfSteel.getInstance().playerList.size() != pl.getConfig().getInt("minPlayers")) Bukkit.broadcastMessage(String.format(msgCancelGame, prefix)); else { Bukkit.broadcastMessage(String.format(msgRunGame, prefix)); // code pour lancer la partie } cancel(); } else if (time < 5 || time % 5 == 0) Bukkit.broadcastMessage(String.format(msgInfoGame, prefix, time, time == 1 ? "" : "s")); } }.runTaskTimer(pl, 20l, 20l);  
  15. Ouverture d'un menu à la fermeture d'un autre

    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/InventoryCloseEvent.html