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

Commit

Permalink
Plugin: add greeting
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFaser committed Dec 22, 2023
1 parent cbb9d2b commit 583eee4
Show file tree
Hide file tree
Showing 16 changed files with 221 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ public class FImageComponent extends FComponent {

private String text;

private String convertedImage;

public FImageComponent(@NotNull String imageUrl) {
try {
this.isCorrect = convertImageUrl(imageUrl);
addOpenURL(imageUrl);
} catch (Exception ignored) {}
}

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

addOpenURL(imageUrl);
addHoverText(stringBuilder.toString());
convertedImage = stringBuilder.toString();
addHoverText(convertedImage);

return true;
}
Expand Down
52 changes: 36 additions & 16 deletions src/main/java/net/flectone/chat/database/sqlite/Database.java
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ public void init() {
"`enable_advancement` INTEGER, " +
"`enable_death` INTEGER, " +
"`enable_join` INTEGER, " +
"`enable_greeting` INTEGER, " +
"`enable_quit` INTEGER, " +
"`enable_auto_message` INTEGER, " +
"`enable_command_me` INTEGER, " +
Expand Down Expand Up @@ -148,6 +149,10 @@ public void init() {
migrate420();
}

if (FlectoneChat.getPlugin().getFileManager().isLess450()) {
migrate450();
}

} catch (SQLException e) {
e.printStackTrace();
}
Expand All @@ -164,6 +169,17 @@ public void migrate420() {
}
}

public void migrate450() {
try (Connection conn = getConnection()) {
Statement statement = conn.createStatement();

addColumn(statement, "settings", "enable_greeting", "INTEGER");

} catch (SQLException ex) {
FlectoneChat.warning("Couldn't execute MySQL statement: " + ex);
}
}

