Solved "public int" not work on my Plugin

Discussion in 'Plugin Development' started by ChocoCraft, Apr 12, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    ChocoCraft

    Hello.
    Since few hours, I try to make a plugin for a mini-games. But actually, I've a problem. I can't get a int from a public (same for a String).

    This is my Spoink.class
    Code:
    package me.pokeball.slimeball;
    
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.Team;
    
    import java.util.HashMap;
    import java.util.logging.Logger;
    
    public class Spoink extends JavaPlugin implements Listener {
        public HashMap<Player, Team> playerTeam = new HashMap<Player, Team>();
        FileConfiguration config = getConfig();
    
        private static final Logger log = Logger.getLogger("Minecraft");
    
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
            log.info(String.format("Le plugin magistral de PokeBall a été loadé", getDescription().getName()));
            loadConfiguration();
        }
    
        public void onDisable() {
            this.saveConfig();
        }
        public int started = 1;
        public int playersCount = 0;
        public String prefix = ChatColor.AQUA + "[SlimeBall] " + ChatColor.GRAY;
    
        public void loadConfiguration() {
            getConfig().addDefault("game.maxplayers", 12);
            getConfig().addDefault("game.minplayers", 8);
            getConfig().addDefault("game.pvp", false);
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
    
        @EventHandler
        public void playerOnJoin(PlayerJoinEvent event) {
            new Join().joinEvent(event);
        }
    
    }
    
    And this is my Join class, the class who use the public variables to get information.
    Code:
    package me.pokeball.slimeball;
    
    import me.pokeball.slimeball.Gui.GiveBook;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.event.player.PlayerJoinEvent;
    
    public class Join {
        public void joinEvent(PlayerJoinEvent event) {
            if(new Spoink().playersCount < 12) {
                event.getPlayer().setGameMode(GameMode.ADVENTURE);
                new Spoink().playersCount++;;
                event.setJoinMessage(new Spoink().prefix + ChatColor.YELLOW + event.getPlayer().getName() + " a rejoint la partie (" + new Spoink().playersCount + "/12)");
                new GiveBook().onClickBook(event.getPlayer());
            }
            else {
                event.getPlayer().setGameMode(GameMode.SPECTATOR);
                event.getPlayer().sendMessage(new Spoink().prefix + "La partie a déjà démmaré, vous avez été redirigé en mode spectateur");
                event.setJoinMessage(null);
            }
    
        }
    }
    
    "new Spoink().playersCount" not work and It show an error on logs. Same for other "new Spoink().<public var>"

    Can you help me to solve this problems please.
    If you want, I can give you some logs about the error.

    Thanks for reading,
    ChocoCraft74
     
  2. Offline

    timtower Administrator Administrator Moderator

    @ChocoCraft You probably want to stop making that many instances of classes...
    You NEVER make a new instance of the main class, just don't.
     
  3. Offline

    ChocoCraft

    Code:
    package me.pokeball.slimeball;
    
    import me.pokeball.slimeball.Gui.GiveBook;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.event.player.PlayerJoinEvent;
    
    public class Join {
        Spoink spoink = new Spoink();
        public void joinEvent(PlayerJoinEvent event) {
            if(spoink.playersCount < 12) {
                event.getPlayer().setGameMode(GameMode.ADVENTURE);
                new Spoink().playersCount++;;
                event.setJoinMessage(spoink.prefix + ChatColor.YELLOW + event.getPlayer().getName() + " a rejoint la partie (" + spoink.playersCount + "/12)");
                new GiveBook().onClickBook(event.getPlayer());
            }
            else {
                event.getPlayer().setGameMode(GameMode.SPECTATOR);
                event.getPlayer().sendMessage(spoink.prefix + "La partie a déjà démmaré, vous avez été redirigé en mode spectateur");
                event.setJoinMessage(null);
            }
    
        }
    }
    
    I need to do that ?
    (but actually, always not work)
     
  4. Offline

    timtower Administrator Administrator Moderator

    @ChocoCraft You are still making a new Spoink instance, do you know constructors?
     
Thread Status:
Not open for further replies.

Share This Page