Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 0 additions & 41 deletions src/main/java/org/welcomemessage/PlayerListener.java

This file was deleted.

83 changes: 68 additions & 15 deletions src/main/java/org/welcomemessage/WelcomeMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,93 @@
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.welcomemessage.listeners.PlayerListener;
import org.welcomemessage.manager.LangManager;

public class WelcomeMessage extends JavaPlugin {

private final String[] logo = {
" __ __ _ __ __ ",
" \\ \\ / / | | | \\/ | ",
" \\ \\ /\\ / /__| | ___ ___ _ __ ___ ___| \\ / |___ __ _ ",
" \\ \\/ \\/ / _ \\ |/ __/ _ \\| '_ ` _ \\ / _ \\ |\\/| / __|/ _` |",
" \\ /\\ / __/ | (_| (_) | | | | | | __/ | | \\__ \\ (_| |",
" \\/ \\/ \\___|_|\\___\\___/|_| |_| |_|\\___|_| |_|___/\\__, |",
" __/ |",
" |___/",
" Version 1.0.0 By Nenfal",
" https://github.com/MatthieuClaessens/WelcomeMessage"
" __ __ _ __ __ ",
" \\ \\ / / | | | \\/ | ",
" \\ \\ /\\ / /__| | ___ ___ _ __ ___ ___| \\ / |___ __ _ ",
" \\ \\/ \\/ / _ \\ |/ __/ _ \\| '_ ` _ \\ / _ \\ |\\/| / __|/ _` |",
" \\ /\\ / __/ | (_| (_) | | | | | | __/ | | \\__ \\ (_| |",
" \\/ \\/ \\___|_|\\___\\___/|_| |_| |_|\\___|_| |_|___/\\__, |",
" __/ |",
" |___/",
" Version 1.0.0 By Nenfal",
" https://github.com/MatthieuClaessens/WelcomeMessage"
};

private LangManager langManager;

@Override
public void onEnable() {
saveDefaultConfig();

this.langManager = new LangManager(this);

for (String line : logo) {
getLogger().info(line);
}
getLogger().info("WelcomeMessage plugin activated! Version 1.0");

getLogger().info(langManager.getMessage("plugin.enabled", "WelcomeMessage plugin activated! Version 1.0"));
getServer().getPluginManager().registerEvents(new PlayerListener(this), this);
getConfig();
}

public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("wmreload")) {
if (!sender.hasPermission("welcomemessage.reload")) {
sender.sendMessage("§6§lᴡᴇʟᴄᴏᴍᴇᴍꜱɢ §8§l» §cYou don't have permission to use this command.");
sender.sendMessage(langManager.getMessage("commands.no-permission",
"§6§lWELCOMEMSG §8§l» §cYou don't have permission to use this command."));
return true;
}

reloadConfig();
sender.sendMessage("§6§lᴡᴇʟᴄᴏᴍᴇᴍꜱɢ §8§l» §aConfig reloaded!");
langManager.reloadLanguages();
sender.sendMessage(langManager.getMessage("commands.reload-success",
"§6§lWELCOMEMSG §8§l» §aConfig reloaded!"));
getLogger().info("Config reloaded by " + sender.getName());
return true;
}

if (command.getName().equalsIgnoreCase("wmlang")) {
if (!sender.hasPermission("welcomemessage.lang")) {
sender.sendMessage(langManager.getMessage("commands.no-permission",
"§6§lWELCOMEMSG §8§l» §cYou don't have permission to use this command."));
return true;
}

if (args.length == 0) {
sender.sendMessage(langManager.getMessage("commands.usage-wmlang",
"§6§lWELCOMEMSG §8§l» §7Usage: §e/wmlang <language|list>"));
return true;
}

if (args[0].equalsIgnoreCase("list")) {
String[] languages = langManager.getAvailableLanguages();
String languageList = String.join(", ", languages);
String message = langManager.getMessage("commands.available-languages",
"§6§lWELCOMEMSG §8§l» §7Available languages: §e%languages%");
sender.sendMessage(message.replace("%languages%", languageList));
return true;
}

String newLanguage = args[0];
if (langManager.isLanguageAvailable(newLanguage)) {
langManager.setLanguage(newLanguage);
String message = langManager.getMessage("commands.language-changed",
"§6§lWELCOMEMSG §8§l» §aLanguage changed to §e%language%§a!");
sender.sendMessage(message.replace("%language%", newLanguage));
getLogger().info("Language changed to " + newLanguage + " by " + sender.getName());
} else {
String message = langManager.getMessage("commands.language-not-found",
"§6§lWELCOMEMSG §8§l» §cLanguage §e%language% §cnot found!");
sender.sendMessage(message.replace("%language%", newLanguage));
}
return true;
}

return false;
}

Expand All @@ -49,6 +98,10 @@ public void onDisable() {
for (String line : logo) {
getLogger().info(line);
}
getLogger().info("WelcomeMessage plugin disabled.");
getLogger().info(langManager.getMessage("plugin.disabled", "WelcomeMessage plugin disabled."));
}

public LangManager getLangManager() {
return langManager;
}
}
54 changes: 54 additions & 0 deletions src/main/java/org/welcomemessage/listeners/PlayerListener.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package org.welcomemessage.listeners;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.welcomemessage.WelcomeMessage;

