use of net.glowstone.inventory.InventoryMonitor 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.inventory.InventoryMonitor in project Glowstone by GlowstoneMC.
the class GlowPlayer method openInventory.
@Override
public void openInventory(InventoryView view) {
session.send(new CloseWindowMessage(invMonitor.getId()));
super.openInventory(view);
invMonitor = new InventoryMonitor(getOpenInventory());
int viewId = invMonitor.getId();
if (viewId != 0) {
InventoryOpenEvent event = EventFactory.getInstance().callEvent(new InventoryOpenEvent(view));
if (event.isCancelled()) {
// close the inventory but don't fire the InventoryCloseEvent
resetInventoryView();
return;
}
String title = view.getTitle();
boolean defaultTitle = Objects.equals(view.getType().getDefaultTitle(), title);
if (view.getTopInventory() instanceof PlayerInventory && defaultTitle) {
title = ((PlayerInventory) view.getTopInventory()).getHolder().getName();
}
Message open = new OpenWindowMessage(viewId, invMonitor.getType(), title, ((GlowInventory) view.getTopInventory()).getRawSlots());
session.send(open);
}
updateInventory();
}
Aggregations