4
4
import me .illusion .skyblockcore .bungee .data .PlayerFinder ;
5
5
import me .illusion .skyblockcore .shared .data .IslandData ;
6
6
import me .illusion .skyblockcore .shared .packet .impl .proxytoinstance .PacketRequestIslandUnload ;
7
+ import net .md_5 .bungee .api .ChatColor ;
8
+ import net .md_5 .bungee .api .chat .TextComponent ;
7
9
import net .md_5 .bungee .api .config .ServerInfo ;
8
10
import net .md_5 .bungee .api .connection .ProxiedPlayer ;
11
+ import net .md_5 .bungee .api .connection .Server ;
9
12
import net .md_5 .bungee .api .event .PlayerDisconnectEvent ;
10
13
import net .md_5 .bungee .api .event .ServerConnectEvent ;
11
14
import net .md_5 .bungee .api .event .ServerSwitchEvent ;
@@ -26,9 +29,15 @@ public ServerMovementListener(SkyblockBungeePlugin main) {
26
29
@ EventHandler
27
30
public void onServerMove (PlayerDisconnectEvent event ) {
28
31
Set <String > ids = main .getPlayerFinder ().getSkyblockServerNames ();
29
- ServerInfo server = event .getPlayer ().getServer (). getInfo ();
32
+ Server server = event .getPlayer ().getServer ();
30
33
31
- String serverId = server .getName ();
34
+ if (server == null ) {
35
+ return ;
36
+ }
37
+
38
+ ServerInfo info = event .getPlayer ().getServer ().getInfo ();
39
+
40
+ String serverId = info .getName ();
32
41
33
42
if (!ids .contains (serverId )) {
34
43
return ;
@@ -52,24 +61,6 @@ private void unload(UUID playerId) {
52
61
});
53
62
}
54
63
55
- @ EventHandler
56
- private void onConnect (ServerConnectEvent event ) {
57
- ProxiedPlayer player = event .getPlayer ();
58
- PlayerFinder playerFinder = main .getPlayerFinder ();
59
-
60
- playerFinder .requestIslandServer (player .getUniqueId ()).whenComplete ((servername , thr ) -> {
61
- if (servername == null ) // Assign available server if no members are online
62
- servername = playerFinder .getAvailableServer ();
63
-
64
- if (servername == null ) // If no space found
65
- return ;
66
-
67
- ServerInfo targetServer = main .getProxy ().getServerInfo (servername );
68
-
69
- player .connect (targetServer );
70
- });
71
- }
72
-
73
64
@ EventHandler
74
65
public void onSwitch (ServerSwitchEvent event ) {
75
66
Set <String > ids = main .getPlayerFinder ().getSkyblockServerNames ();
@@ -88,7 +79,68 @@ public void onSwitch(ServerSwitchEvent event) {
88
79
if (!ids .contains (oldServerId ))
89
80
return ;
90
81
82
+
91
83
UUID playerId = event .getPlayer ().getUniqueId ();
92
84
unload (playerId );
93
85
}
94
- }
86
+
87
+ @ EventHandler
88
+ public void onConnect (ServerConnectEvent event ) {
89
+ Set <String > ids = main .getPlayerFinder ().getSkyblockServerNames ();
90
+ ServerInfo server = event .getTarget ();
91
+
92
+ String serverId = server .getName ();
93
+
94
+ if (!ids .contains (serverId ))
95
+ return ;
96
+
97
+ auth (event );
98
+ }
99
+
100
+ private void auth (ServerConnectEvent event ) {
101
+ PlayerFinder playerFinder = main .getPlayerFinder ();
102
+ ProxiedPlayer player = event .getPlayer ();
103
+ UUID playerId = player .getUniqueId ();
104
+ String serverId = event .getTarget ().getName ();
105
+
106
+ if (!playerFinder .isAuth (playerId )) {
107
+ System .out .println ("Player " + player .getName () + " is not authorized to enter Islands" );
108
+ event .setCancelled (true );
109
+ auth (player );
110
+ return ;
111
+ }
112
+
113
+ String authId = playerFinder .getAuthServer (playerId );
114
+
115
+ if (!authId .equals (serverId )) {
116
+ System .out .println ("[Housing] " + player .getName () + " is not on the correct server for their auth. Expected " + authId + " but got " + serverId );
117
+ event .setCancelled (true );
118
+ auth (player );
119
+ }
120
+
121
+ }
122
+
123
+ private void auth (ProxiedPlayer player ) {
124
+ PlayerFinder playerFinder = main .getPlayerFinder ();
125
+
126
+ System .out .println ("re-Authing " + player .getName ());
127
+
128
+ playerFinder .requestIslandServer (player .getUniqueId ()).whenComplete ((servername , thr ) -> {
129
+ System .out .println ("Requested Island server: " + servername );
130
+
131
+ if (servername == null ) {// If no space found
132
+ player .sendMessage (TextComponent .fromLegacyText (ChatColor .RED + "There are no available housing servers." ));
133
+ return ;
134
+ }
135
+
136
+ if (servername .equalsIgnoreCase ("NOT_AUTH" )) {
137
+ player .sendMessage (TextComponent .fromLegacyText (ChatColor .RED + "You are not authorized to enter housing." ));
138
+ return ;
139
+ }
140
+
141
+ playerFinder .authPlayer (player .getUniqueId (), servername );
142
+ ServerInfo targetServer = main .getProxy ().getServerInfo (servername );
143
+ player .connect (targetServer );
144
+ });
145
+ }
146
+ }
0 commit comments