From d37656ebe53f12b9330e16488a5ff8e6abb04706 Mon Sep 17 00:00:00 2001 From: Eoghanmc22 Date: Thu, 20 Aug 2020 12:18:36 -0400 Subject: [PATCH] fix respawn packet --- .../java/fr/themode/demo/commands/TeleportCommand.java | 10 ++++++++++ .../network/packet/server/play/RespawnPacket.java | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/themode/demo/commands/TeleportCommand.java b/src/main/java/fr/themode/demo/commands/TeleportCommand.java index 91d27e823..bdc6aebfe 100644 --- a/src/main/java/fr/themode/demo/commands/TeleportCommand.java +++ b/src/main/java/fr/themode/demo/commands/TeleportCommand.java @@ -1,5 +1,6 @@ package fr.themode.demo.commands; +import net.minestom.server.MinecraftServer; import net.minestom.server.command.builder.Command; import net.minestom.server.command.builder.arguments.Argument; import net.minestom.server.command.builder.arguments.ArgumentType; @@ -15,11 +16,20 @@ public class TeleportCommand extends Command { Argument x = ArgumentType.Float("x"); Argument y = ArgumentType.Float("y"); Argument z = ArgumentType.Float("z"); + Argument playerArg = ArgumentType.Word("pl"); addCallback((source, value, error) -> { System.out.println("error: " + error); }, x); + addSyntax((sender, args) -> { + Player pl = MinecraftServer.getConnectionManager().getPlayer(args.getWord("pl")); + if (pl != null && sender.isPlayer()) { + Player player = (Player) sender; + player.teleport(pl.getPosition()); + } + }, playerArg); + addSyntax((source, args) -> { final float posX = args.getFloat("x"); final float posY = args.getFloat("y"); diff --git a/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java index 4eed81405..e4bb87179 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java @@ -17,10 +17,10 @@ public class RespawnPacket implements ServerPacket { @Override public void write(PacketWriter writer) { //TODO add api - writer.writeSizedString(dimensionType.getName().toString()); + writer.writeNBT("", dimensionType.toNBT2()); // Warning: must be different for each dimension type! Otherwise the client seems to cache the world name - writer.writeSizedString("test:spawn_"+ dimensionType.getName().getPath()); // TODO: replace by instance name? + writer.writeSizedString(dimensionType.getName().toString()); writer.writeLong(hashedSeed); writer.writeByte(gameMode.getId());