diff --git a/NWorldPermissions/res/config.yml b/NWorldPermissions/res/config.yml index 5b54787..5f7ed7b 100644 --- a/NWorldPermissions/res/config.yml +++ b/NWorldPermissions/res/config.yml @@ -1,7 +1,9 @@ # config.yml -controlled-worlds: [] - offline-players-tracker: enabled: true - record-only: true + teleport-times: + position-changed: 0 + position-unchanged: 0 + +controlled-worlds: [] \ No newline at end of file diff --git a/NWorldPermissions/res/messages.yml b/NWorldPermissions/res/messages.yml index eaf0d9f..7649ab7 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' in file 'config.yml'. # 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 189e19e..e0093b5 100644 --- a/NWorldPermissions/res/plugin.yml +++ b/NWorldPermissions/res/plugin.yml @@ -1,6 +1,6 @@ name: NWorldPermissions main: top.nololiyt.worldpermissions.RootPlugin -version: 4.0.4 +version: 4.1.1_Pre2 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.java b/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.java index fe589b5..fb19e21 100644 --- a/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.java +++ b/NWorldPermissions/src/top/nololiyt/worldpermissions/commands/tp/OfflineExecutor.java @@ -82,6 +82,7 @@ protected boolean run(int layer, RootPlugin rootPlugin, DotDividedStringBuilder if (configuration.getLocation("position").getWorld().equals(world)) { configuration.set("position", location); + configuration.set("changed", true); try { configuration.save(file); diff --git a/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.java b/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.java index 0bc75d4..ac6d72c 100644 --- a/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.java +++ b/NWorldPermissions/src/top/nololiyt/worldpermissions/playerlisteners/LoginAndQuitListener.java @@ -29,12 +29,10 @@ public LoginAndQuitListener(RootPlugin rootPlugin) @EventHandler public void onPlayerLogin(PlayerJoinEvent e) { - if ((!rootPlugin.getConfig().getBoolean("offline-players-tracker.enabled")) || - rootPlugin.getConfig().getBoolean("offline-players-tracker.record-only")) - { + if ((!rootPlugin.getConfig().getBoolean("offline-players-tracker.enabled"))) return; - } - + + Player player = e.getPlayer(); File file = new File( rootPlugin.getDataFolder().getAbsolutePath(), "playersData"); @@ -45,9 +43,16 @@ public void onPlayerLogin(PlayerJoinEvent e) YamlConfiguration yamlConfiguration = YamlConfiguration .loadConfiguration(file); - Object location = yamlConfiguration.get("position"); - if (location != null) - player.teleport((Location) location); + Object position = yamlConfiguration.get("position"); + if (position == null) return; + Location location = (Location) position; + + int times = yamlConfiguration.getBoolean("changed", false) ? + rootPlugin.getConfig().getInt("offline-players-tracker.teleport-times.position-changed") : + rootPlugin.getConfig().getInt("offline-players-tracker.teleport-times.position-unchanged"); + + for (int i = 0; i < times; i++) + player.teleport(location); } @EventHandler public void onPlayerQuitEvent(PlayerQuitEvent e) @@ -69,6 +74,7 @@ public void onPlayerQuitEvent(PlayerQuitEvent e) YamlConfiguration yamlConfiguration = YamlConfiguration .loadConfiguration(file); yamlConfiguration.set("position", player.getLocation()); + yamlConfiguration.set("changed", false); yamlConfiguration.save(file); } catch (IOException ex)