diff --git a/src/de/steamwar/spectatesystem/PacketProcessor.java b/src/de/steamwar/spectatesystem/PacketProcessor.java index aa4b553..e02ed10 100644 --- a/src/de/steamwar/spectatesystem/PacketProcessor.java +++ b/src/de/steamwar/spectatesystem/PacketProcessor.java @@ -3,6 +3,9 @@ package de.steamwar.spectatesystem; import de.steamwar.spectatesystem.elements.REntity; import de.steamwar.spectatesystem.elements.RPlayer; import de.steamwar.sql.SteamwarUser; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; import java.io.IOException; @@ -24,6 +27,7 @@ class PacketProcessor { if(user == null) throw new IOException("Unknown user " + userId); + System.out.println("Player " + user.getUserName() + " spawned!"); new RPlayer(user.getUUID(), user.getUserName(), entityId); } @@ -44,6 +48,13 @@ class PacketProcessor { REntity.getEntity(entityId).remove(); } + private void chatMessage() throws IOException{ + String chatMessage = source.rString(); + + BaseComponent[] message = TextComponent.fromLegacyText(chatMessage); + Bukkit.getOnlinePlayers().forEach(p -> p.spigot().sendMessage(ChatMessageType.CHAT, message)); + } + private void process(){ try{ while(!source.isClosed()){ @@ -57,6 +68,9 @@ class PacketProcessor { case 0x02: entityDespawns(); break; + case (byte) 0xa0: + chatMessage(); + break; default: Bukkit.getLogger().log(Level.SEVERE, "Unknown packet recieved, closing"); source.close(); diff --git a/src/de/steamwar/spectatesystem/elements/RPlayer.java b/src/de/steamwar/spectatesystem/elements/RPlayer.java index def72b0..46c8236 100644 --- a/src/de/steamwar/spectatesystem/elements/RPlayer.java +++ b/src/de/steamwar/spectatesystem/elements/RPlayer.java @@ -30,7 +30,6 @@ public class RPlayer extends REntity { protected void spawnEntity(PlayerConnection connection) { connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, (EntityPlayer) entity)); // "Adds the player data for the client to use when spawning a player" - https://wiki.vg/Protocol#Spawn_Player connection.sendPacket(new PacketPlayOutNamedEntitySpawn((EntityPlayer) entity)); // Spawns the NPC for the player client. - connection.sendPacket(new PacketPlayOutEntityMetadata(entity.getId(), entity.getDataWatcher(), true)); } private static EntityPlayer createPlayer(UUID uuid, String name){ diff --git a/src/de/steamwar/spectatesystem/listener/JoinListener.java b/src/de/steamwar/spectatesystem/listener/JoinListener.java index b428e06..7031062 100644 --- a/src/de/steamwar/spectatesystem/listener/JoinListener.java +++ b/src/de/steamwar/spectatesystem/listener/JoinListener.java @@ -1,6 +1,7 @@ package de.steamwar.spectatesystem.listener; import de.steamwar.spectatesystem.elements.REntity; +import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerJoinEvent; @@ -11,5 +12,6 @@ public class JoinListener extends BasicListener { public void onJoin(PlayerJoinEvent e){ Player player = e.getPlayer(); REntity.playerJoins(player); + player.setGameMode(GameMode.SPECTATOR); } }