Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.91 KB | None | 0 0
  1. package lbd.listeners;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Random;
  6.  
  7. import net.dv8tion.jda.api.entities.ChannelType;
  8. import net.dv8tion.jda.api.entities.MessageChannel;
  9. import net.dv8tion.jda.api.entities.User;
  10. import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
  11. import net.dv8tion.jda.api.hooks.ListenerAdapter;
  12.  
  13. public class MessageListener extends ListenerAdapter {
  14.  
  15.     private boolean gamerunning = false;
  16.     private MessageChannel admin = null;
  17.     private ArrayList<User> users = new ArrayList<>();
  18.     private HashMap<User, MessageChannel> player = new HashMap<>();
  19.     private HashMap<User, String> words = new HashMap<>();
  20.     private HashMap<User, String> assignedWords = new HashMap<>();
  21.  
  22.     @Override
  23.     public void onMessageReceived(MessageReceivedEvent event) {
  24.  
  25.         if (event.getAuthor().isBot())
  26.             return;
  27.  
  28.         if (event.getChannelType().equals(ChannelType.PRIVATE)) {
  29.  
  30.             String[] args = event.getMessage().getContentDisplay().split(" ");
  31.  
  32.             if (args.length < 2 && !event.getAuthor().getAsTag().equals("Debye Scherrer#1960")) {
  33.                 event.getChannel().sendMessage("Syntax Error: Use: /join <word>").queue();
  34.                 return;
  35.             }
  36.  
  37.             if (args[0].charAt(0) == '/') {
  38.                 if (event.getAuthor().getAsTag().equals("Debye Scherrer#1960")) {
  39.                     if (admin == null)
  40.                         admin = event.getChannel();
  41.                     switch (args[0]) {
  42.                     case "/stop":
  43.                         gamerunning = false;
  44.                         player.clear();
  45.                         users.clear();
  46.                         words.clear();
  47.                         assignedWords.clear();
  48.                         event.getChannel().sendMessage("You stopped the game.").queue();
  49.                         break;
  50.                     case "/start":
  51.                         gamerunning = true;
  52.                         event.getChannel().sendMessage("You starded the game.").queue();
  53.                         assignWords();
  54.                         sendWords();
  55.                         break;
  56.                     case "/list":
  57.                         event.getChannel().sendMessage("Following players joined with following words:").queue();
  58.                         for (User u : users) {
  59.                             event.getChannel().sendMessage(u.getAsTag() + " : " + words.get(u)).queue();
  60.                         }
  61.                         break;
  62.                     }
  63.                 }
  64.  
  65.                 switch (args[0]) {
  66.                 case "/join":
  67.  
  68.                     if (gamerunning) {
  69.                         event.getChannel()
  70.                                 .sendMessage(
  71.                                         "Das Spiel läuft schon, du kannst nicht mehr beitreten oder dein Wort ändern.")
  72.                                 .queue();
  73.                         return;
  74.                     }
  75.                    
  76.                     String word = args[1];
  77.                     for(int i = 2; i < args.length; i++){
  78.                         word = word + " " + args[i];
  79.                     }
  80.                    
  81.                     if (!users.contains(event.getAuthor())) {
  82.                         users.add(event.getAuthor());
  83.                         player.put(event.getAuthor(), event.getChannel());
  84.                         words.put(event.getAuthor(), word);
  85.                         event.getChannel()
  86.                                 .sendMessage("Du bist dem Spiel mit dem Wort \"" + word
  87.                                         + "\" beigetreten. Falls du dein Wort ändern möchtest, nutze einfach wieder den Befehl: /join <Wort> , dann wird dein Wort ersetzt.")
  88.                                 .queue();
  89.                         admin.sendMessage(event.getAuthor().getAsTag() + " has joined.").queue();
  90.                     } else {
  91.                         words.put(event.getAuthor(), word);
  92.                         event.getChannel().sendMessage("Du hast dein Wort ersetzt, dein neues Wort ist: \"" + word + "\".")
  93.                                 .queue();
  94.                         admin.sendMessage(event.getAuthor().getAsTag() + " has changed his/her word.").queue();
  95.                     }
  96.                     break;
  97.                 }
  98.  
  99.             }
  100.         }
  101.  
  102.     }
  103.  
  104.     private void assignWords() {
  105.  
  106.         Random rand = new Random();
  107.         int shift = rand.nextInt(users.size());
  108.  
  109.         for (int i = 0; i < users.size(); i++) {
  110.             int index = ((i + shift) % users.size());
  111.             if (index == i)
  112.                 index = (index + 1) % users.size();
  113.             String word = words.get(users.get(index));
  114.             assignedWords.put(users.get(i), word);
  115.         }
  116.  
  117.     }
  118.  
  119.     private void sendWords() {
  120.  
  121.         for (User u : users) {
  122.             player.get(u).sendMessage("Folgende Spieler müssen folgende Worte erraten: ").queue();
  123.  
  124.             for (User u2 : users) {
  125.  
  126.                 if (!u.equals(u2)) {
  127.                     player.get(u).sendMessage(u2.getAsTag() + " : " + assignedWords.get(u2)).queue();
  128.                 }
  129.  
  130.             }
  131.         }
  132.     }
  133.  
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement