我有两个课程" main"用于命令和更多和"事件"对于事件和现在 我想把这个事件和#34; PlayerdeathEvent"传送我到一个点,从点的坐标保存在配置中,现在我测试这个:
我在事件类
中创建了它public void lbbkampfrespawn()
{
FileConfiguration cfg = this.getConfig();
{
String world = cfg.getString("LBBsetkampfrespawn1.world");
double x = cfg.getDouble("LBBsetkampfrespawn1.x");
double y = cfg.getDouble("LBBsetkampfrespawn1.y");
double z = cfg.getDouble("LBBsetkampfrespawn1.z");
double yaw = cfg.getDouble("LBBsetkampfrespawn1.yaw");
double pitch = cfg.getDouble("LBBsetkampfrespawn1.pitch");
Location loc = new Location(Bukkit.getWorld(world), x, y, z);
loc.setYaw((float) yaw);
loc.setPitch((float) pitch);
p1.teleport(loc);
}
{
String world = cfg.getString("LBBsetkampfrespawn2.world");
double x = cfg.getDouble("LBBsetkampfrespawn2.x");
double y = cfg.getDouble("LBBsetkampfrespawn2.y");
double z = cfg.getDouble("LBBsetkampfrespawn2.z");
double yaw = cfg.getDouble("LBBsetkampfrespawn2.yaw");
double pitch = cfg.getDouble("LBBsetkampfrespawn2.pitch");
Location loc = new Location(Bukkit.getWorld(world), x, y, z);
loc.setYaw((float) yaw);
loc.setPitch((float) pitch);
p2.teleport(loc);
}
}
}
问题:
我不知道"getConfig()"
eclipse说我诅咒方法getConfig()
我使用静态
在主类中创建了它public static void lbbkampfrespawn()
{
FileConfiguration cfg = this.getConfig();
{
String world = cfg.getString("LBBsetkampfrespawn1.world");
double x = cfg.getDouble("LBBsetkampfrespawn1.x");
double y = cfg.getDouble("LBBsetkampfrespawn1.y");
double z = cfg.getDouble("LBBsetkampfrespawn1.z");
double yaw = cfg.getDouble("LBBsetkampfrespawn1.yaw");
double pitch = cfg.getDouble("LBBsetkampfrespawn1.pitch");
Location loc = new Location(Bukkit.getWorld(world), x, y, z);
loc.setYaw((float) yaw);
loc.setPitch((float) pitch);
p1.teleport(loc);
}
{
String world = cfg.getString("LBBsetkampfrespawn2.world");
double x = cfg.getDouble("LBBsetkampfrespawn2.x");
double y = cfg.getDouble("LBBsetkampfrespawn2.y");
double z = cfg.getDouble("LBBsetkampfrespawn2.z");
double yaw = cfg.getDouble("LBBsetkampfrespawn2.yaw");
double pitch = cfg.getDouble("LBBsetkampfrespawn2.pitch");
Location loc = new Location(Bukkit.getWorld(world), x, y, z);
loc.setYaw((float) yaw);
loc.setPitch((float) pitch);
p2.teleport(loc);
}
}
问题:我不能用这个。在静态
感谢您的帮助,我需要做什么!
当您需要更多来自鳕鱼时,请发送什么。
感谢。 Sry拼写
答案 0 :(得分:1)
编者注:
之前已包含Deutsche版本的答案,但removed because帖子应为英文。如果您想看到它,请使用revision history。
getConfig()
方法继承自JavaPlugin
类,只有一个类应该扩展。但是,有很多方法可以从另一个类访问配置文件。例如,人们可以保留对你的主要内容的引用。类或插件(扩展JavaPlugin
的那个)然后使用该对象/引用调用getConfig()
。您还可以创建一个静态getter方法来返回插件的实例(不确定这是不是很好)。 Eclipse可能会告诉您创建getConfig()
方法,因为您在不扩展JavaPlugin
的类中调用它。
例如,让我们说你的JavaPlugin
扩展名为" Main"。例如,如果您有一个想要访问Main类的侦听器类,则可以在侦听器类的构造函数中请求此信息。在您的监听器课程中,您将拥有:
public class MainListener implements Listener {
private Main plugin;
public MainListener(Main plugin) {
this.plugin = plugin;
}
@EventHandler
public void onRespawn(PlayerRespawnEvent event) {
FileConfiguration config = plugin.getConfig();
}
如您所见,这使您可以在plugin.getConfig()
课程的任何位置使用MainListener
。您将使用onEnable()
实例化侦听器(例如,在Main类的new MainListener(this);
方法中)。当然不要忘记注册听众。
我理解你在这里要做的事情,但我相信有一个更好的方法(在死亡时传送球员是毛病或明显不起作用)。我不确定为什么你的方法是静态的,你在事件方法中调用它吗? P1
和p2
未作为方法中的参数传递。这就是我要做的事情(试过这个并且它有效):不是在死亡事件中传送球员,而是在玩家重生时改变重生位置:
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent event) {
FileConfiguration config = getConfig(); //Or whichever method you are using
World world = Bukkit.getWorld(config.getString("world"));
double x = config.getDouble("x");
double y = config.getDouble("y");
double z = config.getDouble("z");
float yaw = (float) config.getDouble("yaw");
float pitch = (float) config.getDouble("pitch");
event.setRespawnLocation(new Location(world, x, y, z, yaw, pitch));
}
这是我的测试config.yml文件:
world: world
x: 0
y: 80
z: 0
yaw: 0
pitch: 0
注意:我没有检查具有该名称的世界是否真的存在,以及该位置是否是玩家传送到的安全位置。这将是您需要实施的事情。