Je suis nouveau sur Java et j'ai rencontré un "bug" dans mon code que j'ai de la difficulté à comprendre/corriger. Pour vous donner quelques connaissances de base, je mis en place un Enum qui indique tous les états de jeu (ci-dessous)Pourquoi l'instruction if ne détectera-t-elle pas mon état de jeu?
public enum GameState {
IN_LOBBY(true), IN_GAME(false), POST_GAME(false), RESETTING(false);
private boolean canJoin;
private static GameState currentState;
GameState(boolean canJoin) {
this.canJoin = canJoin;
}
public boolean canJoin() {
return canJoin();
}
public static void setState(GameState state) {
GameState currentState = state;
}
public static boolean isState(GameState state) {
return GameState.currentState == state;
}
public static GameState getState() {
return currentState;
}
}
Dans ma classe main.java
je précise dans la méthode onEnable
pour définir le GameState à IN_LOBBY
.
En fait ce que je suis en train de faire est dans un BlockBreakEvent Listener je veux dire est
if (GameState.isState(GameState.IN_LOBBY)) {
Location bLoc = block.getLocation();
ChatUtilties.errorPlayer("You may not break blocks at this time.", player);
bLoc.getBlock().setType(Material.type);
}
Autrement dit, je suis en train de détecter si le GameState est IN_LOBBY
et si oui faire en sorte que les joueurs peuvent ne pas casser les blocs. Mais actuellement, deux problèmes sont apparus.
Pour une raison quelconque lorsque le GameState est
IN_LOBBY
le plug-in ne prendra même avis. Il ignore simplement cette déclaration si. Il n'enverra même pas le message, comme si le gamestate n'était pasIN_LOBBY
. Je ne suis pas sûr de savoir comment changer dynamiquement le matériau en fonction du bloc que le joueur a cassé.
mentionnent également la même chose pour sa méthode isState, il doit utiliser currentState retour == Etat –
@RAZ_Muh_Taz: Son champ currentState est statique. Donc, se référant à cela par GameState.currentState devrait ne causer aucun problème. Bien sûr, la question de savoir si l'état actuel est sauvegardé dans un champ statique est une autre question, mais je pense que cela irait au-delà de cette question. –
Merci! Est-ce que vous savez par hasard comment faire en sorte que lorsque le joueur casse un bloc, il le remplace? Évidemment, je le fais mal. – joeldesante