Skip to content

Commit 545d1c6

Browse files
authored
Merge pull request #22 from ttugrul/master
Add optional player data saving configuration
2 parents 40eb737 + c0f3c9b commit 545d1c6

File tree

5 files changed

+44
-26
lines changed

5 files changed

+44
-26
lines changed

src/main/java/me/wyzebb/playerviewdistancecontroller/PlayerViewDistanceController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,10 @@ private void checkAfk() {
233233
}
234234
}
235235

236+
public static boolean isPlayerDataSavingEnabled() {
237+
return plugin.getConfig().getBoolean("save-player-data", true);
238+
}
239+
236240
@Override
237241
public void onDisable() {
238242
playerAfkMap.clear();

src/main/java/me/wyzebb/playerviewdistancecontroller/commands/subcommands/SetCommand.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.wyzebb.playerviewdistancecontroller.commands.subcommands;
22

3+
import me.wyzebb.playerviewdistancecontroller.PlayerViewDistanceController;
34
import me.wyzebb.playerviewdistancecontroller.data.PlayerDataHandler;
45
import me.wyzebb.playerviewdistancecontroller.utility.ClampAmountUtility;
56
import me.wyzebb.playerviewdistancecontroller.utility.DataProcessorUtility;
@@ -132,18 +133,22 @@ public static void setOthers(CommandSender commandSender, OfflinePlayer target,
132133
// Remove the data handler from memory and save
133134
PlayerDataHandler dataHandler = DataHandlerHandler.getPlayerDataHandler(target);
134135

135-
File playerDataFile = DataHandlerHandler.getPlayerDataFile(target);
136-
FileConfiguration cfg = YamlConfiguration.loadConfiguration(playerDataFile);
137-
138-
cfg.set("chunks", dataHandler.getChunks());
139-
cfg.set("chunksOthers", dataHandler.getChunksOthers());
140-
cfg.set("pingMode", dataHandler.isPingMode());
136+
if (PlayerViewDistanceController.isPlayerDataSavingEnabled()) {
137+
File playerDataFile = DataHandlerHandler.getPlayerDataFile(target);
138+
FileConfiguration cfg = YamlConfiguration.loadConfiguration(playerDataFile);
141139

142-
try {
143-
cfg.save(playerDataFile);
144-
} catch (Exception ex) {
145-
plugin.getLogger().severe("An exception occurred when setting view distance data for " + target.getName() + ": " + ex.getMessage());
146-
} finally {
140+
cfg.set("chunks", dataHandler.getChunks());
141+
cfg.set("chunksOthers", dataHandler.getChunksOthers());
142+
cfg.set("pingMode", dataHandler.isPingMode());
143+
144+
try {
145+
cfg.save(playerDataFile);
146+
} catch (Exception ex) {
147+
plugin.getLogger().severe("An exception occurred when setting view distance data for " + target.getName() + ": " + ex.getMessage());
148+
} finally {
149+
DataHandlerHandler.setPlayerDataHandler(target, null);
150+
}
151+
} else {
147152
DataHandlerHandler.setPlayerDataHandler(target, null);
148153
}
149154
}

src/main/java/me/wyzebb/playerviewdistancecontroller/data/VdCalculator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static void calcVdSet(Player player, boolean luckPermsEvent, boolean send
2929
// Get an instance of the player data handler for the specific player
3030
File playerDataFile = DataHandlerHandler.getPlayerDataFile(player);
3131

32-
if (playerDataFile.exists() && !luckPermsEvent) {
32+
if (playerDataFile.exists() && !luckPermsEvent && PlayerViewDistanceController.isPlayerDataSavingEnabled()) {
3333
FileConfiguration cfg = YamlConfiguration.loadConfiguration(playerDataFile);
3434
amount = ClampAmountUtility.clampChunkValue(cfg.getInt("chunks"));
3535
amountOthers = cfg.getInt("chunksOthers");
@@ -136,7 +136,7 @@ public static void calcVdReset(OfflinePlayer player) {
136136
dataHandler.setPingMode(false);
137137

138138
DataHandlerHandler.setPlayerDataHandler(player, dataHandler);
139-
} else {
139+
} else if (PlayerViewDistanceController.isPlayerDataSavingEnabled()) {
140140
cfg.set("chunks", 32);
141141
cfg.set("chunksOthers", 0);
142142
cfg.set("pingMode", false);
@@ -167,7 +167,7 @@ public static int calcVdGet(OfflinePlayer player) {
167167

168168
PlayerDataHandler dataHandler = DataHandlerHandler.getPlayerDataHandler(player);
169169

170-
if (playerDataFile.exists()) {
170+
if (playerDataFile.exists() && PlayerViewDistanceController.isPlayerDataSavingEnabled()) {
171171
FileConfiguration cfg = YamlConfiguration.loadConfiguration(playerDataFile);
172172

173173
dataHandler.setChunks(ClampAmountUtility.clampChunkValue(cfg.getInt("chunks")));

src/main/java/me/wyzebb/playerviewdistancecontroller/listeners/UpdateVDListeners.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,23 @@ private void onPlayerJoin(PlayerJoinEvent e) {
7777
private void onPlayerQuit(PlayerQuitEvent e) {
7878
PlayerDataHandler dataHandler = DataHandlerHandler.getPlayerDataHandler(e.getPlayer());
7979

80-
File playerDataFile = DataHandlerHandler.getPlayerDataFile(e.getPlayer());
81-
FileConfiguration cfg = YamlConfiguration.loadConfiguration(playerDataFile);
82-
83-
cfg.set("chunks", dataHandler.getChunks());
84-
cfg.set("chunksOthers", dataHandler.getChunksOthers());
85-
cfg.set("pingMode", dataHandler.isPingMode());
86-
87-
try {
88-
cfg.save(playerDataFile);
89-
} catch (Exception ex) {
90-
plugin.getLogger().severe("An exception occurred when setting view distance data for " + e.getPlayer().getName() + ": " + ex.getMessage());
91-
} finally {
80+
if (PlayerViewDistanceController.isPlayerDataSavingEnabled()) {
81+
File playerDataFile = DataHandlerHandler.getPlayerDataFile(e.getPlayer());
82+
FileConfiguration cfg = YamlConfiguration.loadConfiguration(playerDataFile);
83+
84+
cfg.set("chunks", dataHandler.getChunks());
85+
cfg.set("chunksOthers", dataHandler.getChunksOthers());
86+
cfg.set("pingMode", dataHandler.isPingMode());
87+
88+
try {
89+
cfg.save(playerDataFile);
90+
} catch (Exception ex) {
91+
plugin.getLogger().severe("An exception occurred when setting view distance data for " + e.getPlayer().getName() + ": " + ex.getMessage());
92+
} finally {
93+
PlayerViewDistanceController.playerAfkMap.remove(e.getPlayer().getUniqueId());
94+
DataHandlerHandler.setPlayerDataHandler(e.getPlayer(), null);
95+
}
96+
} else {
9297
PlayerViewDistanceController.playerAfkMap.remove(e.getPlayer().getUniqueId());
9398
DataHandlerHandler.setPlayerDataHandler(e.getPlayer(), null);
9499
}

src/main/resources/config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ max-distance: 32
1818
# Minimum view distance for anyone (Cannot be less than 2)
1919
min-distance: 2
2020

21+
# Whether to save player view distance preferences to disk (defaults to true)
22+
# When disabled, players start fresh each session with default/LuckPerms settings
23+
save-player-data: true
24+
2125
# Display a message when a player joins telling them what their view distance is set to
2226
# This message only sends if afkOnJoin is false
2327
display-msg-on-join: true

0 commit comments

Comments
 (0)