public class PlayerListener implements Listener {
private final WelcomeMessage plugin;

public PlayerListener(WelcomeMessage plugin) {
this.plugin = plugin;
}

@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
event.setJoinMessage(null);

String playerName = event.getPlayer().getName();

String joinMessage = plugin.getLangManager().getMessage(
"messages.join",
playerName,
"§a+ §6%player% §7joined the server"
);
Bukkit.broadcastMessage(joinMessage);

if (plugin.getConfig().getBoolean("toggle-welcome-message", true)) {
if (!event.getPlayer().hasPlayedBefore()) {
String welcomeMessage = plugin.getLangManager().getMessage(
"messages.welcome",
playerName,
"§eWelcome §6%player% §eto the server!"
);
Bukkit.broadcastMessage(welcomeMessage);
}
}
}

@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
event.setQuitMessage(null);

String playerName = event.getPlayer().getName();
String quitMessage = plugin.getLangManager().getMessage(
"messages.quit",
playerName,
"§c- §6%player% §7left the server"
);
Bukkit.broadcastMessage(quitMessage);
}
}
113 changes: 113 additions & 0 deletions src/main/java/org/welcomemessage/manager/LangManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package org.welcomemessage.manager;

import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.welcomemessage.WelcomeMessage;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public class LangManager {
private final WelcomeMessage plugin;
private final Map<String, FileConfiguration> languages;
private String currentLanguage;

public LangManager(WelcomeMessage plugin) {
this.plugin = plugin;
this.languages = new HashMap<>();
this.currentLanguage = plugin.getConfig().getString("language", "en-US");

loadLanguages();
}

private void loadLanguages() {
String[] availableLanguages = {"en-US", "es-ES"};

for (String lang : availableLanguages) {
loadLanguage(lang);
}
}

private void loadLanguage(String language) {
File langFolder = new File(plugin.getDataFolder(), "lang");
if (!langFolder.exists()) {
langFolder.mkdirs();
}

File langFile = new File(langFolder, language + ".yml");

if (!langFile.exists()) {
plugin.saveResource("lang/" + language + ".yml", false);
}

FileConfiguration langConfig = YamlConfiguration.loadConfiguration(langFile);

InputStream defConfigStream = plugin.getResource("lang/" + language + ".yml");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(
new InputStreamReader(defConfigStream, StandardCharsets.UTF_8)
);
langConfig.setDefaults(defConfig);
}

languages.put(language, langConfig);
}

public String getMessage(String key) {
return getMessage(key, null);
}

public String getMessage(String key, String defaultValue) {
FileConfiguration langConfig = languages.get(currentLanguage);

if (langConfig == null) {
langConfig = languages.get("en-US");
}

if (langConfig == null) {
return defaultValue != null ? defaultValue : key;
}

String message = langConfig.getString(key, defaultValue);
return message != null ? colorize(message) : (defaultValue != null ? defaultValue : key);
}

public String getMessage(String key, String playerName, String defaultValue) {
String message = getMessage(key, defaultValue);
return message.replace("%player%", playerName);
}

private String colorize(String message) {
return message.replace("&", "§");
}

public void setLanguage(String language) {
if (languages.containsKey(language)) {
this.currentLanguage = language;
plugin.getConfig().set("language", language);
plugin.saveConfig();
}
}

public String getCurrentLanguage() {
return currentLanguage;
}

public boolean isLanguageAvailable(String language) {
return languages.containsKey(language);
}

public String[] getAvailableLanguages() {
return languages.keySet().toArray(new String[0]);
}

public void reloadLanguages() {
languages.clear();
loadLanguages();
}
}
40 changes: 40 additions & 0 deletions src/main/resources/lang/en-US.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#
# __ __ _ __ __
# \ \ / / | | | \/ |
# \ \ /\ / /__| | ___ ___ _ __ ___ ___| \ / |___ __ _
# \ \/ \/ / _ \ |/ __/ _ \| '_ ` _ \ / _ \ |\/| / __|/ _` |
# \ /\ / __/ | (_| (_) | | | | | | __/ | | \__ \ (_| |
# \/ \/ \___|_|\___\___/|_| |_| |_|\___|_| |_|___/\__, |
# 1.0.0 __/ |
# By Nenfal |___/
# https://github.com/MatthieuClaessens/WelcomeMessage
#
# English (United States) Language File

# Plugin Messages
plugin:
enabled: "&aWelcomeMessage plugin activated! Version 1.0"
disabled: "&cWelcomeMessage plugin disabled."
config-reloaded: "&6&lWELCOMEMSG &8&l» &aConfig reloaded!"
languages-reloaded: "&6&lWELCOMEMSG &8&l» &aLanguages reloaded!"

# Player Messages
messages:
welcome: "&eWelcome &6%player% &eto the server!"
join: "&a+ &6%player% &7joined the server"
quit: "&c- &6%player% &7left the server"

# Command Messages
commands:
no-permission: "&6&lWELCOMEMSG &8&l» &cYou don't have permission to use this command."
reload-success: "&6&lWELCOMEMSG &8&l» &aConfiguration reloaded successfully!"
language-changed: "&6&lWELCOMEMSG &8&l» &aLanguage changed to &e%language%&a!"
language-not-found: "&6&lWELCOMEMSG &8&l» &cLanguage &e%language% &cnot found!"
available-languages: "&6&lWELCOMEMSG &8&l» &7Available languages: &e%languages%"
usage-wmreload: "&6&lWELCOMEMSG &8&l» &7Usage: &e/wmreload"
usage-wmlang: "&6&lWELCOMEMSG &8&l» &7Usage: &e/wmlang <language|list>"

# Help Messages
help:
wmreload: "Reload the plugin configuration"
wmlang: "Change or list available languages"
Loading