Skip to content

Commit 4b61740

Browse files
committed
hopefully should work well now
1 parent 91a0ba5 commit 4b61740

File tree

13 files changed

+111
-54
lines changed

13 files changed

+111
-54
lines changed

src/main/java/simplexity/simpleplayerfreeze/Util.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
import org.bukkit.command.CommandSender;
99
import org.bukkit.entity.Player;
1010
import org.bukkit.permissions.Permission;
11+
import org.bukkit.persistence.PersistentDataContainer;
1112
import org.bukkit.persistence.PersistentDataType;
12-
import simplexity.simpleplayerfreeze.configs.ConfigHandler;
1313
import simplexity.simpleplayerfreeze.configs.LocaleHandler;
14+
import simplexity.simpleplayerfreeze.freeze.FreezeType;
1415

1516
import java.util.HashMap;
1617

@@ -19,6 +20,7 @@ public class Util {
1920
public static MiniMessage miniMessage = MiniMessage.miniMessage();
2021
public static String namespace = "simpleplayerfreeze";
2122
public static NamespacedKey isFrozenKey = new NamespacedKey(namespace, "isfrozen");
23+
public static NamespacedKey freezeTypeKey = new NamespacedKey(namespace, "freezetype");
2224
public static NamespacedKey previouslyHadFlyPerms = new NamespacedKey(namespace, "previousflyperms");
2325
public static NamespacedKey freezeSpyDisabled = new NamespacedKey(namespace, "freezespy");
2426
public static Permission freezePermission = new Permission("spf.freeze");
@@ -60,7 +62,7 @@ public static void sendUserMessageWithPlayerAndWorld(CommandSender sender, Strin
6062
public static void sendUserMessageWithWorld(CommandSender sender, String message, World world) {
6163
if (message.isEmpty()) return;
6264
String worldName = world.getName();
63-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getPrefix(),
65+
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getPrefix() + message,
6466
Placeholder.unparsed("world", worldName)));
6567
}
6668

@@ -76,6 +78,12 @@ public static boolean isFrozen(Player player) {
7678
return player.getPersistentDataContainer().getOrDefault(isFrozenKey, PersistentDataType.BOOLEAN, false);
7779
}
7880

81+
public static FreezeType getFreezeType(Player player){
82+
PersistentDataContainer container = player.getPersistentDataContainer();
83+
String freezeTypeString = container.getOrDefault(freezeTypeKey, PersistentDataType.STRING, FreezeType.NONE.name());
84+
return FreezeType.valueOf(freezeTypeString);
85+
}
86+
7987
public static void setServerFrozen(boolean frozen) {
8088
serverFrozen = frozen;
8189
}

src/main/java/simplexity/simpleplayerfreeze/commands/FreezeAll.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import simplexity.simpleplayerfreeze.Util;
1212
import simplexity.simpleplayerfreeze.configs.LocaleHandler;
1313
import simplexity.simpleplayerfreeze.events.PlayerFreezeEvent;
14+
import simplexity.simpleplayerfreeze.freeze.FreezeType;
1415

1516
import java.util.ArrayList;
1617
import java.util.Collection;
@@ -54,7 +55,8 @@ public boolean freezeWorld(CommandSender sender, String[] args) {
5455
}
5556
List<Player> players = requestedWorld.getPlayers();
5657
for (Player player : players) {
57-
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, true));
58+
if (Util.isFrozen(player)) continue;
59+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, true, FreezeType.WORLD));
5860
}
5961
Util.worldFrozen.put(requestedWorld, true);
6062
Util.sendUserMessageWithWorld(sender, LocaleHandler.getInstance().getFreezeWorldMessage(), requestedWorld);
@@ -68,7 +70,8 @@ public void freezeServer(CommandSender sender) {
6870
}
6971
Collection<? extends Player> players = SimplePlayerFreeze.server.getOnlinePlayers();
7072
for (Player player : players) {
71-
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, true));
73+
if (Util.isFrozen(player)) continue;
74+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, true, FreezeType.SERVER));
7275
}
7376
Util.setServerFrozen(true);
7477
Util.sendUserMessage(sender, LocaleHandler.getInstance().getFreezeServerMessage());

src/main/java/simplexity/simpleplayerfreeze/commands/FreezePlayer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import simplexity.simpleplayerfreeze.Util;
1111
import simplexity.simpleplayerfreeze.configs.LocaleHandler;
1212
import simplexity.simpleplayerfreeze.events.PlayerFreezeEvent;
13+
import simplexity.simpleplayerfreeze.freeze.FreezeType;
1314

1415
public class FreezePlayer implements CommandExecutor {
1516

@@ -35,10 +36,10 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3536
return false;
3637
}
3738
if (Util.isFrozen(player)) {
38-
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false));
39+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false, FreezeType.NONE));
3940
Util.sendUserMessageWithPlayer(sender, LocaleHandler.getInstance().getUnfreezeMessage(), player);
4041
} else {
41-
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, true));
42+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, true, FreezeType.INDIVIDUAL));
4243
Util.sendUserMessageWithPlayer(sender, LocaleHandler.getInstance().getFreezeMessage(), player);
4344
}
4445
return true;

