2020-11-09 23:48:34 +01:00
|
|
|
package net.minestom.server.network.packet.server.play;
|
2019-08-03 15:25:24 +02:00
|
|
|
|
2020-07-13 14:12:21 +02:00
|
|
|
import net.minestom.server.MinecraftServer;
|
2020-04-24 03:25:58 +02:00
|
|
|
import net.minestom.server.entity.GameMode;
|
|
|
|
import net.minestom.server.network.packet.server.ServerPacket;
|
|
|
|
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
|
2020-08-19 20:34:21 +02:00
|
|
|
import net.minestom.server.utils.binary.BinaryWriter;
|
2020-07-13 14:12:21 +02:00
|
|
|
import net.minestom.server.world.DimensionType;
|
2020-10-25 22:19:27 +01:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
2020-07-06 23:20:20 +02:00
|
|
|
import org.jglrxavpok.hephaistos.nbt.NBTCompound;
|
2020-06-25 21:05:58 +02:00
|
|
|
|
2019-08-03 15:25:24 +02:00
|
|
|
public class JoinGamePacket implements ServerPacket {
|
|
|
|
|
2020-10-07 22:26:26 +02:00
|
|
|
public int entityId;
|
2021-01-07 03:46:58 +01:00
|
|
|
public GameMode gameMode;
|
|
|
|
public DimensionType dimensionType;
|
2020-10-07 22:26:26 +02:00
|
|
|
public long hashedSeed;
|
2020-10-25 22:19:27 +01:00
|
|
|
public int maxPlayers = 0; // Unused
|
2020-10-07 22:26:26 +02:00
|
|
|
public int viewDistance;
|
|
|
|
public boolean reducedDebugInfo = false;
|
|
|
|
public boolean enableRespawnScreen = true;
|
2020-10-25 22:19:27 +01:00
|
|
|
public boolean isDebug = false;
|
|
|
|
public boolean isFlat = false;
|
2020-10-07 22:26:26 +02:00
|
|
|
|
|
|
|
@Override
|
2020-10-25 22:19:27 +01:00
|
|
|
public void write(@NotNull BinaryWriter writer) {
|
2020-10-07 22:26:26 +02:00
|
|
|
writer.writeInt(entityId);
|
2020-11-16 03:10:51 +01:00
|
|
|
writer.writeBoolean(gameMode.isHardcore());
|
2020-10-07 22:26:26 +02:00
|
|
|
writer.writeByte(gameMode.getId());
|
|
|
|
//Previous Gamemode
|
|
|
|
writer.writeByte(gameMode.getId());
|
|
|
|
|
|
|
|
//array of worlds
|
|
|
|
writer.writeVarInt(1);
|
|
|
|
writer.writeSizedString("minestom:world");
|
|
|
|
NBTCompound nbt = new NBTCompound();
|
|
|
|
NBTCompound dimensions = MinecraftServer.getDimensionTypeManager().toNBT();
|
|
|
|
NBTCompound biomes = MinecraftServer.getBiomeManager().toNBT();
|
|
|
|
|
|
|
|
nbt.set("minecraft:dimension_type", dimensions);
|
|
|
|
nbt.set("minecraft:worldgen/biome", biomes);
|
|
|
|
|
|
|
|
writer.writeNBT("", nbt);
|
|
|
|
writer.writeNBT("", dimensionType.toNBT());
|
|
|
|
|
|
|
|
writer.writeSizedString(dimensionType.getName().toString());
|
|
|
|
writer.writeLong(hashedSeed);
|
|
|
|
writer.writeVarInt(maxPlayers);
|
|
|
|
writer.writeVarInt(viewDistance);
|
|
|
|
writer.writeBoolean(reducedDebugInfo);
|
|
|
|
writer.writeBoolean(enableRespawnScreen);
|
|
|
|
//debug
|
2020-10-25 22:19:27 +01:00
|
|
|
writer.writeBoolean(isDebug);
|
2020-10-07 22:26:26 +02:00
|
|
|
//is flat
|
2020-10-25 22:19:27 +01:00
|
|
|
writer.writeBoolean(isFlat);
|
2020-10-07 22:26:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getId() {
|
|
|
|
return ServerPacketIdentifier.JOIN_GAME;
|
|
|
|
}
|
2020-06-25 21:05:58 +02:00
|
|
|
|
2019-08-03 15:25:24 +02:00
|
|
|
}
|