Skip to content
This repository was archived by the owner on Jan 20, 2024. It is now read-only.

Commit 583eee4

Browse files
committed
Plugin: add greeting
1 parent cbb9d2b commit 583eee4

File tree

16 files changed

+221
-27
lines changed

16 files changed

+221
-27
lines changed

src/main/java/net/flectone/chat/component/FImageComponent.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ public class FImageComponent extends FComponent {
1818

1919
private String text;
2020

21+
private String convertedImage;
22+
2123
public FImageComponent(@NotNull String imageUrl) {
2224
try {
2325
this.isCorrect = convertImageUrl(imageUrl);
26+
addOpenURL(imageUrl);
2427
} catch (Exception ignored) {}
2528
}
2629

@@ -89,8 +92,8 @@ public boolean convertImageUrl(@NotNull String imageUrl) throws Exception {
8992
stringBuilder.append(translatedColor).append("\n");
9093
}
9194

92-
addOpenURL(imageUrl);
93-
addHoverText(stringBuilder.toString());
95+
convertedImage = stringBuilder.toString();
96+
addHoverText(convertedImage);
9497

9598
return true;
9699
}

src/main/java/net/flectone/chat/database/sqlite/Database.java

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ public void init() {
117117
"`enable_advancement` INTEGER, " +
118118
"`enable_death` INTEGER, " +
119119
"`enable_join` INTEGER, " +
120+
"`enable_greeting` INTEGER, " +
120121
"`enable_quit` INTEGER, " +
121122
"`enable_auto_message` INTEGER, " +
122123
"`enable_command_me` INTEGER, " +
@@ -148,6 +149,10 @@ public void init() {
148149
migrate420();
149150
}
150151

152+
if (FlectoneChat.getPlugin().getFileManager().isLess450()) {
153+
migrate450();
154+
}
155+
151156
} catch (SQLException e) {
152157
e.printStackTrace();
153158
}
@@ -164,6 +169,17 @@ public void migrate420() {
164169
}
165170
}
166171