src/main/java/simplexity/simpleplayerfreeze/commands/UnfreezeAll.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import simplexity.simpleplayerfreeze.Util;
1212
import simplexity.simpleplayerfreeze.configs.LocaleHandler;
1313
import simplexity.simpleplayerfreeze.events.PlayerFreezeEvent;
14+
import simplexity.simpleplayerfreeze.freeze.FreezeType;
1415

1516
import java.util.ArrayList;
1617
import java.util.Collection;
@@ -22,7 +23,7 @@ public class UnfreezeAll implements TabExecutor {
2223
@Override
2324
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
2425
if (unfreezeWorld(sender, args)) return true;
25-
freezeServer(sender);
26+
unfreezeServer(sender);
2627
return true;
2728
}
2829

@@ -53,21 +54,25 @@ public boolean unfreezeWorld(CommandSender sender, String[] args) {
5354
}
5455
List<Player> players = requestedWorld.getPlayers();
5556
for (Player player : players) {
56-
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false));
57+
if (!Util.isFrozen(player)) continue;
58+
if (Util.getFreezeType(player) == FreezeType.INDIVIDUAL) continue;
59+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false, FreezeType.NONE));
5760
}
5861
Util.worldFrozen.remove(requestedWorld);
5962
Util.sendUserMessageWithWorld(sender, LocaleHandler.getInstance().getUnfreezeWorldMessage(), requestedWorld);
6063
return true;
6164
}
6265

63-
public void freezeServer(CommandSender sender) {
66+
public void unfreezeServer(CommandSender sender) {
6467
if (!sender.hasPermission(Util.freezeServerPermission)) {
6568
Util.sendErrorMessage(sender, LocaleHandler.getInstance().getNoPermission());
6669
return;
6770
}
6871
Collection<? extends Player> players = SimplePlayerFreeze.server.getOnlinePlayers();
6972
for (Player player : players) {
70-
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false));
73+
if (!Util.isFrozen(player)) continue;
74+
if (Util.getFreezeType(player) == FreezeType.INDIVIDUAL) continue;
75+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false, FreezeType.NONE));
7176
}
7277
Util.setServerFrozen(false);
7378
Util.sendUserMessage(sender, LocaleHandler.getInstance().getUnfreezeServerMessage());

src/main/java/simplexity/simpleplayerfreeze/commands/UnfreezePlayer.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import org.bukkit.command.CommandSender;
77
import org.bukkit.entity.Player;
88
import org.jetbrains.annotations.NotNull;
9+
import simplexity.simpleplayerfreeze.SimplePlayerFreeze;
910
import simplexity.simpleplayerfreeze.Util;
1011
import simplexity.simpleplayerfreeze.configs.LocaleHandler;
11-
import simplexity.simpleplayerfreeze.freeze.FreezeFunctionality;
12+
import simplexity.simpleplayerfreeze.events.PlayerFreezeEvent;
13+
import simplexity.simpleplayerfreeze.freeze.FreezeType;
1214

1315
public class UnfreezePlayer implements CommandExecutor {
1416

@@ -30,7 +32,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3032
Util.sendErrorMessage(sender, LocaleHandler.getInstance().getNotFrozen());
3133
return true;
3234
}
33-
FreezeFunctionality.setUnfrozen(player);
35+
SimplePlayerFreeze.getInstance().getServer().getPluginManager().callEvent(new PlayerFreezeEvent(player, false, FreezeType.NONE));
3436
Util.sendUserMessageWithPlayer(sender, LocaleHandler.getInstance().getUnfreezeMessage(), player);
3537
return true;
3638
}

