2017-11-21 9 views
-1

다른 질문이 있지만이 경우에 도움이되는 것은 없습니다.생성자 Commands()가 정의되지 않았습니다. Java/SpigotMC

The constructor Commands() is undefined

어떤 도움 :

그래서 기본적으로

getCommand("minealchemy").setExecutor(new Commands());

를 말한다 라인에 나는이 오류가?

메인 클래스 : 내가 명령에 대한() ... 명령 (널)의 "널 (null)"를 넣을 때 ... 그때는 NullPointerException 오류가 ...

여기에 내 모든 클래스는

package me.zachbears27; 

import org.bukkit.event.Listener; 
import org.bukkit.plugin.java.JavaPlugin; 

import me.zachbears27.utils.Commands; 

public class Main extends JavaPlugin implements Listener { 

    @Override 
    public void onDisable() { 
    } 

    @Override 
    public void onEnable() { 
     getServer().getPluginManager().registerEvents(this, this); 
     registerConfig(); 

     getCommand("minealchemy").setExecutor(new Commands()); 
    } 

    public void registerConfig() { 
     saveDefaultConfig(); 
    } 

} 

명령 클래스 :

package me.zachbears27.utils; 

import java.io.File; 
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 me.zachbears27.utils.Methods; 
import net.md_5.bungee.api.ChatColor; 

public class Commands implements CommandExecutor { 

    private final Methods methods; 
    public Commands(Methods methods) { 
     this.methods = methods; 
    } 

     public boolean onCommand(CommandSender sender, Command label, String cmd, String[] args) { 

      Player p = (Player) sender; 

      if (cmd.equalsIgnoreCase("minealchemy")) { 
       if(args.length > 0) { 
        //Get File 
        File file = methods.getPlayerFile(p.getUniqueId()); 
        FileConfiguration fileSettings = YamlConfiguration.loadConfiguration(file); 

        //Make Sure It's False 
        fileSettings.set("Enabled", false); 

        //Save Inventory 
        methods.savePlayerInv(p.getUniqueId(), p.getInventory().getContents()); 

        //Clear It 
        p.getInventory().clear(); 

        //Put In God Mode 
        p.setInvulnerable(true); 

        //Open Inventory 
        p.openWorkbench(p.getLocation(), true); 
       } else { 
        p.sendMessage(ChatColor.RED + "Incorrect Arguments... Please use \"start\" or \"list\"."); 
       } 
      } 

      return true; 
     } 
} 

방법 클래스 :

package me.zachbears27.utils; 

import java.io.File; 
import java.util.ArrayList; 
import java.util.UUID; 

import org.bukkit.configuration.file.FileConfiguration; 
import org.bukkit.configuration.file.YamlConfiguration; 
import org.bukkit.inventory.ItemStack; 

import me.zachbears27.Main; 
import net.md_5.bungee.api.ChatColor; 

public class Methods { 


private final Main plugin; 
public Methods(Main plugin) { 
    this.plugin = plugin; 
} 


    public ArrayList<String> getAllItems() { 
     ArrayList<String> allItems = new ArrayList<String>(); 
     //Basics 
     String Air = ChatColor.GREEN + "Air" + ChatColor.RESET; 
     String Earth = ChatColor.GREEN + "Earth" + ChatColor.RESET; 
     String Fire = ChatColor.GREEN + "Fire" + ChatColor.RESET; 
     String Metal = ChatColor.GREEN + "Metal" + ChatColor.RESET; 
     String Water = ChatColor.GREEN + "Water" + ChatColor.RESET; 
     String Motion = ChatColor.GREEN + "Motion" + ChatColor.RESET; 
     String Big = ChatColor.GREEN + "Big" + ChatColor.RESET; 
     String Time = ChatColor.GREEN + "Time" + ChatColor.RESET; 
     String Small = ChatColor.GREEN + "Small" + ChatColor.RESET; 

     allItems.add(Air); 
     allItems.add(Earth); 
     allItems.add(Fire); 
     allItems.add(Metal); 
     allItems.add(Water); 
     allItems.add(Motion); 
     allItems.add(Big); 
     allItems.add(Time); 
     allItems.add(Small); 

     //Animals 
     String Cat = ChatColor.GOLD + "Cat" + ChatColor.RESET; 

     allItems.add(Cat); 

     return allItems; 
    } 

    public String addItems(String item1, String item2) { 
     String returnStatement = ChatColor.RED + "X"; 
     if(item1.equals("Air") && item2.equals("Fire")) { 
      returnStatement = "Mist"; 
     } 
     return returnStatement; 
    } 

    public File getPlayerFile(UUID playerUUID) { 

     //Creates The Player File 
     File playerFile = new File (plugin.getDataFolder() + File.separator + "Player Data", playerUUID + ".yml"); 
     return playerFile; 
    } 

    public void savePlayerInv(UUID playerUUID, ItemStack[] inv) { 

     File playerFile = getPlayerFile(playerUUID); 
     FileConfiguration playerData = YamlConfiguration.loadConfiguration(playerFile); 
     playerData.set("SavedInventory", inv); 
    } 
} 
+0

를 사용하여 새로운'새 명령 (새로운 방법 (이))'대신에 onEnable() 함수에서 .setExecutor(new Commands())에게. 여기서'this'는'Main extends JavaPlugin'입니다. – i0xHeX

+0

아 ... 굉장해! 작동하는 것 같습니다! 감사합니다 –

답변

1

변경

.setExecutor(new Commands(new Methods(this))) 
+0

주어진 답변에 [iLucky] (https://stackoverflow.com/users/8776861/ilucky) 감사드립니다. – Scriptblade

+0

이 작동하지 않는 것 .. 난 그냥 "생성자 명령 (메서드) 정의되지 않았습니다" –

+0

당신이 나를 (실수로) 명령() 클래스에서 생성자를 제거 할 필요가 없었어요 지금 작동해야합니다 : P – Scriptblade