Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. package fr.lunamc;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashSet;
  5. import java.util.List;
  6. import java.util.Random;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.Server;
  10. import org.bukkit.configuration.file.FileConfiguration;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.player.AsyncPlayerChatEvent;
  15. import org.bukkit.event.player.PlayerJoinEvent;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17.  
  18. public class LunaWelcome extends JavaPlugin implements Listener {
  19. // ===== Begin configuration ===== //
  20.  
  21. // Message templates
  22. private List<String> messages;
  23.  
  24. // Command templates
  25. private List<String> commands;
  26.  
  27. // Error message if another entity than a player executes the command
  28. private String requirePlayer;
  29.  
  30. // Error message if there is no player who has logged in for the first time
  31. private String requireNewbie;
  32.  
  33. // ===== End configuration ===== //
  34.  
  35. // Random
  36. private final Random random = new Random();
  37.  
  38. // Last player who joined the server
  39. private Player last;
  40.  
  41. @Override
  42. public void onEnable() {
  43. // Load config
  44. FileConfiguration config = this.getConfig();
  45. this.saveDefaultConfig();
  46.  
  47. this.messages = new ArrayList<>();
  48. for(String msg : config.getStringList("messages"))
  49. this.messages.add(msg.replaceAll("&([0-9a-fk-or])", "§$1"));
  50.  
  51. this.commands = new ArrayList<>();
  52. for(String cmd : config.getStringList("command"))
  53. this.commands.add(cmd.replaceAll("&([0-9a-fk-or])", "§$2"));
  54.  
  55. if(this.messages.isEmpty()) {
  56. this.getLogger().warning("No message provided, deactivation.");
  57.  
  58. Bukkit.getPluginManager().disablePlugin(this);
  59. return;
  60. }
  61.  
  62. this.requirePlayer = config.getString("error-messages.requirePlayer", "Vous devez être un joueur.");
  63. this.requireNewbie = config.getString("error-messages.requireNewbie", "Aucun nouveau joueur.");
  64.  
  65. // Set command executor
  66. this.getCommand("bienvenue").setExecutor((sender, command, label, args) -> {
  67. // Verify that the executor is a player (hello console)
  68. if(!(sender instanceof Player)) {
  69. sender.sendMessage(requirePlayer);
  70.  
  71. return true;
  72. }
  73.  
  74. // Check if there is a player who has joined
  75. if(last == null) {
  76. sender.sendMessage(requireNewbie);
  77.  
  78. return true;
  79. }
  80.  
  81. // Pick message
  82. String message = ((String)this.messages.get(this.random.nextInt(this.messages.size()))).replaceAll("\\Q${player}\\E", this.last.getDisplayName());
  83. String cmd = ((String)this.commands.get(this.random.nextInt(this.commands.size()))).replaceAll("%player%", this.last.getDisplayName());
  84.  
  85. // Send an event so that plugins can apply the plugin formatting
  86. AsyncPlayerChatEvent e = new AsyncPlayerChatEvent(false, (Player) sender, message, new HashSet<>(Bukkit.getOnlinePlayers()));
  87. Bukkit.getPluginManager().callEvent(e);
  88. // Send the message
  89. e.getRecipients().forEach(p -> p.sendMessage(e.getFormat()));
  90.  
  91. return true;
  92. });
  93.  
  94. // Register our event
  95. Bukkit.getPluginManager().registerEvents(this, this);
  96. }
  97.  
  98. @EventHandler
  99. public void onPlayerJoin(PlayerJoinEvent e) {
  100. Player p = e.getPlayer();
  101.  
  102. if(!p.hasPlayedBefore())
  103. last = p;
  104. }
  105.  
  106. private void dispatchCommandSync(final String cmd) {
  107. final Server server = this.getServer();
  108.  
  109. this.getServer().getScheduler().runTask(this, () -> server.dispatchCommand(server.getConsoleSender(), cmd));
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement