Search in sources :

Example 1 with JoinGameMessage

use of net.glowstone.net.message.play.game.JoinGameMessage in project Glowstone by GlowstoneMC.

the class GlowPlayer method join.

/**
 * Loads the player's state and sends the messages that are necessary on login.
 *
 * @param session the player's session
 * @param reader  the source of the player's saved state
 */
public void join(GlowSession session, PlayerReader reader) {
    String type = world.getWorldType().getName().toLowerCase();
    reader.readData(this);
    reader.close();
    int gameMode = getGameMode().getValue();
    session.send(new JoinGameMessage(getEntityId(), world.isHardcore(), gameMode, // TODO: determine previous gamemode
    -1, server.getWorlds().stream().map(World::getName).toArray(String[]::new), world.getName(), world.getSeedHash(), server.getMaxPlayers(), world.getViewDistance(), world.getGameRuleMap().getBoolean(GameRules.REDUCED_DEBUG_INFO), !world.getGameRuleMap().getBoolean(GameRules.DO_IMMEDIATE_RESPAWN), // TODO: Debug worlds
    false, world.getWorldType() == WorldType.FLAT));
    // send server brand and supported plugin channels
    Message pluginMessage = PluginMessage.fromString("minecraft:brand", server.getName());
    if (pluginMessage != null) {
        session.send(pluginMessage);
    }
    sendSupportedChannels();
    joinTime = System.currentTimeMillis();
    // Add player to list of online players
    getServer().setPlayerOnline(this, true);
    // save data back out
    saveData();
    // stream the initial set of blocks
    streamBlocks();
    sendWeather();
    sendRainDensity();
    sendSkyDarkness();
    getServer().sendPlayerAbilities(this);
    // send initial location
    session.send(new PositionRotationMessage(location));
    // send initial velocity
    session.send(new EntityVelocityMessage(getEntityId(), velocity));
    // send initial health
    sendHealth();
    // send gamemode defaults
    setGameModeDefaults();
    // send held item
    getSession().send(new HeldItemMessage(getInventory().getHeldItemSlot()));
    // send xp bar
    sendExperience();
    session.send(world.getWorldBorder().createMessage());
    sendTime();
    // set our compass target
    setCompassTarget(world.getSpawnLocation());
    scoreboard = server.getScoreboardManager().getMainScoreboard();
    scoreboard.subscribe(this);
    invMonitor = new InventoryMonitor(getOpenInventory());
    // send inventory contents
    updateInventory();
    session.send(recipeMonitor.createInitMessage());
    if (!server.getResourcePackUrl().isEmpty()) {
        setResourcePack(server.getResourcePackUrl(), server.getResourcePackHash());
    }
}
Also used : JoinGameMessage(net.glowstone.net.message.play.game.JoinGameMessage) TitleMessage(net.glowstone.net.message.play.game.TitleMessage) EntityMetadataMessage(net.glowstone.net.message.play.entity.EntityMetadataMessage) OpenWindowMessage(net.glowstone.net.message.play.inv.OpenWindowMessage) BlockBreakAnimationMessage(net.glowstone.net.message.play.game.BlockBreakAnimationMessage) WindowPropertyMessage(net.glowstone.net.message.play.inv.WindowPropertyMessage) UpdateBlockEntityMessage(net.glowstone.net.message.play.game.UpdateBlockEntityMessage) RespawnMessage(net.glowstone.net.message.play.game.RespawnMessage) EntityVelocityMessage(net.glowstone.net.message.play.entity.EntityVelocityMessage) PositionRotationMessage(net.glowstone.net.message.play.game.PositionRotationMessage) HealthMessage(net.glowstone.net.message.play.game.HealthMessage) PluginMessage(net.glowstone.net.message.play.game.PluginMessage) SetWindowSlotMessage(net.glowstone.net.message.play.inv.SetWindowSlotMessage) PlayEffectMessage(net.glowstone.net.message.play.game.PlayEffectMessage) BlockChangeMessage(net.glowstone.net.message.play.game.BlockChangeMessage) MultiBlockChangeMessage(net.glowstone.net.message.play.game.MultiBlockChangeMessage) UnloadChunkMessage(net.glowstone.net.message.play.game.UnloadChunkMessage) StateChangeMessage(net.glowstone.net.message.play.game.StateChangeMessage) SpawnPositionMessage(net.glowstone.net.message.play.game.SpawnPositionMessage) ExperienceMessage(net.glowstone.net.message.play.game.ExperienceMessage) NamedSoundEffectMessage(net.glowstone.net.message.play.game.NamedSoundEffectMessage) UserListHeaderFooterMessage(net.glowstone.net.message.play.game.UserListHeaderFooterMessage) HeldItemMessage(net.glowstone.net.message.play.inv.HeldItemMessage) MapDataMessage(net.glowstone.net.message.play.game.MapDataMessage) StopSoundMessage(net.glowstone.net.message.play.game.StopSoundMessage) CloseWindowMessage(net.glowstone.net.message.play.inv.CloseWindowMessage) ChunkDataMessage(net.glowstone.net.message.play.game.ChunkDataMessage) TimeMessage(net.glowstone.net.message.play.game.TimeMessage) Message(com.flowpowered.network.Message) SetWindowContentsMessage(net.glowstone.net.message.play.inv.SetWindowContentsMessage) PlayParticleMessage(net.glowstone.net.message.play.game.PlayParticleMessage) ResourcePackSendMessage(net.glowstone.net.message.play.player.ResourcePackSendMessage) DestroyEntitiesMessage(net.glowstone.net.message.play.entity.DestroyEntitiesMessage) JoinGameMessage(net.glowstone.net.message.play.game.JoinGameMessage) SignEditorMessage(net.glowstone.net.message.play.game.SignEditorMessage) SetPassengerMessage(net.glowstone.net.message.play.entity.SetPassengerMessage) EntityAnimationMessage(net.glowstone.net.message.play.entity.EntityAnimationMessage) TextMessage(net.glowstone.util.TextMessage) UpdateSignMessage(net.glowstone.net.message.play.game.UpdateSignMessage) UserListItemMessage(net.glowstone.net.message.play.game.UserListItemMessage) ChatMessage(net.glowstone.net.message.play.game.ChatMessage) PositionRotationMessage(net.glowstone.net.message.play.game.PositionRotationMessage) InventoryMonitor(net.glowstone.inventory.InventoryMonitor) EntityVelocityMessage(net.glowstone.net.message.play.entity.EntityVelocityMessage) HeldItemMessage(net.glowstone.net.message.play.inv.HeldItemMessage)

