Skip to content

Commit 83b9168

Browse files
committed
✨ v1.0-ALPHA1!!!
1 parent 23e5aea commit 83b9168

File tree

12 files changed

+193
-119
lines changed

12 files changed

+193
-119
lines changed

src/main/java/com/azortis/protocolvanish/bukkit/BukkitMessagingService.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.azortis.protocolvanish.common.messaging.MessagingService;
2222
import com.azortis.protocolvanish.common.messaging.MessagingSettings;
23+
import com.azortis.protocolvanish.common.messaging.message.BootMessage;
2324
import com.azortis.protocolvanish.common.messaging.message.Message;
2425
import com.azortis.protocolvanish.common.messaging.provider.MessagingProvider;
2526
import com.azortis.protocolvanish.common.messaging.provider.SQLMessagingProvider;
@@ -49,11 +50,13 @@ public BukkitMessagingService(ProtocolVanish plugin){
4950
}else{
5051
plugin.getLogger().severe("Invalid messaging service!");
5152
}
53+
postMessage(new BootMessage(plugin.getSettingsManager().getServerId().getId()));
5254
}
5355

5456
@Override
5557
public synchronized void consumeMessage(String message) {
5658
String command = message.split(" ")[0];
59+
if(command.equals("boot"))return;
5760
UUID playerUUID = UUID.fromString(message.split(" ")[1]);
5861
switch (command){
5962
case "setvanished":
@@ -64,15 +67,19 @@ public synchronized void consumeMessage(String message) {
6467
if(fromBungee){
6568
deniedUUIDs.add(playerUUID);
6669
Bukkit.getScheduler().runTaskLater(plugin, ()-> deniedUUIDs.remove(playerUUID), 300L);
70+
6771
}
6872
}else{
6973
plugin.getVisibilityManager().getVanishedPlayers().add(playerUUID);
7074
}
7175
case "load":
72-
Bukkit.getScheduler().runTaskAsynchronously(plugin, ()-> {
73-
plugin.loadVanishPlayer(playerUUID);
74-
Bukkit.getScheduler().runTask(plugin, ()-> setLoaded(playerUUID, true));
75-
});
76+
String receiver = message.split(" ")[2];
77+
if(receiver.equals("all") || receiver.equals(plugin.getSettingsManager().getServerId().toString())) {
78+
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
79+
plugin.loadVanishPlayer(playerUUID);
80+
Bukkit.getScheduler().runTask(plugin, () -> setLoaded(playerUUID, true));
81+
});
82+
}
7683
case "unload":
7784
plugin.unloadVanishPlayer(playerUUID);
7885
setLoaded(playerUUID, false);
@@ -82,7 +89,7 @@ public synchronized void consumeMessage(String message) {
8289
}
8390