private void addColumn(@NotNull Statement statement, @NotNull String table, @NotNull String column, @NotNull String type) throws SQLException {
statement.executeUpdate("ALTER TABLE " + table + " ADD COLUMN " + column + " " + type);
}
Expand Down Expand Up @@ -394,6 +410,7 @@ public void getSettings(@NotNull FPlayer fPlayer) {
getSettingInt(playerResult, Settings.Type.ADVANCEMENT, settings);
getSettingInt(playerResult, Settings.Type.DEATH, settings);
getSettingInt(playerResult, Settings.Type.JOIN, settings);
getSettingInt(playerResult, Settings.Type.GREETING, settings);
getSettingInt(playerResult, Settings.Type.QUIT, settings);
getSettingInt(playerResult, Settings.Type.AUTO_MESSAGE, settings);
getSettingInt(playerResult, Settings.Type.COMMAND_ME, settings);
Expand Down Expand Up @@ -600,6 +617,7 @@ public void updateFPlayer(@NotNull String table, @NotNull Object playerInfo) {
"enable_advancement=?," +
"enable_death=?," +
"enable_join=?," +
"enable_greeting=?," +
"enable_quit=?," +
"enable_command_me=?," +
"enable_command_try=?," +
Expand Down Expand Up @@ -627,6 +645,7 @@ public void updateFPlayer(@NotNull String table, @NotNull Object playerInfo) {
"enable_advancement," +
"enable_death," +
"enable_join," +
"enable_greeting," +
"enable_quit," +
"enable_command_me," +
"enable_command_try," +
Expand Down Expand Up @@ -659,22 +678,23 @@ private void setSettingsForStatement(@NotNull String uuid, @NotNull Settings set
preparedStatement.setString(1, settings.getValue(Settings.Type.ADVANCEMENT));
preparedStatement.setString(2, settings.getValue(Settings.Type.DEATH));
preparedStatement.setString(3, settings.getValue(Settings.Type.JOIN));
preparedStatement.setString(4, settings.getValue(Settings.Type.QUIT));
preparedStatement.setString(5, settings.getValue(Settings.Type.COMMAND_ME));
preparedStatement.setString(6, settings.getValue(Settings.Type.COMMAND_TRY));
preparedStatement.setString(7, settings.getValue(Settings.Type.COMMAND_DICE));
preparedStatement.setString(8, settings.getValue(Settings.Type.COMMAND_BALL));
preparedStatement.setString(9, settings.getValue(Settings.Type.COMMAND_BAN));
preparedStatement.setString(10, settings.getValue(Settings.Type.COMMAND_MUTE));
preparedStatement.setString(11, settings.getValue(Settings.Type.COMMAND_WARN));
preparedStatement.setString(12, settings.getValue(Settings.Type.COMMAND_TELL));
preparedStatement.setString(13, settings.getValue(Settings.Type.COMMAND_REPLY));
preparedStatement.setString(14, settings.getValue(Settings.Type.COMMAND_MAIL));
preparedStatement.setString(15, settings.getValue(Settings.Type.COMMAND_TICTACTOE));
preparedStatement.setString(16, settings.getValue(Settings.Type.COMMAND_KICK));
preparedStatement.setString(17, settings.getValue(Settings.Type.AUTO_MESSAGE));
preparedStatement.setString(18, settings.getValue(Settings.Type.CHAT));
preparedStatement.setString(19, uuid);
preparedStatement.setString(4, settings.getValue(Settings.Type.GREETING));
preparedStatement.setString(5, settings.getValue(Settings.Type.QUIT));
preparedStatement.setString(6, settings.getValue(Settings.Type.COMMAND_ME));
preparedStatement.setString(7, settings.getValue(Settings.Type.COMMAND_TRY));
preparedStatement.setString(9, settings.getValue(Settings.Type.COMMAND_DICE));
preparedStatement.setString(9, settings.getValue(Settings.Type.COMMAND_BALL));
preparedStatement.setString(10, settings.getValue(Settings.Type.COMMAND_BAN));
preparedStatement.setString(11, settings.getValue(Settings.Type.COMMAND_MUTE));
preparedStatement.setString(12, settings.getValue(Settings.Type.COMMAND_WARN));
preparedStatement.setString(13, settings.getValue(Settings.Type.COMMAND_TELL));
preparedStatement.setString(14, settings.getValue(Settings.Type.COMMAND_REPLY));
preparedStatement.setString(15, settings.getValue(Settings.Type.COMMAND_MAIL));
preparedStatement.setString(16, settings.getValue(Settings.Type.COMMAND_TICTACTOE));
preparedStatement.setString(17, settings.getValue(Settings.Type.COMMAND_KICK));
preparedStatement.setString(18, settings.getValue(Settings.Type.AUTO_MESSAGE));
preparedStatement.setString(19, settings.getValue(Settings.Type.CHAT));
preparedStatement.setString(20, uuid);
}

public void deleteRow(@NotNull String table, @NotNull String column, @NotNull String filter) {
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/net/flectone/chat/manager/FileManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ public class FileManager {

@Getter
private boolean isLess420;
@Getter
private boolean isLess450;

@Getter
private FConfiguration config;
Expand Down Expand Up @@ -112,6 +114,15 @@ public void checkMigration() {
}
}

if (compareVersions(fileVersion, "4.5.0") == -1) {
List<String> chatSettingsDefault = commands.getStringList("chatsettings.change-list");
chatSettingsDefault.add("greeting");
commands.set("chatsettings.change-list", chatSettingsDefault);
commands.save();

isLess450 = true;
}

config.set("plugin.version", projectVersion);
config.save();

Expand Down
30 changes: 23 additions & 7 deletions src/main/java/net/flectone/chat/model/player/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,29 @@ public void add(Type type, Object object) {

@Getter
public enum Type {
UUID("uuid"), COLORS("colors"), CHAT("chat"), STREAM("stream"), SPY("spy"),
ADVANCEMENT("enable_advancement"), DEATH("enable_death"), JOIN("enable_join"),
QUIT("enable_quit"), AUTO_MESSAGE("enable_auto_message"), COMMAND_ME("enable_command_me"),
COMMAND_TRY("enable_command_try"), COMMAND_DICE("enable_command_dice"), COMMAND_BALL("enable_command_ball"),
COMMAND_BAN("enable_command_ban"), COMMAND_MUTE("enable_command_mute"), COMMAND_WARN("enable_command_warn"),
COMMAND_TELL("enable_command_tell"), COMMAND_REPLY("enable_command_reply"), COMMAND_MAIL("enable_command_mail"),
COMMAND_TICTACTOE("enable_command_tictactoe"), COMMAND_KICK("enable_command_kick"),
UUID("uuid"),
COLORS("colors"),
CHAT("chat"),
STREAM("stream"),
SPY("spy"),
ADVANCEMENT("enable_advancement"),
DEATH("enable_death"),
JOIN("enable_join"),
GREETING("enable_greeting"),
QUIT("enable_quit"),
AUTO_MESSAGE("enable_auto_message"),
COMMAND_ME("enable_command_me"),
COMMAND_TRY("enable_command_try"),
COMMAND_DICE("enable_command_dice"),
COMMAND_BALL("enable_command_ball"),
COMMAND_BAN("enable_command_ban"),
COMMAND_MUTE("enable_command_mute"),
COMMAND_WARN("enable_command_warn"),
COMMAND_TELL("enable_command_tell"),
COMMAND_REPLY("enable_command_reply"),
COMMAND_MAIL("enable_command_mail"),
COMMAND_TICTACTOE("enable_command_tictactoe"),
COMMAND_KICK("enable_command_kick"),
COMMAND_TRANSLATETO("enable_command_translateto");

private final String dbPath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.flectone.chat.module.FModule;
import net.flectone.chat.module.serverMessage.advancement.AdvancementModule;
import net.flectone.chat.module.serverMessage.death.DeathModule;
import net.flectone.chat.module.serverMessage.greeting.GreetingModule;
import net.flectone.chat.module.serverMessage.join.JoinModule;
import net.flectone.chat.module.serverMessage.quit.QuitModule;

Expand All @@ -22,5 +23,6 @@ public void init() {
new QuitModule(this, "quit");
new AdvancementModule(this, "advancement");
new DeathModule(this, "death");
new GreetingModule(this, "greeting");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package net.flectone.chat.module.serverMessage.greeting;

import net.flectone.chat.FlectoneChat;
import net.flectone.chat.module.FListener;
import net.flectone.chat.module.FModule;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.jetbrains.annotations.NotNull;

public class GreetingListener extends FListener {

public GreetingListener(FModule module) {
super(module);
init();
}

@Override
public void init() {
registerEvents();
}

@EventHandler
public void playerJoinEvent(@NotNull PlayerJoinEvent event) {
Player player = event.getPlayer();
if (hasNoPermission(player)) return;

Bukkit.getScheduler().runTaskAsynchronously(FlectoneChat.getPlugin(), () ->
((GreetingModule) getModule()).send(player));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package net.flectone.chat.module.serverMessage.greeting;

import net.flectone.chat.component.FImageComponent;
import net.flectone.chat.model.player.FPlayer;
import net.flectone.chat.model.player.Settings;
import net.flectone.chat.module.FModule;
import net.flectone.chat.util.MessageUtil;
import net.flectone.chat.util.PlayerUtil;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.List;

public class GreetingModule extends FModule {

public GreetingModule(FModule module, String name) {
super(module, name);
init();
}

@Override
public void init() {
if (!isEnabled()) return;
register();

actionManager.add(new GreetingListener(this));
}

public void send(@NotNull Player player) {
if (!isEnabledFor(player)) return;

FPlayer fPlayer = playerManager.get(player);
if (fPlayer == null) return;
if (fPlayer.getSettings() == null) return;

String join = fPlayer.getSettings().getValue(Settings.Type.GREETING);
boolean enabled = join == null || Integer.parseInt(join) != -1;
if (!enabled) return;

String imageUrl = PlayerUtil.constructAvatarUrl(player);
FImageComponent fImageComponent = new FImageComponent(imageUrl);
String convertedImage = fImageComponent.getConvertedImage().substring(1);

List<String> messageList = locale.getVaultStringList(player, this + ".message");
String message = String.join("\n", messageList);

for (String pixels : convertedImage.split("\n")) {
message = message.replaceFirst("########", pixels);
}

message = MessageUtil.formatAll(player, MessageUtil.formatPlayerString(player, message));
player.sendMessage(message);

fPlayer.playSound(player, player, this.toString());
}
}
7 changes: 7 additions & 0 deletions src/main/java/net/flectone/chat/util/PlayerUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

public class PlayerUtil {

private static final String WEBSITE_AVATAR_URL = "https://cravatar.eu/avatar/<player>/8.png";

public static String getIP(Player player) {
try {
InetSocketAddress playerAddress = player.getAddress();
Expand Down Expand Up @@ -88,4 +90,9 @@ public static Collection<? extends Player> getPlayersWithFeature(@NotNull Collec
.filter(player -> config.getVaultBoolean(player, path))
.collect(Collectors.toList());
}

@NotNull
public static String constructAvatarUrl(@NotNull Player player) {
return WEBSITE_AVATAR_URL.replace("<player>", player.getUniqueId().toString());
}
}
3 changes: 3 additions & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@ default:
first-time:
enable: true

greeting:
enable: true

quit:
enable: true

Expand Down
6 changes: 6 additions & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,8 @@ permissions:
default: true
flectonechat.server-message.join:
default: true
flectonechat.server-message.greeting:
default: true
flectonechat.server-message.quit:
default: true
flectonechat.sounds:
Expand Down Expand Up @@ -158,6 +160,8 @@ permissions:
default: true
flectonechat.sounds.server-message.join:
default: true
flectonechat.sounds.server-message.greeting:
default: true
flectonechat.sounds.server-message.quit:
default: true
flectonechat.sounds.commands.spit:
Expand Down Expand Up @@ -262,6 +266,8 @@ permissions:
default: true
flectonechat.commands.chatsettings.join:
default: true
flectonechat.commands.chatsettings.greeting:
default: true
flectonechat.commands.chatsettings.quit:
default: true
flectonechat.commands.chatsettings.auto-message:
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/settings/commands.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ chatsettings:
- advancement
- death
- join
- greeting
- quit
- auto-message
- me
Expand Down
16 changes: 15 additions & 1 deletion src/main/resources/settings/languages/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,19 @@ default:
first-time:
message: "#4eff52→ &&2<player> &&1has logged on to the server for the first time, let's welcome!"

greeting:
message:
- " "
- "########"
- "########"
- "######## Hello <player>!"
- "########"
- "########"
- "########"
- "########"
- "########"
- " "

quit:
message: "#ff4e4e← &&2<player>"

Expand Down Expand Up @@ -255,6 +268,7 @@ default:
advancement: "&&2Advancements"
death: "&&2Deaths"
join: "&&2Joins"
greeting: "&&2Greeting"
quit: "&&2Quits"
auto-message: "&&2Auto-message"
me: "&&2/me"
Expand All @@ -280,7 +294,7 @@ default:
- "&&1════ Chat settings ════"
- "&&1Chat types: <chat>"
- "&&1------------------------"
- "&&1Server messages: \n <advancement> \n <death> \n <join> \n <quit> \n <auto-message>"
- "&&1Server messages: \n <advancement> \n <death> \n <join> \n <greeting> \n <quit> \n <auto-message>"
- "&&1------------------------"
- "&&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>"
- "&&1------------------------"
Expand Down

0 comments on commit 583eee4

Please sign in to comment.