我有两个类“ main”用于命令和更多,“ events”用于事件和现在
我想使事件“ 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()"蚀的不知道说我要使用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);
}



}



问题:我不能用这个。在静态

我要做什么感谢您的帮助!

如果您需要鳕鱼更多的东西,请发送。

谢谢。对拼写很抱歉

最佳答案

编者注:
答案中包含了德语版本的答案,但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);方法中)。当然不要忘记注册监听器。

我了解您在此处尝试做的事情,但我相信有更好的方法可以做到(在玩家死亡时将玩家传送出去是小故障,或者是行不通的)。我不确定为什么将方法设为静态,是否在事件方法中调用它? P1p2不会作为方法中的参数传递。这就是我要做的(尝试并成功了):不要像死亡时那样传送玩家,而是在玩家重生时更改重生位置,如下所示:

@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


注意:我没有检查是否确实存在具有该名称的世界,以及该位置是否对玩家来说是安全的。那将是您需要实现的事情。

07-24 09:17