Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lbd.listeners;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Random;
- import net.dv8tion.jda.api.entities.ChannelType;
- import net.dv8tion.jda.api.entities.MessageChannel;
- import net.dv8tion.jda.api.entities.User;
- import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
- import net.dv8tion.jda.api.hooks.ListenerAdapter;
- public class MessageListener extends ListenerAdapter {
- private boolean gamerunning = false;
- private MessageChannel admin = null;
- private ArrayList<User> users = new ArrayList<>();
- private HashMap<User, MessageChannel> player = new HashMap<>();
- private HashMap<User, String> words = new HashMap<>();
- private HashMap<User, String> assignedWords = new HashMap<>();
- @Override
- public void onMessageReceived(MessageReceivedEvent event) {
- if (event.getAuthor().isBot())
- return;
- if (event.getChannelType().equals(ChannelType.PRIVATE)) {
- String[] args = event.getMessage().getContentDisplay().split(" ");
- if (args.length < 2 && !event.getAuthor().getAsTag().equals("Debye Scherrer#1960")) {
- event.getChannel().sendMessage("Syntax Error: Use: /join <word>").queue();
- return;
- }
- if (args[0].charAt(0) == '/') {
- if (event.getAuthor().getAsTag().equals("Debye Scherrer#1960")) {
- if (admin == null)
- admin = event.getChannel();
- switch (args[0]) {
- case "/stop":
- gamerunning = false;
- player.clear();
- users.clear();
- words.clear();
- assignedWords.clear();
- event.getChannel().sendMessage("You stopped the game.").queue();
- break;
- case "/start":
- gamerunning = true;
- event.getChannel().sendMessage("You starded the game.").queue();
- assignWords();
- sendWords();
- break;
- case "/list":
- event.getChannel().sendMessage("Following players joined with following words:").queue();
- for (User u : users) {
- event.getChannel().sendMessage(u.getAsTag() + " : " + words.get(u)).queue();
- }
- break;
- }
- }
- switch (args[0]) {
- case "/join":
- if (gamerunning) {
- event.getChannel()
- .sendMessage(
- "Das Spiel läuft schon, du kannst nicht mehr beitreten oder dein Wort ändern.")
- .queue();
- return;
- }
- String word = args[1];
- for(int i = 2; i < args.length; i++){
- word = word + " " + args[i];
- }
- if (!users.contains(event.getAuthor())) {
- users.add(event.getAuthor());
- player.put(event.getAuthor(), event.getChannel());
- words.put(event.getAuthor(), word);
- event.getChannel()
- .sendMessage("Du bist dem Spiel mit dem Wort \"" + word
- + "\" beigetreten. Falls du dein Wort ändern möchtest, nutze einfach wieder den Befehl: /join <Wort> , dann wird dein Wort ersetzt.")
- .queue();
- admin.sendMessage(event.getAuthor().getAsTag() + " has joined.").queue();
- } else {
- words.put(event.getAuthor(), word);
- event.getChannel().sendMessage("Du hast dein Wort ersetzt, dein neues Wort ist: \"" + word + "\".")
- .queue();
- admin.sendMessage(event.getAuthor().getAsTag() + " has changed his/her word.").queue();
- }
- break;
- }
- }
- }
- }
- private void assignWords() {
- Random rand = new Random();
- int shift = rand.nextInt(users.size());
- for (int i = 0; i < users.size(); i++) {
- int index = ((i + shift) % users.size());
- if (index == i)
- index = (index + 1) % users.size();
- String word = words.get(users.get(index));
- assignedWords.put(users.get(i), word);
- }
- }
- private void sendWords() {
- for (User u : users) {
- player.get(u).sendMessage("Folgende Spieler müssen folgende Worte erraten: ").queue();
- for (User u2 : users) {
- if (!u.equals(u2)) {
- player.get(u).sendMessage(u2.getAsTag() + " : " + assignedWords.get(u2)).queue();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement