Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.lunamc;
- import java.util.ArrayList;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Random;
- import org.bukkit.Bukkit;
- import org.bukkit.Server;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.AsyncPlayerChatEvent;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- public class LunaWelcome extends JavaPlugin implements Listener {
- // ===== Begin configuration ===== //
- // Message templates
- private List<String> messages;
- // Command templates
- private List<String> commands;
- // Error message if another entity than a player executes the command
- private String requirePlayer;
- // Error message if there is no player who has logged in for the first time
- private String requireNewbie;
- // ===== End configuration ===== //
- // Random
- private final Random random = new Random();
- // Last player who joined the server
- private Player last;
- @Override
- public void onEnable() {
- // Load config
- FileConfiguration config = this.getConfig();
- this.saveDefaultConfig();
- this.messages = new ArrayList<>();
- for(String msg : config.getStringList("messages"))
- this.messages.add(msg.replaceAll("&([0-9a-fk-or])", "§$1"));
- this.commands = new ArrayList<>();
- for(String cmd : config.getStringList("command"))
- this.commands.add(cmd.replaceAll("&([0-9a-fk-or])", "§$2"));
- if(this.messages.isEmpty()) {
- this.getLogger().warning("No message provided, deactivation.");
- Bukkit.getPluginManager().disablePlugin(this);
- return;
- }
- this.requirePlayer = config.getString("error-messages.requirePlayer", "Vous devez être un joueur.");
- this.requireNewbie = config.getString("error-messages.requireNewbie", "Aucun nouveau joueur.");
- // Set command executor
- this.getCommand("bienvenue").setExecutor((sender, command, label, args) -> {
- // Verify that the executor is a player (hello console)
- if(!(sender instanceof Player)) {
- sender.sendMessage(requirePlayer);
- return true;
- }
- // Check if there is a player who has joined
- if(last == null) {
- sender.sendMessage(requireNewbie);
- return true;
- }
- // Pick message
- String message = ((String)this.messages.get(this.random.nextInt(this.messages.size()))).replaceAll("\\Q${player}\\E", this.last.getDisplayName());
- String cmd = ((String)this.commands.get(this.random.nextInt(this.commands.size()))).replaceAll("%player%", this.last.getDisplayName());
- // Send an event so that plugins can apply the plugin formatting
- AsyncPlayerChatEvent e = new AsyncPlayerChatEvent(false, (Player) sender, message, new HashSet<>(Bukkit.getOnlinePlayers()));
- Bukkit.getPluginManager().callEvent(e);
- // Send the message
- e.getRecipients().forEach(p -> p.sendMessage(e.getFormat()));
- return true;
- });
- // Register our event
- Bukkit.getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent e) {
- Player p = e.getPlayer();
- if(!p.hasPlayedBefore())
- last = p;
- }
- private void dispatchCommandSync(final String cmd) {
- final Server server = this.getServer();
- this.getServer().getScheduler().runTask(this, () -> server.dispatchCommand(server.getConsoleSender(), cmd));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement