Plugin/<pluginname> Folder

Discussion in 'Plugin Development' started by XxShadow_NinjaxxX, Jul 27, 2014.

Thread Status:
Not open for further replies.
  1. I followed some guides on how to create config files for each player, but I got stuck. I'm trying to create a new file at the location with
    Code:
    public static YamlConfiguration loadPlayerConfig(String playername){
            File f = new File(pluginPath,playername + ".yml");
            if(!(f.exists() && !f.isDirectory())){
                Log.message("Creating file for "+playername);
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    Log.alert(playername+"'s file could not be created!");
                    Log.debug(e.toString());
                }
            }
            YamlConfiguration yc = YamlConfiguration.loadConfiguration(f);
            return yc;
        }
    pluginPath is set to getDataFolder().getAbsolutePath() in the onEnable

    I'm getting java.ioi.IOException: The system cannot find the path specified
    and my plugins folder does not have a <pluginname> folder, do I have to create it manually?
     
  2. Offline

    AoH_Ruthless

    XxShadow_NinjaxxX
    You don't need to call getAbsolutePath().

    Call getDataFolder().mkdir() in your onEnable() to ensure it's creation.
     
  3. Offline

    Iron_Crystal

    If I want to create a file inside my plugin's folder, I simply do this.

    Code:java
    1. String path = "plugins/MinecraftRP/config.yml";
    2. File file = new File(path);
    3. if (!file.exists()) {
    4. FileConfiguration fileConfig = new YamlConfiguration();
    5. try{
    6. fileConfig.save(file);
    7. }catch(IOException ex) {
    8. //output some error message
    9. }
    10. }


    Where MinecraftRP is the name of my plugin
     
  4. Offline

    AoH_Ruthless

    Iron_Crystal
    • Plugin#getDataFolder() encapsulates plugins/pluginName
    • You could just use Bukkit API for default config file...
    • In my opinion, it is bad practice to use '/', sometimes File separator can be a different character. Use System.getProperty("file.separator") or File.Separator. Usually that is fine though.
     
  5. Offline

    Dragonphase

  6. Offline

    Iron_Crystal

    Ok, well I use this code for much more than just config files.

    Thanks for the tips.
     
  7. I used mkdir and I can create the file in the folder, but I still get an error in bukkit?

    Code:
    [12:01:23] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to SAO v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.PlayerList.c(PlayerList.java:251) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.PlayerList.a(PlayerList.java:138) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.LoginListener.c(LoginListener.java:76) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.LoginListener.a(LoginListener.java:42) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:160) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
    Caused by: java.lang.IllegalArgumentException: Plugin already initialized!
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:98) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at me.Shadow.SAO.PlayerData.<init>(PlayerData.java:11) ~[?:?]
        at me.Shadow.SAO.PlayerListener.onJoinServer(PlayerListener.java:23) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_55]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_55]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_55]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_55]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        ... 14 more
    Caused by: java.lang.IllegalStateException: Initial initialization
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:101) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at me.Shadow.SAO.SAO.<init>(SAO.java:15) ~[?:?]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_55]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_55]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.7.0_55]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.7.0_55]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.7.0_55]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:52) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:127) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:328) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.java:364) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.reload(CraftServer.java:837) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.Bukkit.reload(Bukkit.java:303) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchServerCommand(CraftServer.java:726) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.DedicatedServer.aB(DedicatedServer.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:259) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-16-g37c7969-b3105jnks]
        ... 3 more
    [12:01:23] [Server thread/INFO]: Shadow_Ninjax[/127.0.0.1:54507] logged in with entity id 6104 at ([world] -273.0487782983267, 128.0, 344.5119059317989)
    
    I can find my player file in plugins/pluginname/players/Shadow_Ninjax.yml
    but why am I getting this error? Anyone know?
    It says Illegal State Exception
     
  8. Offline

    AoH_Ruthless

    XxShadow_NinjaxxX
    Full class please; you are invalidly initializing your plugin.
     
  9. Code:
    package me.Shadow.SAO;
     
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
     
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class SAO extends JavaPlugin{
        public static SAO plugin;
        public static String name = null;
        public static HashMap<String,PlayerData> players = new HashMap<String,PlayerData>();
        public static String pluginPath = "";
       
        public static YamlConfiguration loadPlayerConfig(String playername){
            File f = new File(pluginPath+File.separator+"players",playername + ".yml");
            if(!(f.exists() && !f.isDirectory())){
                Log.message("Creating file for "+playername);
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    Log.alert(playername+"'s file could not be created!");
                    Log.debug(e.toString());
                }
            }
            YamlConfiguration yc = YamlConfiguration.loadConfiguration(f);
            return yc;
        }
       
        @Override
        public void onEnable(){
            PluginDescriptionFile pdf = this.getDescription();
            name = pdf.getName();
            Log.message("Plugin has been Enabled");
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvents(new BlockListener(), this);
            pm.registerEvents(new PlayerListener(), this);
            pluginPath = getDataFolder().getAbsolutePath();
            //create paths
            getDataFolder().mkdir();
            //players
            File players = new File(pluginPath+File.separator+"players");
            players.mkdir();
        }
        @Override
        public void onDisable(){
            Log.message("Plugin has been Disabled");
        }
       
        public boolean onCommand(CommandSender sender,Command cmd, String commandLabel,String[] args){
            if(!(sender instanceof Player)){
                Log.message("Commands can only be run by Players!");
                return false;
            }
            Player player = (Player) sender;
            switch(commandLabel.toLowerCase()){
            case "sao":
                player.sendMessage("Welcome " + player.getName());
            }
           
            return false;
        }
       
    }
    
     
Thread Status:
Not open for further replies.

Share This Page