Почему мои игроки не телепортируются на спавн? (java .lang.IllegalArgumentException: location.world) - PullRequest
0 голосов
/ 31 марта 2020

РЕДАКТИРОВАТЬ 01/04/20: Решил проблему самостоятельно.

После реализации записи / чтения файла в соответствии с этим руководством, теперь все работает нормально:

https://www.youtube.com/watch?v=3en6w7PNL08

Я думаю, что следующая строка (создана в первой реализации), вызвала ошибку:

==: org.bukkit.Location

Больше не включается во вновь записанные файлы.


Исходный текст:

Я пытаюсь разработать плагин для мини-игр, такой как игры на выживание, просто для удовольствия. Если два игрока присоединились к лобби, начинается обратный отсчет. После того, как обратный отсчет истечет, они будут телепортированы к своим игрокам.

Из класса Countdown я пытаюсь вызвать класс LocationManager, чтобы получить спавны, сохраненные в config.yml (содержание ниже). ).

// Class 'Countdown' inner countdown method
Template.main.lm.mapTeleport();

// Class 'LocationManager' - method 'mapTeleport'

/**
 * Teleports player to player spawn
 */
public void mapTeleport() {
    int count = 1;
    for(Player alive : Template.main.alive) {
        alive.teleport(getSpawn(count));
        count++;
    }
}

Этот метод mapTeleport вызывает метод getSpawn, самый центральный в данном случае.

public File file = new File("plugins/"+ Template.main.getName() + "/Locations","locs.yml");
public FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);

/**
 * Gets an existing spawn location
 * @param num The spawn ID
 * @return The location
 */
public Location getSpawn(int num) {
    String name = "Spawn";

    // Get requested world
    World world = Bukkit.getWorld(cfg.getString(name + "." + num + ".world"));
    double x = cfg.getDouble(name + "." + num + ".x");
    double y = cfg.getDouble(name + "." + num + ".y");
    double z = cfg.getDouble(name + "." + num + ".z");

    // Create location from world data
    Location loc = new Location(world, x, y, z);
    loc.setPitch(cfg.getInt(name + "." + num + ".yaw"));
    loc.setPitch(cfg.getInt(name + "." + num + ".pitch"));

    return loc;
}

I думаю, что эта строка вызывает проблему, или, скорее, доступ к конфигурации:

World world = Bukkit.getWorld(cfg.getString(name + "." + num + ".world"));

Это ошибка, которую я получаю каждый раз, когда истекает обратный отсчет:

[19:06:12 WARN]: Task #5 for CMDPlugin v1.0.0 generated an exception
java.lang.IllegalArgumentException: location.world
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) ~[patched_1.15.2.jar:git-Paper-143]
    at org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer.teleport(CraftPlayer.java:742) ~[patched_1.15.2.jar:git-Paper-143]
    at org.bukkit.craftbukkit.v1_15_R1.entity.CraftEntity.teleport(CraftEntity.java:491) ~[patched_1.15.2.jar:git-Paper-143]
    at de.foobar.net.manager.LocationManager.mapTeleport(LocationManager.java:108) ~[?:?]
    at de.foobar.net.countdowns.Countdown$1.run(Countdown.java:48) ~[?:?]
    at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[patched_1.15.2.jar:git-Paper-143]
    at org.bukkit.craftbukkit.v1_15_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:452) ~[patched_1.15.2.jar:git-Paper-143]
    at net.minecraft.server.v1_15_R1.MinecraftServer.b(MinecraftServer.java:1185) ~[patched_1.15.2.jar:git-Paper-143]
    at net.minecraft.server.v1_15_R1.DedicatedServer.b(DedicatedServer.java:430) ~[patched_1.15.2.jar:git-Paper-143]
    at net.minecraft.server.v1_15_R1.MinecraftServer.a(MinecraftServer.java:1112) ~[patched_1.15.2.jar:git-Paper-143]
    at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:934) ~[patched_1.15.2.jar:git-Paper-143]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]

И это мое config.yml:

lobby:
  world: world
  x: -197.4875119294138
  y: 69.0
  z: -124.49595934260542
  yaw: -1.0501342
  pitch: 8.850019
Spawn:
  '1':
    world:
      ==: org.bukkit.Location
      world: world
      x: -194.4864683733013
      y: 69.0
      z: -121.545448660259
      pitch: 7.649753
      yaw: -247.349
    x: -194.4864683733013
    y: 69.0
    z: -121.545448660259
    yaw: -247.349
    pitch: 7.649753
  '2':
    world:
      ==: org.bukkit.Location
      world: world
      x: -199.4815091840693
      y: 69.0
      z: -121.45661018875579
      pitch: 2.9999316
      yaw: -134.54874
    x: -199.4815091840693
    y: 69.0
    z: -121.45661018875579
    yaw: -134.54874
    pitch: 2.9999316

У кого-нибудь есть идеи, как мне это решить?

Спасибо!

...