use of com.mojang.authlib.minecraft.MinecraftSessionService in project SpongeCommon by SpongePowered.
the class MixinPlayerProfileCache method lookupByIds.
@Override
public Map<UUID, Optional<GameProfile>> lookupByIds(Iterable<UUID> uniqueIds) {
checkNotNull(uniqueIds, "unique ids");
Map<UUID, Optional<GameProfile>> result = Maps.newHashMap();
MinecraftSessionService service = SpongeImpl.getServer().getMinecraftSessionService();
for (UUID uniqueId : uniqueIds) {
com.mojang.authlib.GameProfile profile = service.fillProfileProperties(new com.mojang.authlib.GameProfile(uniqueId, ""), true);
if (profile != null && profile.getName() != null && !profile.getName().isEmpty()) {
this.addEntry(profile, null);
result.put(uniqueId, Optional.of((GameProfile) profile));
} else {
// create a dummy profile to avoid future lookups
// if actual user logs in, the profile will be updated during PlayerList#initializeConnectionToPlayer
this.addEntry(new com.mojang.authlib.GameProfile(uniqueId, "[sponge]"), null);
result.put(uniqueId, Optional.empty());
}
}
return result.isEmpty() ? ImmutableMap.of() : ImmutableMap.copyOf(result);
}
use of com.mojang.authlib.minecraft.MinecraftSessionService in project Citizens2 by CitizensDev.
the class NMSImpl method fillProfileProperties.
@Override
public GameProfile fillProfileProperties(GameProfile profile, boolean requireSecure) throws Exception {
if (Bukkit.isPrimaryThread())
throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread.");
MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().ay();
if (!(sessionService instanceof YggdrasilMinecraftSessionService)) {
return sessionService.fillProfileProperties(profile, requireSecure);
}
YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService).getAuthenticationService();
URL url = HttpAuthenticationService.constantURL(getAuthServerBaseUrl() + UUIDTypeAdapter.fromUUID(profile.getId()));
url = HttpAuthenticationService.concatenateURL(url, "unsigned=" + !requireSecure);
MinecraftProfilePropertiesResponse response = (MinecraftProfilePropertiesResponse) MAKE_REQUEST.invoke(auth, url, null, MinecraftProfilePropertiesResponse.class);
if (response == null)
return profile;
GameProfile result = new GameProfile(response.getId(), response.getName());
result.getProperties().putAll(response.getProperties());
profile.getProperties().putAll(response.getProperties());
return result;
}
use of com.mojang.authlib.minecraft.MinecraftSessionService in project SpongeVanilla by SpongePowered.
the class SpongeVanilla method start.
private static void start(String[] args) {
// Attempt to load metadata
MetadataContainer metadata = MetadataContainer.load();
// Register Minecraft plugin container
MinecraftPluginContainer.register();
OptionSet options = VanillaCommandLine.parse(args);
// Note: This launches the server instead of MinecraftServer.main
// Keep command line options up-to-date with Vanilla
Bootstrap.register();
File worldDir = options.has(WORLD_DIR) ? options.valueOf(WORLD_DIR) : new File(".");
YggdrasilAuthenticationService authenticationService = new YggdrasilAuthenticationService(Proxy.NO_PROXY, UUID.randomUUID().toString());
MinecraftSessionService sessionService = authenticationService.createMinecraftSessionService();
GameProfileRepository profileRepository = authenticationService.createProfileRepository();
PlayerProfileCache profileCache = new PlayerProfileCache(profileRepository, new File(worldDir, USER_CACHE_FILE.getName()));
DedicatedServer server = new DedicatedServer(worldDir, DataFixesManager.createFixer(), authenticationService, sessionService, profileRepository, profileCache);
// We force-load NetHandlerPlayServer here.
// Otherwise, VanillaChannelRegistrar causes it to be loaded from
// within the Guice injector (see SpongeVanillaModule), thus swallowing
// any Mixin exception that occurs.
//
// See https://github.com/SpongePowered/SpongeVanilla/issues/235 for a more
// in-depth explanation
NetHandlerPlayServer.class.getName();
final Stage stage = SpongeGuice.getInjectorStage(VanillaLaunch.ENVIRONMENT == DEVELOPMENT ? Stage.DEVELOPMENT : Stage.PRODUCTION);
SpongeImpl.getLogger().debug("Creating injector in stage '{}'", stage);
Guice.createInjector(stage, new SpongeModule(), new SpongeVanillaModule(server, metadata));
if (options.has(WORLD_NAME)) {
server.setFolderName(options.valueOf(WORLD_NAME));
}
if (options.has(PORT)) {
server.setServerPort(options.valueOf(PORT));
}
if (options.has(BONUS_CHEST)) {
server.canCreateBonusChest(true);
}
server.startServerThread();
Runtime.getRuntime().addShutdownHook(new Thread(server::stopServer, "Server Shutdown Thread"));
}
use of com.mojang.authlib.minecraft.MinecraftSessionService in project Citizens2 by CitizensDev.
the class NMSImpl method fillProfileProperties.
@Override
public GameProfile fillProfileProperties(GameProfile profile, boolean requireSecure) throws Exception {
if (Bukkit.isPrimaryThread())
throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread.");
MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().aD();
if (!(sessionService instanceof YggdrasilMinecraftSessionService)) {
return sessionService.fillProfileProperties(profile, requireSecure);
}
YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService).getAuthenticationService();
URL url = HttpAuthenticationService.constantURL(getAuthServerBaseUrl() + UUIDTypeAdapter.fromUUID(profile.getId()));
url = HttpAuthenticationService.concatenateURL(url, "unsigned=" + !requireSecure);
MinecraftProfilePropertiesResponse response = (MinecraftProfilePropertiesResponse) MAKE_REQUEST.invoke(auth, url, null, MinecraftProfilePropertiesResponse.class);
if (response == null)
return profile;
GameProfile result = new GameProfile(response.getId(), response.getName());
result.getProperties().putAll(response.getProperties());
profile.getProperties().putAll(response.getProperties());
return result;
}
use of com.mojang.authlib.minecraft.MinecraftSessionService in project Citizens2 by CitizensDev.
the class NMSImpl method fillProfileProperties.
@Override
public GameProfile fillProfileProperties(GameProfile profile, boolean requireSecure) throws Exception {
if (Bukkit.isPrimaryThread())
throw new IllegalStateException("NMS.fillProfileProperties cannot be invoked from the main thread.");
MinecraftSessionService sessionService = ((CraftServer) Bukkit.getServer()).getServer().az();
if (!(sessionService instanceof YggdrasilMinecraftSessionService)) {
return sessionService.fillProfileProperties(profile, requireSecure);
}
YggdrasilAuthenticationService auth = ((YggdrasilMinecraftSessionService) sessionService).getAuthenticationService();
URL url = HttpAuthenticationService.constantURL(getAuthServerBaseUrl() + UUIDTypeAdapter.fromUUID(profile.getId()));
url = HttpAuthenticationService.concatenateURL(url, "unsigned=" + !requireSecure);
MinecraftProfilePropertiesResponse response = (MinecraftProfilePropertiesResponse) MAKE_REQUEST.invoke(auth, url, null, MinecraftProfilePropertiesResponse.class);
if (response == null)
return profile;
GameProfile result = new GameProfile(response.getId(), response.getName());
result.getProperties().putAll(response.getProperties());
profile.getProperties().putAll(response.getProperties());
return result;
}
Aggregations