Browse Source

Merge pull request #25 from Arthessia/master

Adding Advancement Handler for messages
MasterCake 1 year ago
parent
commit
5cea6ee74f
3 changed files with 46 additions and 1 deletions
  1. 1 1
      pom.xml
  2. 40 0
      src/main/java/de/Linus122/TelegramChat/TelegramChat.java
  3. 5 0
      src/main/resources/config.yml

+ 1 - 1
pom.xml

@@ -4,7 +4,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>xyz.spaceio</groupId>
 	<artifactId>telegramchat</artifactId>
-	<version>1.0.20-SNAPSHOT</version>
+	<version>1.0.21-SNAPSHOT</version>
 	<name>TelegramChat</name>
 	<url>https://www.spigotmc.org/resources/telegramchat.16576/</url>
 

+ 40 - 0
src/main/java/de/Linus122/TelegramChat/TelegramChat.java

@@ -7,10 +7,12 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Random;
 import java.util.UUID;
 import java.util.logging.Level;
+import java.util.stream.Collectors;
 
 import de.Linus122.Handlers.VanishHandler;
 import de.myzelyam.api.vanish.VanishAPI;
@@ -21,6 +23,7 @@ import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
 import org.bukkit.event.entity.PlayerDeathEvent;
 import org.bukkit.event.player.AsyncPlayerChatEvent;
+import org.bukkit.event.player.PlayerAdvancementDoneEvent;
 import org.bukkit.event.player.PlayerJoinEvent;
 import org.bukkit.event.player.PlayerQuitEvent;
 import org.bukkit.plugin.java.JavaPlugin;
@@ -224,6 +227,43 @@ public class TelegramChat extends JavaPlugin implements Listener {
 		}
 	}
 
+	@EventHandler
+	public void onAdvancement(PlayerAdvancementDoneEvent e) {
+				
+		if (!this.getConfig().getBoolean("enable-advancement"))
+			return;
+		
+		if(e.getAdvancement() == null ||
+				e.getAdvancement().getKey() == null ||
+				e.getAdvancement().getKey().getKey() == null ||
+				!e.getAdvancement().getKey().getKey().contains("/"))
+			return;
+		
+		String type = e.getAdvancement().getKey().getKey().split("/")[0];
+		
+		List<String> advancementTypes = Arrays.stream(this.getConfig().getString("advancement-types").split("\\,")) // split on comma
+                .map(str -> str.trim()) // remove white-spaces
+                .collect(Collectors.toList()); // collect to List
+		
+		if (telegramHook.connected && advancementTypes.contains(type)) {
+			
+			String toDisplay = e.getAdvancement().getKey().getKey()
+					.replace(type + "/", "")
+					.replaceAll("_", " ");
+			
+			if(toDisplay.equals("root"))
+				return;
+			
+			ChatMessageToTelegram chat = new ChatMessageToTelegram();
+			chat.parse_mode = "Markdown";
+			chat.text = Utils.formatMSG(
+					"advancement-message", 
+					e.getPlayer().getDisplayName(), 
+					toDisplay)[0];
+			telegramHook.sendAll(chat);
+		}
+	}
+
 	@EventHandler
 	public void onQuit(PlayerQuitEvent e) {
 		if (!this.getConfig().getBoolean("enable-joinquitmessages"))

+ 5 - 0
src/main/resources/config.yml

@@ -4,6 +4,7 @@ messages:
   join-message: "`%s joined the game.`"
   quit-message: "`%s left the game.`"
   death-message: "`%s`"
+  advancement-message: "`%s obtained advancement %s! GG!`"
   need-to-link: "Sorry, please link your account with */linktelegram ingame* to use the chat!"
   can-see-but-not-chat: "You can see the chat but you can't chat at the moment. Type */linktelegram ingame* to chat!"
   success-linked: "Success! Linked %s"
@@ -17,6 +18,10 @@ messages:
 enable-joinquitmessages: true
 enable-deathmessages: true
 enable-chatmessages: true
+enable-advancement: true
+
+# this will describe all types of advancements you want to be send on your telegram chat, be careful with 'recipes' type which can spam
+advancement-types: "adventure,husbandry,story,nether,end"
 
 # this will prevent mass-sending unsent messages from telegram to mc upon server startup
 omit-messages-sent-while-server-was-offline: true