Skip to content

Latest commit

 

History

History
148 lines (125 loc) · 5.23 KB

README.zh_CN.md

File metadata and controls

148 lines (125 loc) · 5.23 KB

JMCCC

Maven Central Gitter

一个用来下载并启动Minecraft的强大的开源类库。

许可证

JMCCC使用MIT许可证

功能

  • 启动各个版本的Minecraft
  • 可拓展的登录系统
    • 默认支持Yggdrasil/离线
  • 下载各个版本的Minecraft
    • 支持Forge/Liteloader下载
      • 支持Liteloader的快照版本
    • 可自定义下载源
    • 异步的任务系统
    • 支持阻塞式IO(BIO)和非阻塞式IO(NIO)
    • 支持缓存
      • 可以使用Ehcache或者javax.cache作为底层
      • 对于不同文件可以指定不同缓存策略
  • 支持Mojang API
    • 查询玩家信息
    • 获取/上传皮肤(及披风、Elytra)
    • 查询账号信息
    • 查询改名历史
    • 检查服务器是否被封禁(Mojang封禁不遵守EULA的服务器)

快速开始

依赖库

依赖 说明
dev.3-3:jmccc 提供启动Minecraft的功能
dev.3-3:jmccc-yggdrasil-authenticator 提供Yggdrasil验证功能
dev.3-3:jmccc-mcdownloader 提供下载Minecraft的功能
dev.3-3:jmccc-mojang-api Mojang API客户端

JMCCC的正式版本(release) 已上传至 Maven Central:

https://repo1.maven.org/maven2/

快照版本(snapshot)的Maven仓库:

https://s01.oss.sonatype.org/content/repositories/snapshots/

启动Minecraft

MinecraftDirectory dir = new MinecraftDirectory("/home/user/.minecraft");
Launcher launcher = LauncherBuilder.buildDefault();
launcher.launch(new LaunchOption("1.10", YggdrasilAuthenticator.password("<email>", "<password>"), dir));

如果需要离线验证的话,可以将YggdrasilAuthenticator.password("<email>", "<password>")换成new OfflineAuthenticator("<username>")

下载Minecraft

MinecraftDirectory dir = new MinecraftDirectory("/home/user/.minecraft");
MinecraftDownloader downloader = MinecraftDownloaderBuilder.buildDefault();
downloader.downloadIncrementally(dir, "1.10", new CallbackAdapter<Version>() {
	
	@Override
	public void failed(Throwable e) {
		// 任务失败时
	}
	
	@Override
	public void done(Version result) {
		// 任务成功完成时
	}
	
	@Override
	public void cancelled() {
		// 任务取消时
	}
	
	@Override
	public <R> DownloadCallback<R> taskStart(DownloadTask<R> task) {
		// 派生出一个子任务时
		// 在这里返回一个Callback便可以监视该子任务的状态
		return new CallbackAdapter<R>() {

			@Override
			public void done(R result) {
				// 子任务完成时
			}

			@Override
			public void failed(Throwable e) {
				// 子任务失败时
			}

			@Override
			public void cancelled() {
				// 子任务取消时
			}

			@Override
			public void updateProgress(long done, long total) {
				// 子任务的下载进度更新时
			}

			@Override
			public void retry(Throwable e, int current, int max) {
				// 子任务下载出错,并且将要重试时
				// 注:下载出错不代表任务失败,只有多次重试都出错后才算失败
			}
		};
	}
});

如果说不需要跟踪任务进度,那么传入一个null callback即可。 如果说不需要跟踪子任务的进度,那么在taskStart()里返回null即可。

当不再使用downloader时,需要关闭它:

downloader.shutdown();

下载Forge/Liteloader

MinecraftDirectory dir = new MinecraftDirectory("/home/user/.minecraft");
ForgeDownloadProvider forgeProvider = new ForgeDownloadProvider();
LiteloaderDownloadProvider liteloaderProvider = new LiteloaderDownloadProvider();
MinecraftDownloader downloader = MinecraftDownloaderBuilder.create()
	.providerChain(DownloadProviderChain.create()
		.addProvider(forgeProvider)
		.addProvider(liteloaderProvider))
	.build();

downloader.downloadIncrementally(dir, "1.8-forge1.8-11.14.3.1514", new CallbackAdapter<Version>() {...});
downloader.downloadIncrementally(dir, "1.7.10-LiteLoader1.7.10", new CallbackAdapter<Version>() {...});
downloader.download(forgeProvider.forgeVersionList(), new CallbackAdapter<ForgeVersionList>() {...});
downloader.download(liteloaderProvider.liteloaderVersionList(), new CallbackAdapter<LiteloaderVersionList>() {...});

FML参数

JMCCC不像其它一些启动器,JMCCC不会自动添加类似于-Dfml.ignoreInvalidMinecraftCertificates=true-Dfml.ignorePatchDiscrepancies=true之类的FML参数。 所以可能会无法启动一些Forge版本,您可能需要手动添加这些参数。 这些参数都已经在ExtraArgumentsTemplates中被预先定义好了,您只需要引用一下即可。

option.extraJvmArguments().add(ExtraArgumentsTemplates.FML_IGNORE_INVALID_MINECRAFT_CERTIFICATES);
option.extraJvmArguments().add(ExtraArgumentsTemplates.FML_IGNORE_PATCH_DISCREPANCISE);