use of net.glowstone.net.message.play.inv.HeldItemMessage 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());
}
}
use of net.glowstone.net.message.play.inv.HeldItemMessage in project Dragonet-Legacy by DragonetMC.
the class BaseProtocolTest method testProtocol.
@Test
public void testProtocol() throws Exception {
Map<Class<? extends Message>, Codec.CodecRegistration> inboundMap = getField(inboundCodecs, CodecLookupService.class, "messages");
Map<Class<? extends Message>, Codec.CodecRegistration> outboundMap = getField(outboundCodecs, CodecLookupService.class, "messages");
Set<Class<? extends Message>> inboundSet = new HashSet<>(inboundMap.keySet());
Set<Class<? extends Message>> outboundSet = new HashSet<>(outboundMap.keySet());
for (Message message : testMessages) {
boolean any = false;
Class<? extends Message> clazz = message.getClass();
// test inbound
Codec.CodecRegistration registration = inboundCodecs.find(clazz);
if (registration != null) {
inboundSet.remove(clazz);
checkCodec(registration, message);
any = true;
}
// test outbound
registration = outboundCodecs.find(clazz);
if (registration != null) {
outboundSet.remove(clazz);
checkCodec(registration, message);
any = true;
}
assertTrue("Codec missing for: " + message, any);
}
// special case: HeldItemMessage is excluded from tests
inboundSet.remove(HeldItemMessage.class);
outboundSet.remove(HeldItemMessage.class);
assertTrue("Did not test inbound classes: " + inboundSet, inboundSet.isEmpty());
// todo: enable the outbound check for PlayProtocol
if (!(protocol instanceof PlayProtocol)) {
assertTrue("Did not test outbound classes: " + outboundSet, outboundSet.isEmpty());
}
}
use of net.glowstone.net.message.play.inv.HeldItemMessage in project Glowstone by GlowstoneMC.
the class BaseProtocolTest method testProtocol.
@Test
public void testProtocol() throws Exception {
Map<Class<? extends Message>, Codec.CodecRegistration> inboundMap = getField(inboundCodecs, CodecLookupService.class, "messages");
Map<Class<? extends Message>, Codec.CodecRegistration> outboundMap = getField(outboundCodecs, CodecLookupService.class, "messages");
Set<Class<? extends Message>> inboundSet = new HashSet<>(inboundMap.keySet());
Set<Class<? extends Message>> outboundSet = new HashSet<>(outboundMap.keySet());
for (Message message : testMessages) {
boolean any = false;
Class<? extends Message> clazz = message.getClass();
// test inbound
Codec.CodecRegistration registration = inboundCodecs.find(clazz);
if (registration != null) {
inboundSet.remove(clazz);
checkCodec(registration, message);
any = true;
}
// test outbound
registration = outboundCodecs.find(clazz);
if (registration != null) {
outboundSet.remove(clazz);
checkCodec(registration, message);
any = true;
}
assertThat("Codec missing for: " + message, any, is(true));
}
// special case: HeldItemMessage is excluded from tests
inboundSet.remove(HeldItemMessage.class);
outboundSet.remove(HeldItemMessage.class);
assertThat("Did not test inbound classes: " + inboundSet, inboundSet.isEmpty(), is(true));
// todo: enable the outbound check for PlayProtocol
if (!(protocol instanceof PlayProtocol)) {
assertThat("Did not test outbound classes: " + outboundSet, outboundSet.isEmpty(), is(true));
}
}
Aggregations