adding serverchange when rightclicking the villager

This commit is contained in:
Martin Olischläger 2023-05-21 17:37:09 +02:00
parent fdc98d0c76
commit 3845f104c6
5 changed files with 41 additions and 8 deletions

View File

@ -1,6 +1,6 @@
package eu.mhsl.craftattack.spawn; 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.listener.PlayerEntityInteractListener;
import eu.mhsl.craftattack.spawn.util.VillagerSpawner; import eu.mhsl.craftattack.spawn.util.VillagerSpawner;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -9,21 +9,33 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects; import java.util.Objects;
public final class Main extends JavaPlugin { public final class Main extends JavaPlugin {
private static Main instance;
@Override @Override
public void onEnable() { public void onEnable() {
// init
saveDefaultConfig();
VillagerSpawner.spawnVillager();
instance = this;
// register Messaging-Channels
this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
// register Commands // register Commands
Objects.requireNonNull(this.getCommand("worldMuseum-villager")).setExecutor(new SpawnWorldMuseumVillagerCommand()); Objects.requireNonNull(this.getCommand("worldMuseum-villager")).setExecutor(new WorldMuseumVillagerCommand());
// register listeners // register listeners
Bukkit.getPluginManager().registerEvents(new PlayerEntityInteractListener(), this); Bukkit.getPluginManager().registerEvents(new PlayerEntityInteractListener(), this);
// Load config & spawn Villager
saveDefaultConfig();
VillagerSpawner.spawnVillager();
} }
@Override @Override
public void onDisable() { public void onDisable() {
VillagerSpawner.killVillager(); VillagerSpawner.killVillager();
} }
public static Main getInstance() {
return instance;
}
} }

View File

@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class SpawnWorldMuseumVillagerCommand implements CommandExecutor { public class WorldMuseumVillagerCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!(sender instanceof Player player)) return false; if (!(sender instanceof Player player)) return false;

View File

@ -1,15 +1,19 @@
package eu.mhsl.craftattack.spawn.listener; 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 eu.mhsl.craftattack.spawn.util.VillagerSpawner;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.event.player.PlayerInteractAtEntityEvent;
public class PlayerEntityInteractListener implements Listener { public class PlayerEntityInteractListener implements Listener {
private final PluginMessage pluginMessage = new PluginMessage();
@EventHandler @EventHandler
public void onInteract(PlayerInteractAtEntityEvent event) { public void onInteract(PlayerInteractAtEntityEvent event) {
if (!event.getRightClicked().equals(VillagerSpawner.getStaticVillager())) return; if (!event.getRightClicked().equals(VillagerSpawner.getStaticVillager())) return;
event.setCancelled(true); event.setCancelled(true);
System.out.println("test"); String servername = ConfigUtil.getConfigUtil().getConfig().getString("world-museum-name");
pluginMessage.connect(event.getPlayer(), servername);
} }
} }

View File

@ -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());
}
}

View File

@ -4,3 +4,4 @@ villagerLocation:
- 0 #z - 0 #z
- 0 #yaw - 0 #yaw
- 0 #pitch - 0 #pitch
world-museum-name: worldmuseum