31
31
import net .roxeez .advancement .display .BackgroundType ;
32
32
import net .roxeez .advancement .display .FrameType ;
33
33
import net .roxeez .advancement .trigger .TriggerType ;
34
+ import net .william278 .cloplib .listener .OperationListener ;
34
35
import net .william278 .desertwell .util .Version ;
35
36
import net .william278 .husktowns .advancement .Advancement ;
36
37
import net .william278 .husktowns .api .BukkitHuskTownsAPI ;
52
53
import net .william278 .husktowns .town .Invite ;
53
54
import net .william278 .husktowns .town .Town ;
54
55
import net .william278 .husktowns .user .BukkitUser ;
56
+ import net .william278 .husktowns .user .BukkitUserProvider ;
55
57
import net .william278 .husktowns .user .OnlineUser ;
56
58
import net .william278 .husktowns .user .Preferences ;
57
59
import net .william278 .husktowns .user .User ;
83
85
import java .io .File ;
84
86
import java .nio .file .Path ;
85
87
import java .util .*;
88
+ import java .util .concurrent .ConcurrentMap ;
86
89
import java .util .logging .Level ;
87
90
88
91
@ NoArgsConstructor
89
92
@ Getter
90
93
public class BukkitHuskTowns extends JavaPlugin implements HuskTowns , BukkitTask .Supplier ,
91
- PluginMessageListener , BukkitEventDispatcher {
92
-
94
+ BukkitUserProvider , PluginMessageListener , BukkitEventDispatcher {
93
95
94
96
private AudienceProvider audiences ;
95
97
private MorePaperLib paperLib ;
96
98
private AsynchronousScheduler asyncScheduler ;
97
99
private RegionalScheduler regionalScheduler ;
100
+ private OperationListener operationListener ;
98
101
private final Set <Town > towns = Sets .newConcurrentHashSet ();
99
102
private final Map <String , ClaimWorld > claimWorlds = Maps .newConcurrentMap ();
100
103
private final Map <UUID , Deque <Invite >> invites = Maps .newConcurrentMap ();
101
104
private final Map <UUID , Preferences > userPreferences = Maps .newConcurrentMap ();
102
105
private final Map <UUID , Visualizer > visualizers = Maps .newConcurrentMap ();
103
106
private final Map <String , List <User >> globalUserList = Maps .newConcurrentMap ();
107
+ private final ConcurrentMap <UUID , OnlineUser > onlineUserMap = Maps .newConcurrentMap ();
104
108
private final Validator validator = new Validator (this );
109
+
105
110
@ Setter
106
111
private boolean loaded = false ;
107
112
@ Setter
@@ -214,14 +219,16 @@ public void onEnable() {
214
219
this .registerCommands ();
215
220
216
221
// Register event listener
217
- new BukkitListener (this ).register ();
222
+ final BukkitListener listener = new BukkitListener (this );
223
+ this .operationListener = listener ;
224
+ listener .register ();
218
225
219
226
// Register API
220
227
BukkitHuskTownsAPI .register (this );
221
228
222
229
// Register metrics
223
230
initializeMetrics ();
224
- log (Level .INFO , "Enabled HuskTowns v" + getVersion ());
231
+ log (Level .INFO , "Enabled HuskTowns v" + getPluginVersion ());
225
232
checkForUpdates ();
226
233
}
227
234
@@ -232,7 +239,7 @@ public void onDisable() {
232
239
}
233
240
visualizers .values ().forEach (Visualizer ::cancel );
234
241
getMessageBroker ().ifPresent (Broker ::close );
235
- log (Level .INFO , "Disabled HuskTowns v" + getVersion ());
242
+ log (Level .INFO , "Disabled HuskTowns v" + getPluginVersion ());
236
243
}
237
244
238
245
@ Override
@@ -262,20 +269,37 @@ public Optional<Broker> getMessageBroker() {
262
269
return hookManager ;
263
270
}
264
271
272
+ @ Override
273
+ public Version getPluginVersion () {
274
+ return Version .fromString (getDescription ().getVersion ());
275
+ }
276
+
277
+ @ Override
278
+ @ NotNull
279
+ public String getServerType () {
280
+ return String .format ("%s/%s" , getServer ().getName (), getServer ().getVersion ());
281
+ }
282
+
283
+ @ Override
284
+ @ NotNull
285
+ public Version getMinecraftVersion () {
286
+ return Version .fromString (getServer ().getBukkitVersion ());
287
+ }
288
+
265
289
@ Override
266
290
@ NotNull
267
291
public List <World > getWorlds () {
268
292
return Bukkit .getWorlds ().stream ()
269
- .map (world -> World .of (
270
- world .getUID (), world .getName (),
271
- world .getEnvironment ().name ().toLowerCase ())
272
- ).toList ();
293
+ .map (world -> World .of (
294
+ world .getUID (), world .getName (),
295
+ world .getEnvironment ().name ().toLowerCase ())
296
+ ).toList ();
273
297
}
274
298
275
299
@ Override
276
- public void log (@ NotNull Level level , @ NotNull String message , @ NotNull Throwable ... throwable ) {
277
- if (throwable .length > 0 ) {
278
- getLogger ().log (level , message , throwable [0 ]);
300
+ public void log (@ NotNull Level level , @ NotNull String message , @ NotNull Throwable ... exceptions ) {
301
+ if (exceptions .length > 0 ) {
302
+ getLogger ().log (level , message , exceptions [0 ]);
279
303
return ;
280
304
}
281
305
getLogger ().log (level , message );
@@ -302,20 +326,6 @@ public void initializePluginChannels() {
302
326
getServer ().getMessenger ().registerOutgoingPluginChannel (this , PluginMessageBroker .BUNGEE_CHANNEL_ID );
303
327
}
304
328
305
- @ Override
306
- @ NotNull
307
- public Version getVersion () {
308
- return Version .fromString (getDescription ().getVersion (), "-" );
309
- }
310
-
311
- @ Override
312
- @ NotNull
313
- public List <? extends OnlineUser > getOnlineUsers () {
314
- return Bukkit .getOnlinePlayers ().stream ()
315
- .map (p -> BukkitUser .adapt (p , this ))
316
- .toList ();
317
- }
318
-
319
329
@ Override
320
330
public double getHighestYAt (double x , double z , @ NotNull World world ) {
321
331
final org .bukkit .World bukkitWorld = Bukkit .getWorld (world .getName ()) == null
@@ -339,7 +349,7 @@ public void dispatchCommand(@NotNull String command) {
339
349
public void onPluginMessageReceived (@ NotNull String channel , @ NotNull Player player , byte [] message ) {
340
350
if (broker != null && broker instanceof PluginMessageBroker pluginMessenger
341
351
&& getSettings ().getCrossServer ().getBrokerType () == Broker .Type .PLUGIN_MESSAGE ) {
342
- pluginMessenger .onReceive (channel , BukkitUser . adapt (player , this ), message );
352
+ pluginMessenger .onReceive (channel , getOnlineUser (player ), message );
343
353
}
344
354
}
345
355
@@ -488,4 +498,4 @@ public BukkitHuskTowns getPlugin() {
488
498
return this ;
489
499
}
490
500
491
- }
501
+ }
0 commit comments