РЕДАКТИРОВАТЬ 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
У кого-нибудь есть идеи, как мне это решить?
Спасибо!