2014-09-27 40 views
-1

我正在为Bukkit创建一个插件。但我需要将PlayerName存储在列表中,现在我正在使用ArrayList,但它似乎不能保存它们?arrayList不保存名称?

这里是我的代码:

public class Menu implements Listener { 
private static Menu instance = new Menu(); 

public static Menu getInstance() { 
    return instance; 
} 

ArrayList<String> inMenu = new ArrayList<String>(); 

public void menuAdd(Player p) { 
    if(inMenu.contains(p.getName())) {return;} 
    inMenu.add(p.getName()); 
    [1]p.sendMessage(inMenu.toString()); 

} 

@EventHandler 
    public void onPlayerChat(AsyncPlayerChatEvent e) { 
    [2]e.getPlayer().sendMessage(inMenu.toString()); 
    if(inMenu.contains(e.getPlayer().getName())) { 
     if(e.getMessage().contains("appel")) { 
      inMenu.remove(e.getPlayer().getName()); 
     } 
     return; 
    } else{ 
     e.getPlayer().sendMessage("Not in list"); 
    } 

    } 

在[1]它调试的playerName是ArrayList中,但是当我在[2]没有调试它是在列表中?

主营:

public class Main extends JavaPlugin implements Listener { 

private static Main instance; 
private static Plugin plugin; 

@Override 
public void onEnable() { 
    PluginManager pm = getServer().getPluginManager(); 
    pm.registerEvents(this, this); 


     if(getServer().getPluginManager().getPlugin("Citizens") == null || getServer().getPluginManager().getPlugin("Citizens").isEnabled() == false) { 
      System.out.print("Citizens 2.0 not found or not enabled"); 
      getServer().getPluginManager().disablePlugin(this); 
      return; 
     } 
     net.citizensnpcs.api.CitizensAPI.getTraitFactory().registerTrait(net.citizensnpcs.api.trait.TraitInfo.create(HorecaTrait.class).withName("Horeca")); 

     instance = this; 

     plugin = this; 

     registerEvents(this, new Menu(), new HorecaTrait()); 
} 
+0

向我们展示您在其中实例化菜单的代码? – 2014-09-27 08:43:55

+0

@Petar添加了主类 – user3375403 2014-09-27 09:05:18

+0

告诉我们更多的信息? menuAdd方法的调用在哪里? – 2014-09-27 10:37:31

回答

0

您使用您的menu.getInstance()方法是错误的。您在onEnable()方法中创建了一个new menu(),但我猜测(尽管没有证据),您正在使用Menu.getInstance().menuAdd()来添加它。要修复它,请将中的new menu()更改为Menu.getInstance()。改变工作的权利

主要类:

public class Main extends JavaPlugin implements Listener { 

    private static Main instance; 
    private static Plugin plugin; 

    @Override 
    public void onEnable() { 
     PluginManager pm = getServer().getPluginManager(); 
     pm.registerEvents(this, this); 


     if(getServer().getPluginManager().getPlugin("Citizens") == null || getServer().getPluginManager().getPlugin("Citizens").isEnabled() == false) { 
      System.out.print("Citizens 2.0 not found or not enabled"); 
      getServer().getPluginManager().disablePlugin(this);  
      return; 
     } 
     net.citizensnpcs.api.CitizensAPI.getTraitFactory().registerTrait(net.citizensnpcs.api.trait.TraitInfo.create(HorecaTrait.class).withName("Horeca")); 

     instance = this; 

     plugin = this; 

     registerEvents(this, Menu.getInstance(), new HorecaTrait()); //CHANGED HERE. 
    } 

作为一个侧面说明,你也许并不需要同时instanceplugin,为您Main其实也是Plugin