172+
public void migrate450() {
173+
try (Connection conn = getConnection()) {
174+
Statement statement = conn.createStatement();
175+
176+
addColumn(statement, "settings", "enable_greeting", "INTEGER");
177+
178+
} catch (SQLException ex) {
179+
FlectoneChat.warning("Couldn't execute MySQL statement: " + ex);
180+
}
181+
}
182+
167183
private void addColumn(@NotNull Statement statement, @NotNull String table, @NotNull String column, @NotNull String type) throws SQLException {
168184
statement.executeUpdate("ALTER TABLE " + table + " ADD COLUMN " + column + " " + type);
169185
}
@@ -394,6 +410,7 @@ public void getSettings(@NotNull FPlayer fPlayer) {
394410
getSettingInt(playerResult, Settings.Type.ADVANCEMENT, settings);
395411
getSettingInt(playerResult, Settings.Type.DEATH, settings);
396412
getSettingInt(playerResult, Settings.Type.JOIN, settings);
413+
getSettingInt(playerResult, Settings.Type.GREETING, settings);
397414
getSettingInt(playerResult, Settings.Type.QUIT, settings);
398415
getSettingInt(playerResult, Settings.Type.AUTO_MESSAGE, settings);
399416
getSettingInt(playerResult, Settings.Type.COMMAND_ME, settings);
@@ -600,6 +617,7 @@ public void updateFPlayer(@NotNull String table, @NotNull Object playerInfo) {
600617
"enable_advancement=?," +
601618
"enable_death=?," +
602619
"enable_join=?," +
620+
"enable_greeting=?," +
603621
"enable_quit=?," +
604622
"enable_command_me=?," +
605623
"enable_command_try=?," +
@@ -627,6 +645,7 @@ public void updateFPlayer(@NotNull String table, @NotNull Object playerInfo) {
627645
"enable_advancement," +
628646
"enable_death," +
629647
"enable_join," +
648+
"enable_greeting," +
630649
"enable_quit," +
631650
"enable_command_me," +
632651
"enable_command_try," +
@@ -659,22 +678,23 @@ private void setSettingsForStatement(@NotNull String uuid, @NotNull Settings set
659678
preparedStatement.setString(1, settings.getValue(Settings.Type.ADVANCEMENT));
660679
preparedStatement.setString(2, settings.getValue(Settings.Type.DEATH));
661680
preparedStatement.setString(3, settings.getValue(Settings.Type.JOIN));
662-
preparedStatement.setString(4, settings.getValue(Settings.Type.QUIT));
663-
preparedStatement.setString(5, settings.getValue(Settings.Type.COMMAND_ME));
664-
preparedStatement.setString(6, settings.getValue(Settings.Type.COMMAND_TRY));
665-
preparedStatement.setString(7, settings.getValue(Settings.Type.COMMAND_DICE));
666-
preparedStatement.setString(8, settings.getValue(Settings.Type.COMMAND_BALL));
667-
preparedStatement.setString(9, settings.getValue(Settings.Type.COMMAND_BAN));
668-
preparedStatement.setString(10, settings.getValue(Settings.Type.COMMAND_MUTE));
669-
preparedStatement.setString(11, settings.getValue(Settings.Type.COMMAND_WARN));
670-
preparedStatement.setString(12, settings.getValue(Settings.Type.COMMAND_TELL));
671-
preparedStatement.setString(13, settings.getValue(Settings.Type.COMMAND_REPLY));
672-
preparedStatement.setString(14, settings.getValue(Settings.Type.COMMAND_MAIL));
673-
preparedStatement.setString(15, settings.getValue(Settings.Type.COMMAND_TICTACTOE));
674-
preparedStatement.setString(16, settings.getValue(Settings.Type.COMMAND_KICK));
675-
preparedStatement.setString(17, settings.getValue(Settings.Type.AUTO_MESSAGE));
676-
preparedStatement.setString(18, settings.getValue(Settings.Type.CHAT));
677-
preparedStatement.setString(19, uuid);
681+
preparedStatement.setString(4, settings.getValue(Settings.Type.GREETING));
682+
preparedStatement.setString(5, settings.getValue(Settings.Type.QUIT));
683+
preparedStatement.setString(6, settings.getValue(Settings.Type.COMMAND_ME));
684+
preparedStatement.setString(7, settings.getValue(Settings.Type.COMMAND_TRY));
685+
preparedStatement.setString(9, settings.getValue(Settings.Type.COMMAND_DICE));
686+
preparedStatement.setString(9, settings.getValue(Settings.Type.COMMAND_BALL));
687+
preparedStatement.setString(10, settings.getValue(Settings.Type.COMMAND_BAN));
688+
preparedStatement.setString(11, settings.getValue(Settings.Type.COMMAND_MUTE));
689+
preparedStatement.setString(12, settings.getValue(Settings.Type.COMMAND_WARN));
690+
preparedStatement.setString(13, settings.getValue(Settings.Type.COMMAND_TELL));
691+
preparedStatement.setString(14, settings.getValue(Settings.Type.COMMAND_REPLY));
692+
preparedStatement.setString(15, settings.getValue(Settings.Type.COMMAND_MAIL));
693+
preparedStatement.setString(16, settings.getValue(Settings.Type.COMMAND_TICTACTOE));
694+
preparedStatement.setString(17, settings.getValue(Settings.Type.COMMAND_KICK));
695+
preparedStatement.setString(18, settings.getValue(Settings.Type.AUTO_MESSAGE));
696+
preparedStatement.setString(19, settings.getValue(Settings.Type.CHAT));
697+
preparedStatement.setString(20, uuid);
678698
}
679699

680700
public void deleteRow(@NotNull String table, @NotNull String column, @NotNull String filter) {

src/main/java/net/flectone/chat/manager/FileManager.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public class FileManager {
2929

3030
@Getter
3131
private boolean isLess420;
32+
@Getter
33+
private boolean isLess450;
3234

3335
@Getter
3436
private FConfiguration config;
@@ -112,6 +114,15 @@ public void checkMigration() {
112114
}
113115
}
114116

117+
if (compareVersions(fileVersion, "4.5.0") == -1) {
118+
List<String> chatSettingsDefault = commands.getStringList("chatsettings.change-list");
119+
chatSettingsDefault.add("greeting");
120+
commands.set("chatsettings.change-list", chatSettingsDefault);
121+
commands.save();
122+
123+
isLess450 = true;
124+
}
125+
115126
config.set("plugin.version", projectVersion);
116127
config.save();
117128

src/main/java/net/flectone/chat/model/player/Settings.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,29 @@ public void add(Type type, Object object) {
2424

2525
@Getter
2626
public enum Type {
27-
UUID("uuid"), COLORS("colors"), CHAT("chat"), STREAM("stream"), SPY("spy"),
28-
ADVANCEMENT("enable_advancement"), DEATH("enable_death"), JOIN("enable_join"),
29-
QUIT("enable_quit"), AUTO_MESSAGE("enable_auto_message"), COMMAND_ME("enable_command_me"),
30-
COMMAND_TRY("enable_command_try"), COMMAND_DICE("enable_command_dice"), COMMAND_BALL("enable_command_ball"),
31-
COMMAND_BAN("enable_command_ban"), COMMAND_MUTE("enable_command_mute"), COMMAND_WARN("enable_command_warn"),
32-
COMMAND_TELL("enable_command_tell"), COMMAND_REPLY("enable_command_reply"), COMMAND_MAIL("enable_command_mail"),
33-
COMMAND_TICTACTOE("enable_command_tictactoe"), COMMAND_KICK("enable_command_kick"),
27+
UUID("uuid"),
28+
COLORS("colors"),
29+
CHAT("chat"),
30+
STREAM("stream"),
31+
SPY("spy"),
32+
ADVANCEMENT("enable_advancement"),
33+
DEATH("enable_death"),
34+
JOIN("enable_join"),
35+
GREETING("enable_greeting"),
36+
QUIT("enable_quit"),
37+
AUTO_MESSAGE("enable_auto_message"),
38+
COMMAND_ME("enable_command_me"),
39+
COMMAND_TRY("enable_command_try"),
40+
COMMAND_DICE("enable_command_dice"),
41+
COMMAND_BALL("enable_command_ball"),
42+
COMMAND_BAN("enable_command_ban"),
43+
COMMAND_MUTE("enable_command_mute"),
44+
COMMAND_WARN("enable_command_warn"),
45+
COMMAND_TELL("enable_command_tell"),
46+
COMMAND_REPLY("enable_command_reply"),
47+
COMMAND_MAIL("enable_command_mail"),
48+
COMMAND_TICTACTOE("enable_command_tictactoe"),
49+
COMMAND_KICK("enable_command_kick"),
3450
COMMAND_TRANSLATETO("enable_command_translateto");
3551

3652
private final String dbPath;

src/main/java/net/flectone/chat/module/serverMessage/ServerMessageModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import net.flectone.chat.module.FModule;
44
import net.flectone.chat.module.serverMessage.advancement.AdvancementModule;
55
import net.flectone.chat.module.serverMessage.death.DeathModule;
6+
import net.flectone.chat.module.serverMessage.greeting.GreetingModule;
67
import net.flectone.chat.module.serverMessage.join.JoinModule;
78
import net.flectone.chat.module.serverMessage.quit.QuitModule;
89

@@ -22,5 +23,6 @@ public void init() {
2223
new QuitModule(this, "quit");
2324
new AdvancementModule(this, "advancement");
2425
new DeathModule(this, "death");
26+
new GreetingModule(this, "greeting");
2527
}
2628
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package net.flectone.chat.module.serverMessage.greeting;
2+
3+
import net.flectone.chat.FlectoneChat;
4+
import net.flectone.chat.module.FListener;
5+
import net.flectone.chat.module.FModule;
6+
import org.bukkit.Bukkit;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.event.EventHandler;
9+
import org.bukkit.event.player.PlayerJoinEvent;
10+
import org.jetbrains.annotations.NotNull;
11+
12+
public class GreetingListener extends FListener {
13+
14+
public GreetingListener(FModule module) {
15+
super(module);
16+
init();
17+
}
18+
19+
@Override
20+
public void init() {
21+
registerEvents();
22+
}
23+
24+
@EventHandler
25+
public void playerJoinEvent(@NotNull PlayerJoinEvent event) {
26+
Player player = event.getPlayer();
27+
if (hasNoPermission(player)) return;
28+
29+
Bukkit.getScheduler().runTaskAsynchronously(FlectoneChat.getPlugin(), () ->
30+
((GreetingModule) getModule()).send(player));
31+
}
32+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package net.flectone.chat.module.serverMessage.greeting;
2+
3+
import net.flectone.chat.component.FImageComponent;
4+
import net.flectone.chat.model.player.FPlayer;
5+
import net.flectone.chat.model.player.Settings;
6+
import net.flectone.chat.module.FModule;
7+
import net.flectone.chat.util.MessageUtil;
8+
import net.flectone.chat.util.PlayerUtil;
9+
import org.bukkit.entity.Player;
10+
import org.jetbrains.annotations.NotNull;
11+
12+
import java.util.List;
13+
14+
public class GreetingModule extends FModule {
15+
16+
public GreetingModule(FModule module, String name) {
17+
super(module, name);
18+
init();
19+
}
20+
21+
@Override
22+
public void init() {
23+
if (!isEnabled()) return;
24+
register();
25+
26+
actionManager.add(new GreetingListener(this));
27+
}
28+
29+
public void send(@NotNull Player player) {
30+
if (!isEnabledFor(player)) return;
31+
32+
FPlayer fPlayer = playerManager.get(player);
33+
if (fPlayer == null) return;
34+
if (fPlayer.getSettings() == null) return;
35+
36+
String join = fPlayer.getSettings().getValue(Settings.Type.GREETING);
37+
boolean enabled = join == null || Integer.parseInt(join) != -1;
38+
if (!enabled) return;
39+
40+
String imageUrl = PlayerUtil.constructAvatarUrl(player);
41+
FImageComponent fImageComponent = new FImageComponent(imageUrl);
42+
String convertedImage = fImageComponent.getConvertedImage().substring(1);
43+
44+
List<String> messageList = locale.getVaultStringList(player, this + ".message");
45+
String message = String.join("\n", messageList);
46+
47+
for (String pixels : convertedImage.split("\n")) {
48+
message = message.replaceFirst("########", pixels);
49+
}
50+
51+
message = MessageUtil.formatAll(player, MessageUtil.formatPlayerString(player, message));
52+
player.sendMessage(message);
53+
54+
fPlayer.playSound(player, player, this.toString());
55+
}
56+
}

src/main/java/net/flectone/chat/util/PlayerUtil.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
public class PlayerUtil {
1919

20+
private static final String WEBSITE_AVATAR_URL = "https://cravatar.eu/avatar/<player>/8.png";
21+
2022
public static String getIP(Player player) {
2123
try {
2224
InetSocketAddress playerAddress = player.getAddress();
@@ -88,4 +90,9 @@ public static Collection<? extends Player> getPlayersWithFeature(@NotNull Collec
8890
.filter(player -> config.getVaultBoolean(player, path))
8991
.collect(Collectors.toList());
9092
}
93+
94+
@NotNull
95+
public static String constructAvatarUrl(@NotNull Player player) {
96+
return WEBSITE_AVATAR_URL.replace("<player>", player.getUniqueId().toString());
97+
}
9198
}

src/main/resources/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ default:
124124
first-time:
125125
enable: true
126126

127+
greeting:
128+
enable: true
129+
127130
quit:
128131
enable: true
129132

src/main/resources/plugin.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ permissions:
116116
default: true
117117
flectonechat.server-message.join:
118118
default: true
119+
flectonechat.server-message.greeting:
120+
default: true
119121
flectonechat.server-message.quit:
120122
default: true
121123
flectonechat.sounds:
@@ -158,6 +160,8 @@ permissions:
158160
default: true
159161
flectonechat.sounds.server-message.join:
160162
default: true
163+
flectonechat.sounds.server-message.greeting:
164+
default: true
161165
flectonechat.sounds.server-message.quit:
162166
default: true
163167
flectonechat.sounds.commands.spit:
@@ -262,6 +266,8 @@ permissions:
262266
default: true
263267
flectonechat.commands.chatsettings.join:
264268
default: true
269+
flectonechat.commands.chatsettings.greeting:
270+
default: true
265271
flectonechat.commands.chatsettings.quit:
266272
default: true
267273
flectonechat.commands.chatsettings.auto-message:

src/main/resources/settings/commands.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ chatsettings:
6262
- advancement
6363
- death
6464
- join
65+
- greeting
6566
- quit
6667
- auto-message
6768
- me

src/main/resources/settings/languages/en.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,19 @@ default:
106106
first-time:
107107
message: "#4eff52→ &&2<player> &&1has logged on to the server for the first time, let's welcome!"
108108

109+
greeting:
110+
message:
111+
- " "
112+
- "########"
113+
- "########"
114+
- "######## Hello <player>!"
115+
- "########"
116+
- "########"
117+
- "########"
118+
- "########"
119+
- "########"
120+
- " "
121+
109122
quit:
110123
message: "#ff4e4e← &&2<player>"
111124

@@ -255,6 +268,7 @@ default:
255268
advancement: "&&2Advancements"
256269
death: "&&2Deaths"
257270
join: "&&2Joins"
271+
greeting: "&&2Greeting"
258272
quit: "&&2Quits"
259273
auto-message: "&&2Auto-message"
260274
me: "&&2/me"
@@ -280,7 +294,7 @@ default:
280294
- "&&1════ Chat settings ════"
281295
- "&&1Chat types: <chat>"
282296
- "&&1------------------------"
283-
- "&&1Server messages: \n <advancement> \n <death> \n <join> \n <quit> \n <auto-message>"
297+
- "&&1Server messages: \n <advancement> \n <death> \n <join> \n <greeting> \n <quit> \n <auto-message>"
284298
- "&&1------------------------"
285299
- "&&1Command alerts: \n <me> \n <try> \n <dice> \n <ball> \n <kick> \n <ban> \n <mute> \n <warn> \n <tell> \n <reply> \n <mail> \n <tictactoe> \n <translateto>"
286300
- "&&1------------------------"

0 commit comments

Comments
 (0)