问题描述
我需要将一个类中的字符串传递给Java(Bukkit)中的另一个类,我已经读过一些类似的问题,但是我无法解决问题。
我有一个主班
public class Main extends JavaPlugin {
@Override
public void onEnable() {
new PlayerListener(this);
this.saveDefaultConfig();
String bannedBlocksString = this.getConfig().getString("bannedBlocks");
}
@Override
public void onDisable() {
}
}
还有另一个类“ PlayerListener”
public class PlayerListener implements Listener {
public PlayerListener(Main plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
// public static final String bannedBlocksString = "DIAMOND_BLOCK; EMERALD_BLOCK";
public static final String[] bannedBlocks = bannedBlocksString.split("; ");
public static boolean isBannedBlock(String[] bannedBlocks, String blockPlaced) {
boolean returnValue = false;
for (String bannedBlock : bannedBlocks) {
if(blockPlaced.equalsIgnoreCase(bannedBlock)){
returnValue = true;
}
}
return returnValue;
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
String blockPlaced = event.getBlockPlaced().getType().toString();
if(!event.getPlayer().hasPermission("antibuild.block.noplace") && isBannedBlock(bannedBlocks, blockPlaced)) {
event.setCancelled(true);
event.getPlayer().sendMessage(ChatColor.RED + "You can not place this block.");
}
}
}
如何从“ PlayerListener”类中获取Main中bannedBlocksString的值?
1楼
试试这个,我希望它能起作用:
从主要:
PlayerListener pl = new PlayerListener(this);
this.saveDefaultConfig();
String [] bannedBlocksString = pl.getBannedBlocks();
在PlayerListener中,您必须声明get方法:
public String [] getBannedBlocks(){
return this.bannedBlocks;
}
2楼
如果取消注释PlayerListener中的bannedBlocksString
,则始终可以在Main类中使用PlayerListener.bannedBlocksString
对其进行访问,因为变量是静态的。
如果您想通过另一种方法进行处理并分配值,则需要从变量中删除final
值并使用下面的代码。
PlayerListener.bannedBlocks = bannedBlocksString.split("; ");