src/main/java/simplexity/simpleplayerfreeze/configs/ConfigHandler.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class ConfigHandler {
1313
private boolean freezePersist, freezeGlow, freezeDismount, freezeFlight, freezeInvulnerability, preventMovement,
1414
preventInteract, preventCrafting, preventXPPickup, preventItemPickup, preventItemDrop, preventItemUse,
1515
preventHotbarSwitch, preventInventoryInteraction, preventInventoryOpen, preventWalking, preventCommands, preventAttack, consoleSeesMutedMessages,
16-
consoleFreezeLoginNotified, preventJumping, freezeNewLogins, freezeWorldChange, notifyWorldChange, notifyNewLogins;
16+
consoleNotify, preventJumping, freezeNewLogins, freezeWorldChange;
1717
public static int chatBehavior;
1818
public static ArrayList<String> whitelistedCommandList = new ArrayList<>();
1919

@@ -62,11 +62,9 @@ private void reloadConfigBooleans() {
6262
preventInventoryInteraction = config.getBoolean("prevent-inventory-interaction", true);
6363
preventInventoryOpen = config.getBoolean("prevent-inventory-open", true);
6464
consoleSeesMutedMessages = config.getBoolean("console-sees-muted-messages", true);
65-
consoleFreezeLoginNotified = config.getBoolean("console-freeze-login-notified", true);
65+
consoleNotify = config.getBoolean("console-notify", true);
6666
freezeNewLogins = config.getBoolean("freeze-new-logins", true);
6767
freezeWorldChange = config.getBoolean("freeze-world-change", true);
68-
notifyWorldChange = config.getBoolean("notify-world-change", true);
69-
notifyNewLogins = config.getBoolean("notify-new-logins", true);
7068
}
7169

7270
private static void reloadConfigCommands() {
@@ -153,8 +151,8 @@ public boolean shouldConsoleSeesMutedMessages() {
153151
return consoleSeesMutedMessages;
154152
}
155153

156-
public boolean shouldConsoleFreezeLoginNotified() {
157-
return consoleFreezeLoginNotified;
154+
public boolean shouldConsoleBeNotified() {
155+
return consoleNotify;
158156
}
159157

160158
public String getPlaceholderAPIFormat() {
@@ -181,11 +179,4 @@ public boolean shouldFreezeWorldChange() {
181179
return freezeWorldChange;
182180
}
183181

184-
public boolean shouldNotifyWorldChange() {
185-
return notifyWorldChange;
186-
}
187-
188-
public boolean shouldNotifyNewLogins() {
189-
return notifyNewLogins;
190-
}
191182
}

src/main/java/simplexity/simpleplayerfreeze/events/PlayerFreezeEvent.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.bukkit.event.Event;
55
import org.bukkit.event.HandlerList;
66
import org.jetbrains.annotations.NotNull;
7+
import simplexity.simpleplayerfreeze.freeze.FreezeType;
78

89
/**
910
* Called when a player should be frozen or unfrozen
@@ -12,10 +13,12 @@ public class PlayerFreezeEvent extends Event {
1213
private static final HandlerList handlers = new HandlerList();
1314
private final Player player;
1415
private final boolean frozen;
16+
private final FreezeType type;
1517

16-
public PlayerFreezeEvent(Player player, final boolean frozen) {
18+
public PlayerFreezeEvent(Player player, final boolean frozen, FreezeType type) {
1719
this.player = player;
1820
this.frozen = frozen;
21+
this.type = type;
1922
}
2023

2124
@Override
@@ -45,4 +48,8 @@ public boolean setFrozen() {
4548
public static HandlerList getHandlerList() {
4649
return handlers;
4750
}
51+
52+
public FreezeType getType() {
53+
return type;
54+
}
4855
}

src/main/java/simplexity/simpleplayerfreeze/freeze/FreezeFunctionality.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@
1212

1313
public class FreezeFunctionality {
1414

15-
public static void setFrozen(Player player) {
15+
public static void setFrozen(Player player, FreezeType freezeType) {
1616
if (player.hasPermission(Util.freezeBypassPermission)) return;
17+
// set frozen and type in PDC
1718
player.getPersistentDataContainer().set(Util.isFrozenKey, PersistentDataType.BOOLEAN, true);
19+
player.getPersistentDataContainer().set(Util.freezeTypeKey, PersistentDataType.STRING, freezeType.name());
20+
// Set configured effects
1821
if (ConfigHandler.getInstance().shouldFreezeFlight()) {
1922
enableFlight(player);
2023
}
@@ -37,7 +40,10 @@ public static void setFrozen(Player player) {
3740
}
3841

3942
public static void setUnfrozen(Player player) {
43+
// Disable frozen tag and set freeze type to default
4044
player.getPersistentDataContainer().set(Util.isFrozenKey, PersistentDataType.BOOLEAN, false);
45+
player.getPersistentDataContainer().set(Util.freezeTypeKey, PersistentDataType.STRING, FreezeType.NONE.name());
46+
// revert effects
4147
removeFlight(player);
4248
player.setInvulnerable(false);
4349
player.setGlowing(false);
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package simplexity.simpleplayerfreeze.freeze;
2+
3+
public enum FreezeType {
4+
SERVER,
5+
WORLD,
6+
INDIVIDUAL,
7+
NONE;
8+
}

src/main/java/simplexity/simpleplayerfreeze/listeners/FreezeListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class FreezeListener implements Listener {
1111
public void onPlayerFreeze(PlayerFreezeEvent freezeEvent) {
1212
Player player = freezeEvent.getPlayer();
1313
if (freezeEvent.setFrozen()) {
14-
FreezeFunctionality.setFrozen(player);
14+
FreezeFunctionality.setFrozen(player, freezeEvent.getType());
1515
} else {
1616
FreezeFunctionality.setUnfrozen(player);
1717
}

0 commit comments

Comments
 (0)