Need to import my plugin in my subclass.

Discussion in 'Plugin Development' started by Lars110304, Jun 12, 2020.

Thread Status:
Not open for further replies.
  1. This is my class where i want to import the config file.
    Code:
    package me.lars110304.attractie.commands.subcommands;
    
    import me.lars110304.attractie.Attractie;
    import me.lars110304.attractie.commands.SubCommand;
    import org.bukkit.Location;
    import org.bukkit.Sound;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    
    public class CreateCommand extends SubCommand {
    
        @Override
        public String getName() {
            return "create";
        }
    
        @Override
        public String getDescription() {
            return "Create a attraction.";
        }
    
        @Override
        public String getSyntax() {
            return "/attraction create <Name>";
        }
    
    
        @Override
        public void perform(Player p, String[] args, Attractie plugin) {
            if (args.length == 2){
                Location l = p.getLocation();
                plugin.getConfig().createSection("savedlocations." + args[1]);
                plugin.getConfig().set("savedlocations." + args[1] + ".x", l.getX());
                plugin.getConfig().set("savedlocations." + args[1] + ".y", l.getY());
                plugin.getConfig().set("savedlocations." + args[1] + ".z", l.getZ());
                plugin.getConfig().set("savedlocations." + args[1] + ".pitch", l.getPitch());
                plugin.getConfig().set("savedlocations." + args[1] + ".yaw", l.getYaw());
                plugin.saveConfig();
                p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1);
                p.sendMessage("§aYou succesfully created a attraction named: §6" + args[1]);
    
    
            } else if(args.length != 2){
               p.sendMessage("§c§lError: §aDo it like this: §6/attraction create <name>");
            }
    
        }
    }
    
    This is my Command manager.
    Code:
    package me.lars110304.attractie.commands;
    
    import me.lars110304.attractie.Attractie;
    import me.lars110304.attractie.commands.subcommands.CreateCommand;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    import java.util.ArrayList;
    
    
    public class CommandManager implements CommandExecutor {
    
        private final ArrayList<SubCommand> subCommands = new ArrayList<>();
    
        public CommandManager() {
            subCommands.add(new CreateCommand());
        }
        Attractie plugin;
    
        public CommandManager(Attractie instance){
            plugin = instance;
        }
    
    
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    
            if(sender instanceof Player) {
                Player p = (Player) sender;
                if(command.getName().equalsIgnoreCase("attraction")) {
                    if (args.length > 0) {
                        for (int i = 0; i < getSubcommands().size(); i++) {
                            if (args[0].equalsIgnoreCase(getSubcommands().get(i).getName())) {
                                getSubcommands().get(i).perform(p, args, plugin);
                            }
                        }
    
                    } else if (args.length == 0) {
                        p.sendMessage("§cEnter some arguments");
                    }
                }
            }
            return true;
        }
     
        public ArrayList<SubCommand> getSubcommands(){
            return subCommands;
        }
    }
    this is my main.
    Code:
    package me.lars110304.attractie;
    
    import me.lars110304.attractie.commands.CommandManager;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public final class Attractie extends JavaPlugin {
    
        @Override
        public void onEnable() {
            // Plugin startup logic
            getConfig().options().copyDefaults();
            saveDefaultConfig();
            getCommand("attraction").setExecutor(new CommandManager());
        }
    
    
    
        @Override
        public void onDisable() {
    
            // Plugin shutdown logic
        }
    }
    this is the error
    org.bukkit.command.CommandException: Unhandled exception executing command 'attractie:attraction' in plugin Attractie v1.0-SNAPSHOT
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[server.jar:git-Spigot-800b93f-8160e29]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[server.jar:git-Spigot-800b93f-8160e29]
    at org.bukkit.craftbukkit.v1_15_R1.CraftServer.dispatchCommand(CraftServer.java:711) ~[server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.PlayerConnection.handleCommand(PlayerConnection.java:1657) ~[server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:1497) ~[server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:918) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:911) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(SourceFile:127) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:895) [server.jar:git-Spigot-800b93f-8160e29]
    at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:828) [server.jar:git-Spigot-800b93f-8160e29]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_251]
    Caused by: java.lang.NullPointerException
    at me.lars110304.attractie.commands.subcommands.CreateCommand.perform(CreateCommand.java:32) ~[?:?]
    at me.lars110304.attractie.commands.CommandManager.onCommand(CommandManager.java:37) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[server.jar:git-Spigot-800b93f-8160e29]
    ... 17 more
     
  2. Offline

    caderapee

    @Lars110304

    Youneed to choose a constructor to use or call this() in your constructor with arguments for call the one without argument then pass your main class as parameter
     
    Last edited: Jun 12, 2020
  3. Sorry for the late responds I will try thank you for helping me ;)
     
Thread Status:
Not open for further replies.

Share This Page