Example 2 with JoinGameMessage

use of net.glowstone.net.message.play.game.JoinGameMessage in project Glowstone by GlowstoneMC.

the class JoinGameCodec method decode.

@Override
public JoinGameMessage decode(ByteBuf buffer) throws IOException {
    int id = buffer.readInt();
    boolean hardcore = buffer.readBoolean();
    int mode = buffer.readByte();
    int previousMode = buffer.readByte();
    String[] worlds = new String[readVarInt(buffer)];
    for (int i = 0; i < worlds.length; i++) {
        worlds[i] = readUTF8(buffer);
    }
    // TODO: Decode dimension info from NBT
    CompoundTag dimensionCodec = readCompound(buffer);
    CompoundTag dimension = readCompound(buffer);
    String currentWorld = readUTF8(buffer);
    byte[] seedHash = buffer.readBytes(8).array();
    int maxPlayers = readVarInt(buffer);
    int viewDistance = readVarInt(buffer);
    boolean reducedDebugInfo = buffer.readBoolean();
    boolean enableRespawnScreen = buffer.readBoolean();
    boolean debug = buffer.readBoolean();
    boolean flat = buffer.readBoolean();
    return new JoinGameMessage(id, hardcore, mode, previousMode, worlds, currentWorld, seedHash, maxPlayers, viewDistance, reducedDebugInfo, enableRespawnScreen, debug, flat);
}
Also used : JoinGameMessage(net.glowstone.net.message.play.game.JoinGameMessage) CompoundTag(net.glowstone.util.nbt.CompoundTag)

Aggregations

JoinGameMessage (net.glowstone.net.message.play.game.JoinGameMessage)2 Message (com.flowpowered.network.Message)1 InventoryMonitor (net.glowstone.inventory.InventoryMonitor)1 DestroyEntitiesMessage (net.glowstone.net.message.play.entity.DestroyEntitiesMessage)1 EntityAnimationMessage (net.glowstone.net.message.play.entity.EntityAnimationMessage)1 EntityMetadataMessage (net.glowstone.net.message.play.entity.EntityMetadataMessage)1 EntityVelocityMessage (net.glowstone.net.message.play.entity.EntityVelocityMessage)1 SetPassengerMessage (net.glowstone.net.message.play.entity.SetPassengerMessage)1 BlockBreakAnimationMessage (net.glowstone.net.message.play.game.BlockBreakAnimationMessage)1 BlockChangeMessage (net.glowstone.net.message.play.game.BlockChangeMessage)1 ChatMessage (net.glowstone.net.message.play.game.ChatMessage)1 ChunkDataMessage (net.glowstone.net.message.play.game.ChunkDataMessage)1 ExperienceMessage (net.glowstone.net.message.play.game.ExperienceMessage)1 HealthMessage (net.glowstone.net.message.play.game.HealthMessage)1 MapDataMessage (net.glowstone.net.message.play.game.MapDataMessage)1 MultiBlockChangeMessage (net.glowstone.net.message.play.game.MultiBlockChangeMessage)1 NamedSoundEffectMessage (net.glowstone.net.message.play.game.NamedSoundEffectMessage)1 PlayEffectMessage (net.glowstone.net.message.play.game.PlayEffectMessage)1 PlayParticleMessage (net.glowstone.net.message.play.game.PlayParticleMessage)1 PluginMessage (net.glowstone.net.message.play.game.PluginMessage)1