From 0de1411420c85f491cfd1ccc62cc92d560b23511 Mon Sep 17 00:00:00 2001 From: yueyinqiu Date: Fri, 26 Jun 2020 16:52:57 +0800 Subject: [PATCH] =?UTF-8?q?4.1.1=5FPre1=E4=B8=8A=E9=99=90=E6=97=B6?= =?UTF-8?q?=E4=BC=A0=E9=80=81=E5=8F=AF=E4=BB=A5=E8=AE=BE=E7=BD=AE=E6=AC=A1?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E8=A7=A3=E5=86=B3back=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NWorldPermissions/res/config.yml | 6 +++-- NWorldPermissions/res/messages.yml | 2 +- NWorldPermissions/res/plugin.yml | 2 +- .../commands/tp/OfflineExecutor.kt | 6 ++--- .../playerlisteners/LoginAndQuitListener.kt | 22 ++++++++++++++----- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/NWorldPermissions/res/config.yml b/NWorldPermissions/res/config.yml index 5b54787..5712b81 100644 --- a/NWorldPermissions/res/config.yml +++ b/NWorldPermissions/res/config.yml @@ -1,7 +1,9 @@ # config.yml -controlled-worlds: [] +controlled-worlds: offline-players-tracker: enabled: true - record-only: true + teleport-times: + position-changed: 0 + position-unchanged: 0 diff --git a/NWorldPermissions/res/messages.yml b/NWorldPermissions/res/messages.yml index eaf0d9f..e030188 100644 --- a/NWorldPermissions/res/messages.yml +++ b/NWorldPermissions/res/messages.yml @@ -47,7 +47,7 @@ messages: offline: tracker-not-enabled: | &r&3> Oh, {senderName}&r&3! You haven't enabled the offline players tracker. - Make sure you've set 'offline-players-tracker.enabled' to 'true', and 'offline-players-tracker.record-only' to 'false' in file 'config.yml'. + Make sure you've set 'offline-players-tracker.enabled' to 'true'. # Available Arg(s): {senderName}. no-such-world: | &r&3> {senderName}&r&3? Which world is '{worldName}'? diff --git a/NWorldPermissions/res/plugin.yml b/NWorldPermissions/res/plugin.yml index 5e2c1a2..b01c9ae 100644 --- a/NWorldPermissions/res/plugin.yml +++ b/NWorldPermissions/res/plugin.yml @@ -1,6 +1,6 @@ name: NWorldPermissions main: top.nololiyt.worldpermissions.RootPlugin -version: 4.1.0 +version: 4.1.1_Pre1 author: yueyinqiu5990 description: A strange power stopping players being teleported to a world. website: https://github.com/yueyinqiu/NWorldPermissions/wiki diff --git a/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.kt b/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.kt index 540bd47..f82ca19 100644 --- a/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.kt +++ b/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.kt @@ -37,8 +37,7 @@ class OfflineExecutor : Executor() val basePairs = arrayOf(StringPair.markName(markName), StringPair.worldName(worldName), StringPair.senderName(commandSender.name)); - if (!rootPlugin.config.getBoolean("offline-players-tracker.enabled") || rootPlugin.config.getBoolean( - "offline-players-tracker.record-only")) + if (!rootPlugin.config.getBoolean("offline-players-tracker.enabled")) { rootPlugin.messagesManager.sendMessage(messageKey.append("tracker-not-enabled"), basePairs, commandSender); return true; @@ -68,7 +67,8 @@ class OfflineExecutor : Executor() val position = configuration.getLocation("position") ?: continue; if (position.world == world) { - configuration.set("position", location) + configuration.set("position", location); + configuration.set("changed", true); try { configuration.save(file); diff --git a/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.kt b/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.kt index 011bf90..1e17284 100644 --- a/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.kt +++ b/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.kt @@ -21,17 +21,28 @@ class LoginAndQuitListener(private val rootPlugin: RootPlugin) : Listener @EventHandler fun onPlayerLogin(e: PlayerJoinEvent) { - if (!rootPlugin.config.getBoolean("offline-players-tracker.enabled") || rootPlugin.config.getBoolean( - "offline-players-tracker.record-only")) return; + if (!rootPlugin.config.getBoolean("offline-players-tracker.enabled")) return; val player = e.player; var file = File(rootPlugin.dataFolder.absolutePath, "playersData"); file.mkdirs(); file = File(file.absolutePath, player.uniqueId.toString() + ".yml"); if (!file.exists()) return; - + val yamlConfiguration = YamlConfiguration.loadConfiguration(file); - val location = yamlConfiguration.get("position"); - if (location != null) player.teleport((location as Location?)!!); + val position = yamlConfiguration.get("position"); + if (position != null) + { + val location = position as Location; + val times = when (yamlConfiguration.getBoolean("changed", false)) + { + true -> rootPlugin.config.getInt("offline-players-tracker.teleport-times.position-changed") + false -> rootPlugin.config.getInt("offline-players-tracker.teleport-times.position-unchanged") + } + for (index in 0 until times) + { + player.teleport(location); + } + } } @EventHandler @@ -48,6 +59,7 @@ class LoginAndQuitListener(private val rootPlugin: RootPlugin) : Listener val yamlConfiguration = YamlConfiguration.loadConfiguration(file); yamlConfiguration.set("position", player.location); + yamlConfiguration.set("changed", false); yamlConfiguration.save(file); } catch (ex: IOException)