Skip to content

Commit 4e39240

Browse files
author
Declyn
committed
v1.1: sort notes by id & add announceOnJoin
1 parent f7cffdb commit 4e39240

5 files changed

Lines changed: 64 additions & 26 deletions

File tree

pom.xml

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

77
<groupId>dev.declyn</groupId>
88
<artifactId>PlayerNotes</artifactId>
9-
<version>1.0-SNAPSHOT</version>
9+
<version>1.1-SNAPSHOT</version>
1010

1111
<properties>
1212
<maven.compiler.source>17</maven.compiler.source>

src/main/java/dev/declyn/playernotes/PlayerNotesPlugin.java

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,14 @@
44
import dev.declyn.playernotes.datastore.UserDataStore;
55
import dev.declyn.playernotes.datastore.impl.MongoDataStore;
66
import dev.declyn.playernotes.datastore.impl.SQLDataStore;
7-
import dev.declyn.playernotes.user.User;
8-
import me.lucko.helper.Events;
7+
import dev.declyn.playernotes.user.UserListener;
98
import me.lucko.helper.plugin.ExtendedJavaPlugin;
109
import me.lucko.helper.plugin.ap.Plugin;
11-
import org.bukkit.entity.Player;
12-
import org.bukkit.event.player.PlayerLoginEvent;
1310
import revxrsal.commands.bukkit.BukkitCommandHandler;
1411

1512
import java.util.Objects;
1613

17-
@Plugin(name = "PlayerNotes", version = "1.0", authors = "Declyn")
14+
@Plugin(name = "PlayerNotes", version = "1.1", authors = "Declyn")
1815
public class PlayerNotesPlugin extends ExtendedJavaPlugin {
1916

2017
private UserDataStore userDataStore;
@@ -30,30 +27,13 @@ protected void enable() {
3027
default -> throw new IllegalStateException("Data store not recognized, implemented data stores: 'flatfile', 'sql' or 'mongo'");
3128
};
3229

33-
Events.subscribe(PlayerLoginEvent.class).handler(event -> {
34-
var player = event.getPlayer();
35-
36-
userDataStore.getUser(player.getUniqueId()).thenAccept(user -> {
37-
if (user != null) {
38-
if (!user.getUsername().equals(player.getName())) {
39-
user.setUsername(player.getName());
40-
userDataStore.save(user);
41-
}
42-
return;
43-
}
44-
45-
user = new User(player.getUniqueId(), player.getName());
46-
userDataStore.save(user);
47-
});
48-
});
30+
new UserListener(this);
4931

5032
var commandHandler = BukkitCommandHandler.create(this);
5133

5234
commandHandler.registerDependency(PlayerNotesPlugin.class, this);
5335
commandHandler.registerDependency(UserDataStore.class, userDataStore);
5436

55-
commandHandler.getAutoCompleter().registerSuggestion("username", (list, commandActor, executableCommand) -> getServer().getOnlinePlayers().stream().map(Player::getName).toList());
56-
5737
commandHandler.register(new NoteCommands());
5838
}
5939

src/main/java/dev/declyn/playernotes/commands/NoteCommands.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import revxrsal.commands.bukkit.BukkitCommandActor;
1111
import revxrsal.commands.bukkit.annotation.CommandPermission;
1212

13+
import java.util.ArrayList;
14+
import java.util.Comparator;
1315
import java.util.HashMap;
1416
import java.util.UUID;
1517

@@ -76,7 +78,10 @@ public void view(BukkitCommandActor actor, String username, @Optional Integer id
7678
authorNames.put(note.getAuthor(), userDataStore.getUser(note.getAuthor()).join().getUsername());
7779
}
7880

79-
user.getNotes().forEach(note -> displayNote(actor, note, authorNames.get(note.getAuthor())));
81+
var notes = new ArrayList<>(user.getNotes());
82+
notes.sort(Comparator.comparingInt(Note::getId));
83+
84+
notes.forEach(note -> displayNote(actor, note, authorNames.get(note.getAuthor())));
8085
});
8186
});
8287
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package dev.declyn.playernotes.user;
2+
3+
import dev.declyn.playernotes.PlayerNotesPlugin;
4+
import me.lucko.helper.Events;
5+
import me.lucko.helper.Schedulers;
6+
import me.lucko.helper.utils.Players;
7+
import org.bukkit.event.player.PlayerJoinEvent;
8+
import org.bukkit.event.player.PlayerLoginEvent;
9+
10+
public class UserListener {
11+
12+
private final PlayerNotesPlugin plugin;
13+
14+
public UserListener(PlayerNotesPlugin plugin) {
15+
this.plugin = plugin;
16+
17+
Events.subscribe(PlayerLoginEvent.class).handler(event -> {
18+
var player = event.getPlayer();
19+
20+
plugin.getUserDataStore().getUser(player.getUniqueId()).thenAccept(user -> {
21+
if (user != null) {
22+
if (!user.getUsername().equals(player.getName())) {
23+
user.setUsername(player.getName());
24+
plugin.getUserDataStore().save(user);
25+
}
26+
return;
27+
}
28+
29+
user = new User(player.getUniqueId(), player.getName());
30+
plugin.getUserDataStore().save(user);
31+
});
32+
});
33+
34+
if (plugin.getConfig().getBoolean("announceNotesOnJoin")) {
35+
Events.subscribe(PlayerJoinEvent.class).handler(event -> plugin.getUserDataStore().getUser(event.getPlayer().getUniqueId()).thenAccept(user -> {
36+
if (user == null || user.getNotes().isEmpty()) {
37+
return;
38+
}
39+
40+
Players.forEach(player -> {
41+
if (!player.hasPermission("notes.view")) {
42+
return;
43+
}
44+
45+
Schedulers.sync().run(() -> player.chat("/notes view " + player.getName()));
46+
});
47+
}));
48+
}
49+
}
50+
51+
}

src/main/resources/config.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,6 @@ command:
3838
remove: "&eRemoved note %id% from %player%."
3939
empty: "&c%player% does not have any notes to display."
4040
noteNotFound: "&cNo note with id %id% found."
41-
userNotFound: "&cNo user with username %player% found."
41+
userNotFound: "&cNo user with username %player% found."
42+
43+
announceNotesOnJoin: false

0 commit comments

Comments
 (0)