Bonjour !
J'ai encoooore un problème en Java xDD
Cette fois-ci, c'est un runnable qui m'en fait voir de toutes les couleurs. Je souhaite simplement faire un Scoreboard dans lequel il y aurait un timer qui tournerait sans s'arrêter.
Au début, j'avais crée une autre class qui était chargé de s'occuper du Runnable. Sans succès. J'ai donc mis le code qui s'occupe du Runnable dans la class main, et le scoreboard dans la class qui gère le join des joueurs.
Pour toujours compliquer un peu, je souhaite que le timer tourne uniquement si une variable est sur true.
Voici la class main :
La class playerJoinEvent (qui contient donc le ScoreBoard) :
Voici ! Et c'est là que je suis bloqué. Je ne sais pas comment initialiser la méthode runnable (que ce soit dans le main ou dans playerJoinEvent, il sort les mêmes erreurs.
Je me tourne donc vers vous en espérant que vous pourrez m'aider @Detobel36
AlexFatta
J'ai encoooore un problème en Java xDD
Cette fois-ci, c'est un runnable qui m'en fait voir de toutes les couleurs. Je souhaite simplement faire un Scoreboard dans lequel il y aurait un timer qui tournerait sans s'arrêter.
Au début, j'avais crée une autre class qui était chargé de s'occuper du Runnable. Sans succès. J'ai donc mis le code qui s'occupe du Runnable dans la class main, et le scoreboard dans la class qui gère le join des joueurs.
Pour toujours compliquer un peu, je souhaite que le timer tourne uniquement si une variable est sur true.
Voici la class main :
PHP:
package fr.alexfatta.fallenkingdoms;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import fr.alexfatta.fallenkingdoms.managers.damageTeamManager;
import fr.alexfatta.fallenkingdoms.managers.gameManager;
import fr.alexfatta.fallenkingdoms.managers.teamManager;
public class main extends JavaPlugin implements Listener{
private static ArrayList<Player> Blue = new ArrayList<Player>();
private static ArrayList<Player> Red = new ArrayList<Player>();
private static ArrayList<Player> Yellow = new ArrayList<Player>();
private static ArrayList<Player> Green = new ArrayList<Player>();
private static ArrayList<Player> Purple = new ArrayList<Player>();
private static String gamePrefix = ChatColor.GRAY + "[" + ChatColor.RED + "FallenKingdoms" + ChatColor.GRAY + "] ";
private static String argument = ChatColor.RED + "Erreur : ce n'est pas le bon argument !";
static int jour = 1;
static int timeMinute = 0;
static int timeSecond = 0;
@Override
public void onEnable() {
getLogger().info("Plugin de FallenKingdoms actif !");
getServer().getPluginManager().registerEvents(new playerJoinListener(), this);
getServer().getPluginManager().registerEvents(new damageTeamManager(), this);
getServer().getPluginManager().registerEvents(this, this);
getCommand("fkteam").setExecutor(new teamManager());
getCommand("fk").setExecutor(new gameManager());
}
@Override
public void onDisable() {
getLogger().info("Plugin de FallenKingdoms inactif !");
}
int timer = 1;
public void runnable(Player player){
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
for(Player pls : Bukkit.getOnlinePlayers()){
playerJoinListener.loadSB(pls);
}
if(gameManager.isStatuts()){ //compteur du temps et des jours
timeSecond++;
if(timeSecond==60){
timeMinute++;
timeSecond = 0;
if(timeMinute==1 && timeSecond==30){
Bukkit.broadcastMessage(ChatColor.GRAY + "Le soleil est sur le point de se lever...");
}else if(timeMinute==2){
jour++;
Bukkit.broadcastMessage(main.getGamePrefix() + ChatColor.AQUA + "Jour " + jour + ChatColor.AQUA + " !");
}
}
}else {
playerJoinListener.loadSB(player);
}
timer--; // Timer et refresh auto du ScoreBoard
if(timer==0){
timer = 1;
playerJoinListener.loadSB(player);
}
}
}, 20, 20);
}
public static String getArgument() {
return argument;
}
public void setArgument(String argument) {
main.argument = argument;
}
public static String getGamePrefix() {
return gamePrefix;
}
public void setGamePrefix(String gamePrefix) {
main.gamePrefix = gamePrefix;
}
public static ArrayList<Player> getBlue() {
return Blue;
}
public static void setBlue(ArrayList<Player> blue) {
Blue = blue;
}
public static ArrayList<Player> getRed() {
return Red;
}
public static void setRed(ArrayList<Player> red) {
Red = red;
}
public static ArrayList<Player> getYellow() {
return Yellow;
}
public static void setYellow(ArrayList<Player> yellow) {
Yellow = yellow;
}
public static ArrayList<Player> getGreen() {
return Green;
}
public static void setGreen(ArrayList<Player> green) {
Green = green;
}
public static ArrayList<Player> getPurple() {
return Purple;
}
public static void setPurple(ArrayList<Player> purple) {
Purple = purple;
}
}
La class playerJoinEvent (qui contient donc le ScoreBoard) :
PHP:
package fr.alexfatta.fallenkingdoms;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
public class playerJoinListener implements Listener{
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event){
Player p = event.getPlayer();
event.setJoinMessage(main.getGamePrefix() + ChatColor.YELLOW + p.getName() + ChatColor.GRAY + " à rejoint la partie !");
loadSB(p);
}
@EventHandler
public void onPlayerLeave(PlayerKickEvent pke){
Player player = pke.getPlayer();
pke.setLeaveMessage(main.getGamePrefix() + ChatColor.YELLOW + player.getName() + ChatColor.GRAY + " à quitté la partie !");
for(Player plo : Bukkit.getOnlinePlayers()){
loadSB(plo);
}
}
public static void loadSB(Player p){
ScoreboardManager manager = Bukkit.getScoreboardManager();
Scoreboard board = manager.getNewScoreboard();
Objective objective = board.registerNewObjective("Points", "dummy");
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
objective.setDisplayName(main.getGamePrefix());
int joueur = Bukkit.getOnlinePlayers().size();
Score score1 = objective.getScore(ChatColor.AQUA + "Joueurs : " + joueur);
score1.setScore(4);
Score score2 = objective.getScore(" ");
score2.setScore(3);
Score score3 = objective.getScore(ChatColor.AQUA + "Jour : " + main.jour);
score3.setScore(2);
Score score4 = objective.getScore(ChatColor.AQUA + "Temps : " + ChatColor.GOLD + main.timeMinute + ":" + main.timeSecond);
score4.setScore(1);
for(Player pls : Bukkit.getOnlinePlayers()){
pls.setScoreboard(board);
}
}
}
Voici ! Et c'est là que je suis bloqué. Je ne sais pas comment initialiser la méthode runnable (que ce soit dans le main ou dans playerJoinEvent, il sort les mêmes erreurs.
Je me tourne donc vers vous en espérant que vous pourrez m'aider @Detobel36
AlexFatta