Skip to content

Commit 7d20a9e

Browse files
committed
Decently functional now
1 parent e86427c commit 7d20a9e

File tree

15 files changed

+172
-43
lines changed

15 files changed

+172
-43
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>simplexity</groupId>
88
<artifactId>SimplePlayerFreeze</artifactId>
9-
<version>0.0.2</version>
9+
<version>0.0.3</version>
1010
<packaging>jar</packaging>
1111

1212
<name>SimplePlayerFreeze</name>

src/main/java/simplexity/simpleplayerfreeze/ConfigSettings.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package simplexity.simpleplayerfreeze;
22

33
import org.bukkit.configuration.file.FileConfiguration;
4-
import org.bukkit.plugin.PluginManager;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
57

68
public class ConfigSettings {
79

810
public static String prefix = "";
911
public static String commandErrorMessage = "";
1012
public static String cannotChat = "";
13+
public static String cannotUseCommand = "";
1114
public static String freezeMessage = "";
1215
public static String unfreezeMessage = "";
1316
public static String reloadMessage = "";
@@ -23,18 +26,31 @@ public class ConfigSettings {
2326
public static boolean freezeGlow;
2427
public static boolean freezeDismount;
2528
public static boolean freezeFlight;
29+
public static boolean freezeInvulnerability;
2630
public static boolean preventMovement;
2731
public static boolean preventInteract;
32+
public static boolean preventCrafting;
2833
public static boolean preventChat;
2934
public static boolean preventXPPickup;
3035
public static boolean preventItemPickup;
3136
public static boolean preventItemDrop;
37+
public static boolean preventItemUse;
3238
public static boolean preventHotbarSwitch;
33-
public static void reloadMessages() {
39+
public static boolean preventInventoryInteraction;
40+
public static boolean preventCommands;
41+
public static ArrayList<String> whitelistedCommandList = new ArrayList<>();
42+
43+
public static void reloadConfigSettings(){
44+
reloadConfigBooleans();
45+
reloadMessages();
46+
reloadConfigCommands();
47+
}
48+
private static void reloadMessages() {
3449
FileConfiguration config = SimplePlayerFreeze.simplePlayerFreeze.getConfig();
3550
prefix = config.getString("prefix");
3651
commandErrorMessage = config.getString("command-error-message");
3752
cannotChat = config.getString("cannot-chat");
53+
cannotUseCommand = config.getString("cannot-use-command");
3854
freezeMessage = config.getString("freeze-message");
3955
unfreezeMessage = config.getString("unfreeze-message");
4056
reloadMessage = config.getString("reload-message");
@@ -46,21 +62,32 @@ public static void reloadMessages() {
4662
loginNotif = config.getString("login-notif");
4763
cannotBeFrozen = config.getString("cannot-be-frozen");
4864
notFrozen = config.getString("not-frozen");
65+
preventCommands = config.getBoolean("prevent-commands");
4966
}
5067

51-
public static void reloadConfigSettings(){
68+
private static void reloadConfigBooleans() {
5269
FileConfiguration config = SimplePlayerFreeze.simplePlayerFreeze.getConfig();
5370
freezePersist = config.getBoolean("freeze-persist");
5471
freezeGlow = config.getBoolean("freeze-glow");
5572
freezeDismount = config.getBoolean("freeze-dismount");
5673
freezeFlight = config.getBoolean("freeze-flight");
74+
freezeInvulnerability = config.getBoolean("freeze-invulnerability");
5775
preventMovement = config.getBoolean("prevent-movement");
5876
preventInteract = config.getBoolean("prevent-interact");
77+
preventCrafting = config.getBoolean("prevent-crafting");
5978
preventChat = config.getBoolean("prevent-chat");
6079
preventXPPickup = config.getBoolean("prevent-xp-pickup");
6180
preventItemPickup = config.getBoolean("prevent-item-pickup");
6281
preventItemDrop = config.getBoolean("prevent-item-drop");
82+
preventItemUse = config.getBoolean("prevent-item-use");
6383
preventHotbarSwitch = config.getBoolean("prevent-hotbar-switch");
64-
reloadMessages();
84+
preventInventoryInteraction = config.getBoolean("prevent-inventory-interaction");
85+
}
86+
87+
private static void reloadConfigCommands() {
88+
FileConfiguration config = SimplePlayerFreeze.simplePlayerFreeze.getConfig();
89+
whitelistedCommandList.clear();
90+
List<String> commandList = config.getStringList("whitelisted-commands");
91+
whitelistedCommandList.addAll(commandList);
6592
}
6693
}

src/main/java/simplexity/simpleplayerfreeze/SimplePlayerFreeze.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,13 @@ private void registerListeners() {
3030
getServer().getPluginManager().registerEvents(new DropListener(), this);
3131
getServer().getPluginManager().registerEvents(new EXPPickupListener(), this);
3232
getServer().getPluginManager().registerEvents(new InteractListener(), this);
33-
getServer().getPluginManager().registerEvents(new InventoryListener(), this);
33+
getServer().getPluginManager().registerEvents(new CraftingListener(), this);
34+
getServer().getPluginManager().registerEvents(new LeaveListener(), this);
3435
getServer().getPluginManager().registerEvents(new JoinListener(), this);
3536
getServer().getPluginManager().registerEvents(new MoveListener(), this);
3637
getServer().getPluginManager().registerEvents(new PickupListener(), this);
3738
getServer().getPluginManager().registerEvents(new SwitchItemListener(), this);
39+
getServer().getPluginManager().registerEvents(new ItemConsumeListener(), this);
40+
getServer().getPluginManager().registerEvents(new CommandListener(), this);
3841
}
3942
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ public class Util {
1515
public static Permission freezePermission = new Permission("spf.freeze");
1616
public static Permission unfreezePermission = new Permission("spf.unfreeze");
1717
public static Permission freezeBypassPermission = new Permission("spf.bypass");
18+
public static Permission freezeNotify = new Permission("spf.notify");
1819
public static Permission reloadPermission = new Permission("spf.reload");
1920

2021

2122

2223

2324

2425
public static boolean isFrozen(Player player) {
25-
return player.getPersistentDataContainer().getOrDefault(isFrozenKey, PersistentDataType.BOOLEAN, Boolean.FALSE);
26+
return player.getPersistentDataContainer().getOrDefault(isFrozenKey, PersistentDataType.BOOLEAN, false);
2627
}
2728

2829
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
import java.util.List;
1414

1515
public class FreezePlayer extends Command {
16-
//
16+
17+
// Freezes the player, or unfreezes the player if they are already frozen.
1718
public FreezePlayer(@NotNull String name, @NotNull String description, @NotNull String usageMessage, @NotNull List<String> aliases) {
1819
super(name, description, usageMessage, aliases);
1920
}
@@ -36,15 +37,15 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String s, @NotNul
3637
} else if (player.hasPermission(Util.freezeBypassPermission)) {
3738
sender.sendRichMessage(ConfigSettings.prefix + ConfigSettings.cannotBeFrozen);
3839
return false;
39-
40+
4041
} else if (Util.isFrozen(player)) {
4142
FreezeFunctionality.setUnfrozen(player);
42-
sender.sendMessage(Util.miniMessage.deserialize(ConfigSettings.unfreezeMessage,
43+
sender.sendMessage(Util.miniMessage.deserialize((ConfigSettings.prefix + ConfigSettings.unfreezeMessage),
4344
Placeholder.component("name", player.displayName())));
4445
return true;
4546
} else {
4647
FreezeFunctionality.setFrozen(player);
47-
sender.sendMessage(Util.miniMessage.deserialize(ConfigSettings.freezeMessage,
48+
sender.sendMessage(Util.miniMessage.deserialize((ConfigSettings.prefix + ConfigSettings.freezeMessage),
4849
Placeholder.component("name", player.displayName())));
4950
}
5051
return true;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
public class ReloadConfig extends Command {
1313

14+
// Reloads the configuration
1415

1516
public ReloadConfig(@NotNull String name, @NotNull String description, @NotNull String usageMessage, @NotNull List<String> aliases) {
1617
super(name, description, usageMessage, aliases);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
public class UnfreezePlayer extends Command {
1616

17+
// Unfreezes a frozen player
18+
1719
public UnfreezePlayer(@NotNull String name, @NotNull String description, @NotNull String usageMessage, @NotNull List<String> aliases) {
1820
super(name, description, usageMessage, aliases);
1921
}
@@ -35,7 +37,7 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String s, @NotNul
3537
return true;
3638
}
3739
FreezeFunctionality.setUnfrozen(player);
38-
sender.sendMessage(Util.miniMessage.deserialize(ConfigSettings.unfreezeMessage,
40+
sender.sendMessage(Util.miniMessage.deserialize((ConfigSettings.prefix + ConfigSettings.unfreezeMessage),
3941
Placeholder.component("name", player.displayName())));
4042
return true;
4143
}

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

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,31 @@ public class FreezeFunctionality {
1010
public static void setFrozen(Player player) {
1111
player.getPersistentDataContainer().set(Util.isFrozenKey, PersistentDataType.BOOLEAN, true);
1212
if (ConfigSettings.freezeFlight) {
13-
setFlight(player);
13+
enableFlight(player);
1414
}
1515
if (ConfigSettings.freezeGlow) {
1616
player.setGlowing(true);
1717
}
18-
if (ConfigSettings.freezeDismount){
19-
player.eject();
18+
if (ConfigSettings.freezeDismount && player.isInsideVehicle()) {
19+
player.leaveVehicle();
20+
}
21+
if (ConfigSettings.freezeInvulnerability) {
22+
player.setInvulnerable(true);
2023
}
2124
player.setWalkSpeed(0f);
2225
player.sendRichMessage(ConfigSettings.haveBeenFrozen);
2326
}
2427

2528
public static void setUnfrozen(Player player) {
2629
player.getPersistentDataContainer().set(Util.isFrozenKey, PersistentDataType.BOOLEAN, false);
27-
if (!player.getPersistentDataContainer().getOrDefault(Util.previouslyHadFlyPerms, PersistentDataType.BOOLEAN, false)) {
28-
player.setAllowFlight(false);
29-
}
30-
player.setFlying(false);
31-
player.setGravity(true);
30+
removeFlight(player);
31+
player.setInvulnerable(false);
3232
player.setGlowing(false);
3333
player.setWalkSpeed(0.2f);
3434
player.sendRichMessage(ConfigSettings.haveBeenUnfrozen);
3535
}
3636

37-
public static void setFlight(Player player) {
37+
public static void enableFlight(Player player) {
3838
boolean hasAllowFlight = player.getAllowFlight();
3939
if (hasAllowFlight) {
4040
player.getPersistentDataContainer().set(Util.previouslyHadFlyPerms, PersistentDataType.BOOLEAN, true);
@@ -44,5 +44,15 @@ public static void setFlight(Player player) {
4444
player.setGravity(false);
4545
}
4646

47+
public static void removeFlight(Player player) {
48+
if (!player.getPersistentDataContainer().getOrDefault(Util.previouslyHadFlyPerms, PersistentDataType.BOOLEAN, false)) {
49+
player.setAllowFlight(false);
50+
}
51+
player.getPersistentDataContainer().remove(Util.previouslyHadFlyPerms);
52+
player.setFlying(false);
53+
player.setInvulnerable(false);
54+
player.setGravity(true);
55+
}
56+
4757

4858
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package simplexity.simpleplayerfreeze.listeners;
2+
3+
4+
import org.bukkit.event.EventHandler;
5+
import org.bukkit.event.Listener;
6+
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
7+
import simplexity.simpleplayerfreeze.ConfigSettings;
8+
import simplexity.simpleplayerfreeze.Util;
9+
10+
public class CommandListener implements Listener {
11+
12+
@EventHandler
13+
public void onCommand(PlayerCommandPreprocessEvent commandEvent) {
14+
if (!ConfigSettings.preventCommands) return;
15+
if (!Util.isFrozen(commandEvent.getPlayer())) return;
16+
String command = commandEvent.getMessage().split(" ")[0];
17+
if (!ConfigSettings.whitelistedCommandList.contains(command)) {
18+
commandEvent.getPlayer().sendRichMessage(ConfigSettings.cannotUseCommand);
19+
commandEvent.setCancelled(true);
20+
}
21+
}
22+
23+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package simplexity.simpleplayerfreeze.listeners;
2+
3+
import org.bukkit.entity.Player;
4+
import org.bukkit.event.EventHandler;
5+
import org.bukkit.event.Listener;
6+
import org.bukkit.event.inventory.CraftItemEvent;
7+
import simplexity.simpleplayerfreeze.ConfigSettings;
8+
import simplexity.simpleplayerfreeze.Util;
9+
10+
public class CraftingListener implements Listener {
11+
12+
@EventHandler
13+
public void onCraft(CraftItemEvent craftEvent) {
14+
if (!ConfigSettings.preventCrafting) return;
15+
if (Util.isFrozen((Player) craftEvent.getWhoClicked())) {
16+
craftEvent.setCancelled(true);
17+
}
18+
}
19+
20+
}

0 commit comments

Comments
 (0)