From 3845f104c6de6b0789bd565ae017756586aec981 Mon Sep 17 00:00:00 2001
From: Martin <Martin.Olischlaeger@icloud.com>
Date: Sun, 21 May 2023 17:37:09 +0200
Subject: [PATCH] adding serverchange when rightclicking the villager

---
 .../java/eu/mhsl/craftattack/spawn/Main.java  | 22 ++++++++++++++-----
 ...d.java => WorldMuseumVillagerCommand.java} |  2 +-
 .../PlayerEntityInteractListener.java         |  6 ++++-
 .../craftattack/spawn/util/PluginMessage.java | 16 ++++++++++++++
 src/main/resources/config.yml                 |  3 ++-
 5 files changed, 41 insertions(+), 8 deletions(-)
 rename src/main/java/eu/mhsl/craftattack/spawn/command/{SpawnWorldMuseumVillagerCommand.java => WorldMuseumVillagerCommand.java} (94%)
 create mode 100644 src/main/java/eu/mhsl/craftattack/spawn/util/PluginMessage.java

diff --git a/src/main/java/eu/mhsl/craftattack/spawn/Main.java b/src/main/java/eu/mhsl/craftattack/spawn/Main.java
index 35e3cd4..f1f47d7 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/Main.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/Main.java
@@ -1,6 +1,6 @@
 package eu.mhsl.craftattack.spawn;
 
-import eu.mhsl.craftattack.spawn.command.SpawnWorldMuseumVillagerCommand;
+import eu.mhsl.craftattack.spawn.command.WorldMuseumVillagerCommand;
 import eu.mhsl.craftattack.spawn.listener.PlayerEntityInteractListener;
 import eu.mhsl.craftattack.spawn.util.VillagerSpawner;
 import org.bukkit.Bukkit;
@@ -9,21 +9,33 @@ import org.bukkit.plugin.java.JavaPlugin;
 import java.util.Objects;
 
 public final class Main extends JavaPlugin {
+    private static Main instance;
 
     @Override
     public void onEnable() {
+//        init
+        saveDefaultConfig();
+        VillagerSpawner.spawnVillager();
+        instance = this;
+
+//        register Messaging-Channels
+        this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
+
 //        register Commands
-        Objects.requireNonNull(this.getCommand("worldMuseum-villager")).setExecutor(new SpawnWorldMuseumVillagerCommand());
+        Objects.requireNonNull(this.getCommand("worldMuseum-villager")).setExecutor(new WorldMuseumVillagerCommand());
 
 //        register listeners
         Bukkit.getPluginManager().registerEvents(new PlayerEntityInteractListener(), this);
 
-//        Load config & spawn Villager
-        saveDefaultConfig();
-        VillagerSpawner.spawnVillager();
+
+
     }
     @Override
     public void onDisable() {
         VillagerSpawner.killVillager();
     }
+
+    public static Main getInstance() {
+        return instance;
+    }
 }
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/command/SpawnWorldMuseumVillagerCommand.java b/src/main/java/eu/mhsl/craftattack/spawn/command/WorldMuseumVillagerCommand.java
similarity index 94%
rename from src/main/java/eu/mhsl/craftattack/spawn/command/SpawnWorldMuseumVillagerCommand.java
rename to src/main/java/eu/mhsl/craftattack/spawn/command/WorldMuseumVillagerCommand.java
index 961126b..e343f63 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/command/SpawnWorldMuseumVillagerCommand.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/command/WorldMuseumVillagerCommand.java
@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
 import java.util.ArrayList;
 import java.util.List;
 
-public class SpawnWorldMuseumVillagerCommand implements CommandExecutor {
+public class WorldMuseumVillagerCommand implements CommandExecutor {
     @Override
     public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
         if (!(sender instanceof Player player)) return false;
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java b/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java
index 44aa563..a0cde6a 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/listener/PlayerEntityInteractListener.java
@@ -1,15 +1,19 @@
 package eu.mhsl.craftattack.spawn.listener;
 
+import eu.mhsl.craftattack.spawn.util.ConfigUtil;
+import eu.mhsl.craftattack.spawn.util.PluginMessage;
 import eu.mhsl.craftattack.spawn.util.VillagerSpawner;
 import org.bukkit.event.EventHandler;
 import org.bukkit.event.Listener;
 import org.bukkit.event.player.PlayerInteractAtEntityEvent;
 
 public class PlayerEntityInteractListener implements Listener {
+    private final PluginMessage pluginMessage = new PluginMessage();
     @EventHandler
     public void onInteract(PlayerInteractAtEntityEvent event) {
         if (!event.getRightClicked().equals(VillagerSpawner.getStaticVillager())) return;
         event.setCancelled(true);
-        System.out.println("test");
+        String servername = ConfigUtil.getConfigUtil().getConfig().getString("world-museum-name");
+        pluginMessage.connect(event.getPlayer(), servername);
     }
 }
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/util/PluginMessage.java b/src/main/java/eu/mhsl/craftattack/spawn/util/PluginMessage.java
new file mode 100644
index 0000000..abe39c6
--- /dev/null
+++ b/src/main/java/eu/mhsl/craftattack/spawn/util/PluginMessage.java
@@ -0,0 +1,16 @@
+package eu.mhsl.craftattack.spawn.util;
+
+import com.google.common.io.ByteArrayDataOutput;
+import com.google.common.io.ByteStreams;
+import eu.mhsl.craftattack.spawn.Main;
+import org.bukkit.entity.Player;
+
+public class PluginMessage {
+    private final Main plugin = Main.getInstance();
+    public void connect(Player player, String server) {
+        ByteArrayDataOutput output = ByteStreams.newDataOutput();
+        output.writeUTF("Connect");
+        output.writeUTF(server);
+        player.sendPluginMessage(plugin, "BungeeCord", output.toByteArray());
+    }
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index c3c215f..377ea45 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -3,4 +3,5 @@ villagerLocation:
   - 0 #y
   - 0 #z
   - 0 #yaw
-  - 0 #pitch
\ No newline at end of file
+  - 0 #pitch
+world-museum-name: worldmuseum
\ No newline at end of file