I need help with my plugin

Discussion in 'Plugin Development' started by ZimrightPlugin, Mar 31, 2020.

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

    ZimrightPlugin

    No Problem anymore!
     
    Last edited: Mar 31, 2020
  2. Online

    timtower Administrator Administrator Moderator

  3. Offline

    ZimrightPlugin

    Yes, i do
     
  4. Online

    timtower Administrator Administrator Moderator

  5. Offline

    ZimrightPlugin

    @timtower
    pexCommandClass:
    Code:
    package de.zimright.permission.system;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    
    import de.zimright.permission.main.Main;
    
    public class pexCommand implements CommandExecutor {
        public static FileConfiguration file = Main.getPlugin().getConfig();
    
        @SuppressWarnings("deprecation")
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(sender instanceof Player) {
                Player player = (Player) sender;
                if(player.hasPermission("pex.set") || player.isOp()) {
                    if(args.length == 4) {
                        if(args[0].equalsIgnoreCase("user")) {
                            if(Bukkit.getPlayer(args[1]) != null ) {
                                Player target = Bukkit.getPlayer(args[1]);
                                if(args[2].equalsIgnoreCase("add")) {
                                    List<String> perms = file.getStringList("Users." + target.getName() + ".permissions");
                                    perms.add(args[3]);
                                    file.set("Users." + target.getName() + ".permissions", perms);
                                    Main.getPlugin().saveConfig();
                                    player.sendMessage("§aPermission added!");
                                }else if(args[2].equalsIgnoreCase("remove")){
                                    List<String> perms = file.getStringList("Users." + target.getName() + ".permissions");
                                    perms.remove(args[3]);
                                    file.set("Users." + target.getName() + ".permissions", perms);
                                    Main.getPlugin().saveConfig();
                                    player.sendMessage("§aPermission removed!");
                                }else {
                                    player.sendMessage("§c use /pex user <name> add/remove <perm>");
                                }
                            }else {
                                player.sendMessage("§c The player isn't online!");
                            }
                        }else if(args[0].equalsIgnoreCase("group")) {
                           
                        }else {
                            player.sendMessage("§c use /pex <user/group> [NAME] <add/remove> [PERM]");
                        }
                   
                    }else {
                   
                    }
                }else{
                    player.sendMessage("§c You don't have the permission!");
                }
            }
            return false;
        }
       
        public static void saveConfig() {
            File configFile = new File(Main.getPlugin().getDataFolder(), "config.yml");
            YamlConfiguration customConfig= YamlConfiguration.loadConfiguration(configFile);
    
            customConfig.options().copyDefaults(true);
            try {
                customConfig.save(configFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    
    MainClass:
    Code:
    package de.zimright.permission.main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import de.zimright.permission.system.joinquitListener;
    import de.zimright.permission.system.pexCommand;
    import de.zimright.permission.system.updatePermissions;
    
    public class Main extends JavaPlugin {
        public static Main plugin;
       
        public void onLoad() {
            plugin = this;
            if(this.getConfig().contains("Users") == false) {
                this.getConfig().createSection("Users");
                this.getConfig().createSection("Groups");
                this.saveConfig();
            }
           
        }
       
        public void onEnable() {
            new updatePermissions();
            getCommand("pex").setExecutor(new pexCommand());
            Bukkit.getPluginManager().registerEvents(new joinquitListener(), this);
        }
       
        public void onDisable() {
           
        }
       
       
       
        public static Main getPlugin() {
            return plugin;
        }
    }
    UpdatePermissionClass:
    Code:
    package de.zimright.permission.system;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.permissions.PermissionAttachment;
    
    import de.zimright.permission.main.Main;
    import de.zimright.permission.main.variablen;
    
    public class updatePermissions {
        public static FileConfiguration file = Main.getPlugin().getConfig();
    
        public updatePermissions() {
            Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {
               
                @Override
                public void run() {
                    Main.getPlugin().reloadConfig();
                    for(Player player : Bukkit.getOnlinePlayers()) {
                        PermissionAttachment att = variablen.perm.get(player);
                        if(att == null) {
                            att = player.addAttachment(Main.getPlugin());
                        }
                        for(String permission : file.getStringList("Users." + player.getName() + ".permissions")) {
                            att.setPermission(permission, true);
                        }
                        String group = file.getString("Users." + player.getName() + ".group");
                        if(file.contains("Groups." + group)) {
                            for(String permission : file.getStringList("Groups." + group + ".permissions")) {
                            att.setPermission(permission, true);
                        }
                        }
                       
                        variablen.perm.put(player, att);
                       
                    }
                   
                }
            }, 0, 20*5);
        }
    }
    I think, thats all what you need
     
  6. Online

    timtower Administrator Administrator Moderator

    @ZimrightPlugin Don't use the onLoad, do that in the onEnable instead.
    Ditch all statics, you don't need them, might be messing it up for you here.
     
  7. Offline

    ZimrightPlugin

    @timtower it also didn't work
    Code:
    package de.zimright.permission.main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import de.zimright.permission.system.joinquitListener;
    import de.zimright.permission.system.pexCommand;
    import de.zimright.permission.system.updatePermissions;
    
    public class Main extends JavaPlugin {
        public static Main plugin;
      
        public void onLoad() {
          
          
        }
      
        public void onEnable() {
            plugin = this;
            if(this.getConfig().contains("Users") == false) {
                this.getConfig().createSection("Users");
                this.getConfig().createSection("Groups");
                this.saveConfig();
            }
            new updatePermissions();
            getCommand("pex").setExecutor(new pexCommand());
            Bukkit.getPluginManager().registerEvents(new joinquitListener(), this);
        }
      
        public void onDisable() {
          
        }
      
      
      
        public static Main getPlugin() {
            return plugin;
        }
    }
    When i check the conig after i added a permission, there is no one
     
  8. Online

    timtower Administrator Administrator Moderator

    @ZimrightPlugin And the static FileConfiguration in the other classes.
     
  9. Offline

    ZimrightPlugin

    @timtower the static FileConf of the pexCommand in the main?
     
  10. Online

    timtower Administrator Administrator Moderator

    public static FileConfiguration file = Main.getPlugin().getConfig();
    Those lines don't need the static keyword.
    Certainly not as you can do Main.getPlugin().getConfig().something
     
  11. Offline

    ZimrightPlugin

    Code:
    package de.zimright.permission.system;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    
    import de.zimright.permission.main.Main;
    
    public class pexCommand implements CommandExecutor {
        FileConfiguration file = Main.getPlugin().getConfig();
    
        @SuppressWarnings("deprecation")
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(sender instanceof Player) {
                Player player = (Player) sender;
                if(player.hasPermission("pex.set") || player.isOp()) {
                    if(args.length == 4) {
                        if(args[0].equalsIgnoreCase("user")) {
                            if(Bukkit.getPlayer(args[1]) != null ) {
                                Player target = Bukkit.getPlayer(args[1]);
                                if(args[2].equalsIgnoreCase("add")) {
                                    List<String> perms = file.getStringList("Users." + target.getName() + ".permissions");
                                    perms.add(args[3]);
                                    file.set("Users." + target.getName() + ".permissions", perms);
                                    Main.getPlugin().saveConfig();
                                    player.sendMessage("§aPermission added!");
                                }else if(args[2].equalsIgnoreCase("remove")){
                                    List<String> perms = file.getStringList("Users." + target.getName() + ".permissions");
                                    perms.remove(args[3]);
                                    file.set("Users." + target.getName() + ".permissions", perms);
                                    Main.getPlugin().saveConfig();
                                    player.sendMessage("§aPermission removed!");
                                }else {
                                    player.sendMessage("§c use /pex user <name> add/remove <perm>");
                                }
                            }else {
                                player.sendMessage("§c The player isn't online!");
                            }
                        }else if(args[0].equalsIgnoreCase("group")) {
                           
                        }else {
                            player.sendMessage("§c use /pex <user/group> [NAME] <add/remove> [PERM]");
                        }
                   
                    }else {
                   
                    }
                }else{
                    player.sendMessage("§c You don't have the permission!");
                }
            }
            return false;
        }
       
        public static void saveConfig() {
            File configFile = new File(Main.getPlugin().getDataFolder(), "config.yml");
            YamlConfiguration customConfig= YamlConfiguration.loadConfiguration(configFile);
    
            customConfig.options().copyDefaults(true);
            try {
                customConfig.save(configFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    
    Like that?
     
  12. Online

    timtower Administrator Administrator Moderator

  13. Offline

    ZimrightPlugin

    @timtower i tested to save the config like this

    @timtower so y can't help me or?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Mar 31, 2020
  14. Online

    timtower Administrator Administrator Moderator

    @ZimrightPlugin Update your code, try it again, make sure that you config contains the values.
     
  15. Offline

    ZimrightPlugin

    @timtower This is the config
    Code:
    Users:
      Zimright:
        group: default
        permissions:
        - permission.example
    Groups:
      default:
        prefix: Member
        permissions:
        - chat.write
    
    Everything exist, but it dosn't work. I can set everything, but it didn't save. My only problem is to save the config with the new datas!
     
  16. Online

    timtower Administrator Administrator Moderator

    @ZimrightPlugin Does it stay good when you don't restart the server? When does it go wrong?
    Or is the normal method not working already?
     
Thread Status:
Not open for further replies.

Share This Page