8491
@Override
85-
public void postMessage(Message message) {
92+
public synchronized void postMessage(Message message) {
8693
Bukkit.getScheduler().runTaskAsynchronously(plugin, ()-> provider.postMessage(message));
8794
}
8895

src/main/java/com/azortis/protocolvanish/bukkit/command/VanishCommand.java

Lines changed: 13 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -21,67 +21,29 @@
2121
import com.azortis.azortislib.command.Command;
2222
import com.azortis.azortislib.command.CommandInjector;
2323
import com.azortis.azortislib.command.builders.CommandBuilder;
24-
import com.azortis.azortislib.command.builders.SubCommandBuilder;
2524
import com.azortis.azortislib.command.executors.ICommandExecutor;
26-
import com.azortis.azortislib.command.executors.ITabCompleter;
27-
import com.azortis.protocolvanish.bukkit.PermissionManager;
2825
import com.azortis.protocolvanish.bukkit.ProtocolVanish;
29-
import com.azortis.protocolvanish.bukkit.command.subcommands.*;
30-
import com.azortis.protocolvanish.bukkit.settings.old.wrappers.CommandSettingsWrapper;
31-
import org.bukkit.Location;
26+
import com.azortis.protocolvanish.common.VanishPlayer;
3227
import org.bukkit.command.CommandSender;
3328
import org.bukkit.command.ConsoleCommandSender;
3429
import org.bukkit.entity.Player;
35-
import org.bukkit.util.StringUtil;
3630

37-
import java.util.ArrayList;
38-
import java.util.Collection;
39-
import java.util.List;
40-
41-
public class VanishCommand implements ICommandExecutor, ITabCompleter {
31+
public class VanishCommand implements ICommandExecutor {
4232

4333
private final ProtocolVanish plugin;
44-
private Collection<String> enabledSubCommands = new ArrayList<>();
4534

46-
public VanishCommand(ProtocolVanish plugin) {
35+
public VanishCommand(ProtocolVanish plugin){
4736
this.plugin = plugin;
48-
plugin.getLogger().info("Loading command...");
49-
CommandSettingsWrapper commandSettings = plugin.getSettingsManager().getCommandSettings();
37+
CommandSettings commandSettings = plugin.getSettingsManager().getSettings().getCommandSettings();
5038
Command command = new CommandBuilder()
5139
.setName(commandSettings.getName())
5240
.setDescription(commandSettings.getDescription())
5341
.setUsage(commandSettings.getUsage())
5442
.addAliases(commandSettings.getAliases())
43+
.setPermission("protocolvanish.use")
5544
.setPlugin(plugin)
56-
.setExecutor(this)
57-
.setTabCompleter(this)
58-
.addSubCommands(
59-
new SubCommandBuilder()
60-
.setName(commandSettings.getSubCommandName("toggleNightVision"))
61-
.setExecutor(new ToggleNightVisionSub(plugin))
62-
.addAliases(commandSettings.getSubCommandAliases("toggleNightVision")),
63-
new SubCommandBuilder()
64-
.setName(commandSettings.getSubCommandName("toggleDamage"))
65-
.setExecutor(new ToggleDamageSub(plugin))
66-
.addAliases(commandSettings.getSubCommandAliases("toggleDamage")),
67-
new SubCommandBuilder()
68-
.setName(commandSettings.getSubCommandName("toggleHunger"))
69-
.setExecutor(new ToggleHungerSub(plugin))
70-
.addAliases(commandSettings.getSubCommandAliases("toggleHunger")),
71-
new SubCommandBuilder()
72-
.setName(commandSettings.getSubCommandName("toggleCreatureTarget"))
73-
.setExecutor(new ToggleCreatureTargetSub(plugin))
74-
.addAliases(commandSettings.getSubCommandAliases("toggleCreatureTarget")),
75-
new SubCommandBuilder()
76-
.setName(commandSettings.getSubCommandName("toggleItemPickup"))
77-
.setExecutor(new ToggleItemPickupSub(plugin))
78-
.addAliases(commandSettings.getSubCommandAliases("toggleItemPickup"))
79-
).build();
80-
CommandInjector.injectCommand("protocolvanish", command, false);
81-
String[] subCommands = new String[]{"toggleNightVision", "toggleDamage", "toggleHunger", "toggleCreatureTarget", "toggleItemPickup"};
82-
for (String subCommand : subCommands) {
83-
if (commandSettings.isSubCommandEnabled(subCommand)) this.enabledSubCommands.add(subCommand);
84-
}
45+
.setExecutor(this).build();
46+
CommandInjector.injectCommand("protocolvanish", command, true);
8547
}
8648

8749
@Override
@@ -93,66 +55,24 @@ public boolean onCommand(CommandSender commandSender, Command command, String la
9355
Player player = (Player) commandSender;
9456
if (plugin.getPermissionManager().hasPermissionToVanish(player)) {
9557
VanishPlayer vanishPlayer = plugin.getVanishPlayer(player.getUniqueId());
96-
if (vanishPlayer == null) vanishPlayer = plugin.createVanishPlayer(player);
97-
if(args.length > 0){
98-
plugin.sendPlayerMessage(player, player,"invalidUsage");
58+
if (vanishPlayer == null) return false;
59+
if (args.length > 0) {
60+
plugin.sendPlayerMessage(player, player, "invalidUsage", null);
9961
return false;
10062
}
10163
if (vanishPlayer.isVanished()) {
10264
plugin.getVisibilityManager().setVanished(player.getUniqueId(), false);
103-
plugin.sendPlayerMessage(player, player,"onReappear");
65+
plugin.sendPlayerMessage(player, player, "onReappear", null);
10466
} else {
10567
plugin.getVisibilityManager().setVanished(player.getUniqueId(), true);
106-
plugin.sendPlayerMessage(player, player,"onVanish");
68+
plugin.sendPlayerMessage(player, player, "onVanish", null);
10769
}
10870
return true;
10971
} else {
110-
plugin.sendPlayerMessage(player, player, "noPermission");
72+
plugin.sendPlayerMessage(player, player, "noPermission", null);
11173
return false;
11274
}
11375
}
11476
return false;
11577
}
116-
117-
@Override
118-
public List<String> onTabComplete(CommandSender commandSender, Command command, String label, String[] args, Location location) {
119-
if(!(commandSender instanceof Player))return null;
120-
Player player = (Player)commandSender;
121-
if(args.length < 2 && plugin.getPermissionManager().hasPermissionToVanish(player)){
122-
List<String> suggestions = new ArrayList<>();
123-
for (String subCommand : this.enabledSubCommands){
124-
switch (subCommand){
125-
case "toggleNightVision":
126-
addSuggestions(subCommand, PermissionManager.Permission.CHANGE_NIGHT_VISION, player, suggestions);
127-
break;
128-
case "toggleDamage":
129-
addSuggestions(subCommand, PermissionManager.Permission.CHANGE_DAMAGE, player, suggestions);
130-
break;
131-
case "toggleHunger":
132-
addSuggestions(subCommand, PermissionManager.Permission.CHANGE_HUNGER, player, suggestions);
133-
break;
134-
case "toggleCreatureTarget":
135-
addSuggestions(subCommand, PermissionManager.Permission.CHANGE_CREATURE_TARGET, player, suggestions);
136-
break;
137-
case "toggleItemPickup":
138-
addSuggestions(subCommand, PermissionManager.Permission.CHANGE_ITEM_PICKUP, player, suggestions);
139-
break;
140-
}
141-
}
142-
return StringUtil.copyPartialMatches(args[0], suggestions, new ArrayList<>());
143-
}
144-
return null;
145-
}
146-
147-
private void addSuggestions(String subCommand, PermissionManager.Permission permission, Player player, List<String> suggestionList){
148-
if(plugin.getPermissionManager().hasPermission(player, permission)){
149-
suggestionList.add(plugin.getSettingsManager().getCommandSettings().getSubCommandName(subCommand));
150-
}
151-
}
152-
153-
public void setEnabled(String subCommand, boolean enabled) {
154-
if (enabled && !enabledSubCommands.contains(subCommand)) enabledSubCommands.add(subCommand);
155-
else if (!enabled) enabledSubCommands.remove(subCommand);
156-
}
157-
15878
}

src/main/java/com/azortis/protocolvanish/bukkit/settings/SettingsManager.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.azortis.azortislib.utils.FileUtils;
2222
import com.azortis.protocolvanish.bukkit.ProtocolVanish;
23+
import com.azortis.protocolvanish.common.settings.ServerId;
2324
import com.google.gson.Gson;
2425
import com.google.gson.GsonBuilder;
2526

@@ -29,29 +30,44 @@
2930
import java.io.IOException;
3031
import java.nio.file.Files;
3132
import java.nio.file.StandardOpenOption;
33+
import java.util.UUID;
3234

3335
@SuppressWarnings("all")
3436
public class SettingsManager {
3537

3638
private final Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
3739

3840
private Settings settings;
39-
private File settingsFile;
41+
private final File settingsFile;
4042

4143
private Messages messages;
42-
private File messagesFile;
44+
private final File messagesFile;
45+
46+
private ServerId serverId;
47+
private final File serverIdFile;
4348

4449
public SettingsManager(ProtocolVanish plugin){
4550
if(!plugin.getDataFolder().exists())plugin.getDataFolder().mkdir();
4651
settingsFile = new File(plugin.getDataFolder(), "settings.json");
4752
if(!settingsFile.exists()) FileUtils.copy(plugin.getResource("settings.json"), settingsFile);
4853
messagesFile = new File(plugin.getDataFolder(), "messages.json");
4954
if(!messagesFile.exists()) FileUtils.copy(plugin.getResource("messages.json"), messagesFile);
55+
serverIdFile = new File(plugin.getDataFolder(), "serverId.json");
56+
if(!serverIdFile.exists()) FileUtils.copy(plugin.getResource("serverId.json"), serverIdFile);
5057
try{
5158
settings = gson.fromJson(new FileReader(settingsFile), Settings.class);
5259
messages = gson.fromJson(new FileReader(messagesFile), Messages.class);
60+
serverId = gson.fromJson(new FileReader(serverIdFile), ServerId.class);
61+
if(serverId.getId() == null){
62+
serverId.setId(UUID.randomUUID().toString());
63+
final String json = gson.toJson(serverId);
64+
serverIdFile.delete();
65+
Files.write(serverIdFile.toPath(), json.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.WRITE);
66+
}
5367
}catch (FileNotFoundException ex){
5468
ex.printStackTrace();
69+
} catch (IOException ex) {
70+
ex.printStackTrace();
5571
}
5672
if(!plugin.getPluginVersion().getSettingsFileVersion().equals(settings.getFileVersion())){
5773
plugin.getLogger().severe("You're settingsfile is out of date! Please update otherwise it will break!");
@@ -113,4 +129,8 @@ public void reloadMessages(){
113129
}
114130
}
115131

132+
public ServerId getServerId() {
133+
return serverId;
134+
}
135+
116136
}

src/main/java/com/azortis/protocolvanish/bungee/BungeeMessagingService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.azortis.protocolvanish.common.messaging.MessagingService;
2222
import com.azortis.protocolvanish.common.messaging.MessagingSettings;
23+
import com.azortis.protocolvanish.common.messaging.message.LoadMessage;
2324
import com.azortis.protocolvanish.common.messaging.message.Message;
2425
import com.azortis.protocolvanish.common.messaging.message.UnloadMessage;
2526
import com.azortis.protocolvanish.common.messaging.message.VanishMessage;
@@ -81,11 +82,16 @@ public synchronized void consumeMessage(String message) {
8182
}else{
8283
plugin.getVanishedPlayers().remove(playerUUID);
8384
}
85+
} else if(message.startsWith("boot")){
86+
UUID serverId = UUID.fromString(message.split(" ")[1]);
87+
for (UUID playerUUID : plugin.getLoadedPlayers()){
88+
plugin.getProxy().getScheduler().runAsync(plugin, ()-> postMessage(new LoadMessage(playerUUID, serverId)));
89+
}
8490
}
8591
}
8692

8793
@Override
88-
public void postMessage(Message message) {
94+
public synchronized void postMessage(Message message) {
8995
plugin.getProxy().getScheduler().runAsync(plugin, () -> provider.postMessage(message));
9096
}
9197

src/main/java/com/azortis/protocolvanish/bungee/ProtocolVanishProxy.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public final class ProtocolVanishProxy extends Plugin {
4242
private PermissionManager permissionManager;
4343

4444
private final transient Collection<UUID> vanishedPlayers = new ArrayList<>();
45+
private final transient Collection<UUID> loadedPlayers = new ArrayList<>();
4546

4647
@Override
4748
public void onEnable() {
@@ -89,15 +90,20 @@ public DatabaseManager getDatabaseManager() {
8990
return databaseManager;
9091
}
9192

92-
public Collection<UUID> getVanishedPlayers(){
93-
return vanishedPlayers;
94-
}
95-
9693
public BungeeMessagingService getMessagingService() {
9794
return messagingService;
9895
}
9996

10097
public PermissionManager getPermissionManager() {
10198
return permissionManager;
10299
}
100+
101+
public Collection<UUID> getVanishedPlayers(){
102+
return vanishedPlayers;
103+
}
104+
105+
public Collection<UUID> getLoadedPlayers() {
106+
return loadedPlayers;
107+
}
108+
103109
}

src/main/java/com/azortis/protocolvanish/bungee/listeners/PlayerDisconnectListener.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public PlayerDisconnectListener(ProtocolVanishProxy plugin){
3838
public void onPlayerDisconnect(PlayerDisconnectEvent event){
3939
ProxiedPlayer player = event.getPlayer();
4040
if(plugin.getPermissionManager().hasPermissionToVanish(player)){
41+
plugin.getLoadedPlayers().remove(player.getUniqueId());
4142
plugin.getProxy().getScheduler().runAsync(plugin, ()-> plugin.getMessagingService().postMessage(new UnloadMessage(player.getUniqueId())));
4243
}
4344
}

src/main/java/com/azortis/protocolvanish/bungee/listeners/PostLoginListener.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
package com.azortis.protocolvanish.bungee.listeners;
2020

2121
import com.azortis.protocolvanish.bungee.ProtocolVanishProxy;
22+
import com.azortis.protocolvanish.common.PlayerSettings;
23+
import com.azortis.protocolvanish.common.VanishPlayer;
2224
import com.azortis.protocolvanish.common.messaging.message.LoadMessage;
2325
import com.azortis.protocolvanish.common.messaging.message.UnloadMessage;
2426
import com.azortis.protocolvanish.common.messaging.message.VanishMessage;
@@ -31,23 +33,28 @@ public class PostLoginListener implements Listener {
3133

3234
private final ProtocolVanishProxy plugin;
3335

34-
public PostLoginListener(ProtocolVanishProxy plugin){
36+
public PostLoginListener(ProtocolVanishProxy plugin) {
3537
this.plugin = plugin;
3638
plugin.getProxy().getPluginManager().registerListener(plugin, this);
3739
}
3840

3941
@EventHandler
40-
public void onPostLogin(PostLoginEvent event){
42+
public void onPostLogin(PostLoginEvent event) {
4143
ProxiedPlayer player = event.getPlayer();
42-
if(plugin.getVanishedPlayers().contains(player.getUniqueId())){
43-
if(plugin.getPermissionManager().hasPermissionToVanish(player)){
44-
plugin.getProxy().getScheduler().runAsync(plugin, ()-> plugin.getMessagingService().postMessage(new LoadMessage(player.getUniqueId())));
45-
}else{
46-
plugin.getProxy().getScheduler().runAsync(plugin, () -> {
47-
plugin.getMessagingService().postMessage(new VanishMessage(player.getUniqueId(), false, true));
48-
plugin.getDatabaseManager().getDriver().deleteVanishPlayer(player.getUniqueId());
49-
});
50-
}
44+
if (plugin.getPermissionManager().hasPermissionToVanish(player)) {
45+
plugin.getLoadedPlayers().add(player.getUniqueId());
46+
plugin.getProxy().getScheduler().runAsync(plugin, () -> {
47+
if (plugin.getDatabaseManager().getDriver().getVanishPlayer(player.getUniqueId()) == null) {
48+
VanishPlayer vanishPlayer = new VanishPlayer(player.getUniqueId(), false, new PlayerSettings());
49+
plugin.getDatabaseManager().getDriver().createVanishPlayer(vanishPlayer);
50+
}
51+
plugin.getMessagingService().postMessage(new LoadMessage(player.getUniqueId(), null));
52+
});
53+
} else {
54+
plugin.getProxy().getScheduler().runAsync(plugin, () -> {
55+
plugin.getMessagingService().postMessage(new VanishMessage(player.getUniqueId(), false, true));
56+
plugin.getDatabaseManager().getDriver().deleteVanishPlayer(player.getUniqueId());
57+
});
5158
}
5259
}
5360

0 commit comments

Comments
 (0)