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