Skip to content

Commit be601b3

Browse files
committed
Merge branch 'master' of https://github.com/AlphaBs/CmlLib.Core
2 parents 60c494d + 70d022e commit be601b3

File tree

2 files changed

+73
-116
lines changed

2 files changed

+73
-116
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
This library is minecraft launcher library for .NET Core and .NET Framework
66
Support all version, with Forge
77

8+
[한국어 README](https://github.com/AlphaBs/CmlLib.Core/blob/master/docs/README-kr.md)
9+
한국어 문서는 업데이트가 느립니다.
10+
811
## What is different between CmlLib.Core and [CmlLib](https://github.com/AlphaBs/MinecraftLauncherLibrary)?
912
CmlLib.Core is developed using .NET Core and support crossplatform. but CmlLib doesn't support it and will be deprecated.
1013

@@ -23,8 +26,9 @@ MIT License
2326

2427
## Dependency
2528

26-
Newtonsoft.Json
27-
SharpZipLib
29+
Newtonsoft.Json 12.0.3
30+
SharpZipLib 1.2.0
31+
LZMA-SDK 19.0.0
2832

2933
## Functions
3034

docs/README-kr.md

Lines changed: 67 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,166 +1,119 @@
1-
# Csharp 마인크래프트 런처 라이브러리
1+
# CmlLib.Core
22

3-
## CmlLib 1.0.0
4-
5-
모든 게임 버전 지원, 포지 지원
6-
윈도우만 지원
3+
## Minecraft Launcher Library
4+
5+
.NET Core와 .NET Framework 를 지원하는 마인크래프트 런처 라이브러리입니다.
6+
포지를 포함한 모든 버전 실행 가능합니다
7+
8+
## CmlLib.Core와 [CmlLib](https://github.com/AlphaBs/MinecraftLauncherLibrary)의 차이점?
9+
CmlLib.Core 는 .NET Core 에서도 동작하도록 만들어졌으며, 윈도우 뿐만 아니라 다른 운영체제에서도 작동합니다.
10+
기존 라이브러리(MinecraftLauncherLibrary)는 더이상 개발하지 않습니다.
711

812
## Contacts
913

1014
Email : ksi123456ab@naver.com
11-
Discord : ksi123456ab#3719
15+
Discord : ksi123456ab#3719
1216

1317
## License
1418

15-
MIT LICENSE
16-
LICENSE 파일 참고
19+
MIT License
1720

1821
## Crossplatform
1922

20-
이 라이브러리는 윈도우만 지원합니다.
21-
크로스플랫폼 라이브러리가 필요하다면 pml을 사용하세요.
22-
[pml github](https://github.com/AlphaBs/pml)
23+
.NET Core 버전은 크로스플랫폼을 지원합니다. Windows10, Ubuntu 18.04, macOS Catalina 에서 테스트하였습니다.
2324

24-
## Dependency
25+
## 종속성
2526

26-
Newtonsoft.Json
27-
DotNetZip
27+
Newtonsoft.Json 12.0.3
28+
SharpZipLib 1.2.0
29+
LZMA-SDK 19.0.0
2830

2931
## Functions
3032

3133
- [x] 정품/복돌 로그인
3234
- [x] 게임 서버에서 게임 파일 다운로드
33-
- [x] 모든 버전 실행 (1.14.4 까지 태스트)
35+
- [x] 모든 버전 실행 (1.15.2 까지 테스트)
3436
- [x] 포지, 옵티파인 등 커스텀 버전 실행 가능
3537
- [x] 자바 런타임 다운로드
3638
- [x] 다양한 실행 옵션 (서버 주소, 창 크기, 런처 이름 등)
37-
- [ ] .NET CORE 로 포팅 (크로스플랫폼) ([pml](https://github.com/AlphaBs/pml))
38-
39-
## How To Use
40-
41-
아래는 간략한 사용방법만 소개합니다. 자세한 정보는 wiki로
39+
- [x] 크로스플랫폼 지원
4240

43-
**[Sample Code](https://github.com/AlphaBs/MinecraftLauncherLibrary/wiki/Sample-Code)**
41+
## 사용법
4442

45-
### **1. 준비**
43+
더 자세한 내용은 위키에 있습니다. [wiki](https://github.com/AlphaBs/CmlLib.Core/wiki)
4644

47-
Nuget 패키지 관리자에서 'CustomMinecraftLauncher' 를 검색하고 설치하세요.
48-
혹은 release 에서 dll 파일들(CmlLib.dll, Newtonsoft.Json.dll, DotNetZip.dll)을 다운받고 참조 추가를 해주세요.
45+
**[샘플 코드](https://github.com/AlphaBs/CmlLib.Core/wiki/Sample-Code)**
4946

50-
소스 최상단에 아래 코드를 입력하세요 :
47+
### **설치**
5148

49+
Nuget Package `CmlLib.Core` 를 설치하세요.
50+
혹은 dll 파일을 직접 다운로드한 후 참조 추가하세요 : [Releases](https://github.com/AlphaBs/CmlLib.Core/releases)
5251

53-
using CmlLib.Launcher;
52+
소스코드 최상단에 아래 코드를 입력하세요:
5453

55-
### **2. 게임 폴더**
54+
using CmlLib;
55+
using CmlLib.Core;
5656

57-
라이브러리 기능을 사용하기 전에 게임 폴더 설정을 반드시 해주세요.
57+
### **예시 코드**
5858

59-
Minecraft.Initialize("게임폴더 경로");
59+
**로그인**
6060

61-
위 코드가 게임 파일 다운로드, 프로필 로드, 게임 세션 저장, 실행 등에 필요한 게임 폴더를 설정합니다.
62-
**절대 경로를 입력해 주세요.**
61+
var login = new MLogin();
62+
var session = login.TryAutoLogin(); // 'session' 변수는 실행할 때 LaunchOption 에서 사용됩니다.
6363

64-
### **3. 로그인**
65-
66-
MLogin login = new MLogin();
67-
MSession session = null;
68-
69-
session = login.TryAutoLogin();
70-
if (session.Result != MLoginResult.Success)
64+
if (session.Result != MLoginResult.Success) // 자동 로그인 실패시
7165
{
72-
session = login.Authenticate(
73-
"모장이메일",
74-
"비밀번호");
66+
var email = Console.ReadLine();
67+
var pw = Console.ReadLine();
68+
session = login.Authenticate(email, pw);
7569

76-
if (session.result != MLoginResult.Success)
77-
throw new Exception("로그인 실패 : " + session.result.ToString());
70+
if (session.Result != MLoginResult.Success)
71+
throw new Exception(session.Result.ToString()) // 로그인 실패
7872
}
7973

80-
Console.WriteLine("Hello, " + session.Username);
81-
82-
session 변수에 로그인 결과가 저장됩니다.
83-
참고 : 모장 이메일 대신 닉네임을 입력하는 옛날 로그인 방식은 사용할 수 없습니다.
84-
85-
혹은 복돌 로그인도 사용할 수 있습니다 :
74+
**복돌 로그인**
8675

87-
MSession session = MSession.GetOfflineSession("닉네임");
76+
var session = MSession.GetOfflineSession("USERNAME"); // 'session' 변수는 실행할 때 LaunchOption 에서 사용됩니다.
8877

89-
### **4. 프로필 불러오기**
78+
**실행**
9079

91-
프로필은 런처에서 사용하는 다양한 정보가 포함되어 있습니다. 모든 버전은 프로필을 가지고 있으며, (GameDirectory)₩versions₩(any-version)₩(version-name).json 파일 혹은 모장 서버에 저장되어 있습니다.
80+
//var path = new Minecraft("게임 폴더 경로");
81+
var path = Minecraft.GetOSDefaultPath(); // 기본 게임 폴더
9282

93-
MProfileInfo 은 프로필의 메타데이터를 나타내는 클래스입니다.
94-
95-
MProfileInfo[] infos = MProfileInfo.GetProfiles();
96-
foreach (var item in infos)
83+
var launcher = new CmlLib.CMLauncher(path);
84+
launcher.ProgressChanged += (s, e) =>
9785
{
98-
Console.WriteLine(item.Type + " : " + item.Name);
99-
}
100-
101-
위 코드는 모장 서버에 저장된 프로필과 게임 폴더에 저장된 모든 프로필을 표시합니다.
102-
103-
### **5. 프로필 선택, 파싱**
104-
105-
프로필을 사용하기 위해서는 프로필을 파싱해야 합니다. 아래 코드는 프로필을 찾고 파싱해서 반환해줍니다.
106-
107-
MProfile profile = MProfile.FindProfile(infos, "1.14.4");
108-
109-
### **6. 게임 파일 확인/다운로드**
110-
111-
MDownloader downloader = new MDownloader(profile);
112-
downloader.ChangeFile += change_file;
113-
downloader.ChangeProgress += change_progress;
114-
downloader.DownloadAll();
115-
116-
다운로드 이벤트 헨들러 :
117-
118-
private void Downloader_ChangeProgress(object sender, System.ComponentModel.ProgressChangedEventArgs e)
86+
Console.WriteLine("{0}%", e.ProgressPercentage);
87+
};
88+
launcher.FileChanged += (e) =>
11989
{
120-
// 다운로드하는 파일의 진행률
121-
// 20%, 30%, 80%, ...
122-
Console.WriteLine("{0}%", e.ProgressPercentage);
123-
}
124-
125-
private void Downloader_ChangeFile(DownloadFileChangedEventArgs e)
90+
Console.WriteLine("[{0}] {1} - {2}/{3}", e.FileKind.ToString(), e.FileName, e.ProgressedFileCount, e.TotalFileCount);
91+
};
92+
93+
foreach (var item in launcher.ProfileInfos)
12694
{
127-
// 다운로드하는 파일이 바뀌었을때
128-
// [Library] hi.jar - 3/51
129-
Console.WriteLine("[{0}] {1} - {2}/{3}", e.FileKind.ToString(), e.FileName, e.ProgressedFileCount, e.TotalFileCount);
95+
Console.WriteLine(item.Name);
13096
}
13197

132-
DownloadAll() 메서드는 게임 파일의 존재 여부, 무결성을 검사하고 올바르지 않은 파일이라면 게임 파일을 모장 서버에서 다운로드하는 역할을 합니다.
133-
134-
### **7. 게임 인수 생성 후 실행**
135-
136-
var option = new MLaunchOption()
98+
var launchOption = new MLaunchOption
13799
{
138-
// 필수 인수
139-
StartProfile = profile,
140-
JavaPath = "java.exe", //자바 경로 설정
141-
MaximumRamMb = 1024, // MB
142-
Session = session,
143-
144-
// 필수 아님
145-
ServerIP = "", // 서버로 바로 접속
146-
LauncherName = "", // 게임 메인화면에 런처 이름 표시
147-
CustomJavaParameter = "" // JVM 인수 설정
148-
};
149-
150-
var launch = new MLaunch(option);
151-
var process = launch.GetProcess();
152-
process.Start();
153-
154-
게임 옵션을 설정하고 실행하면 됩니다.
155-
156-
### **8. More Information**
100+
MaximumRamMb = 1024,
101+
Session = session, // 로그인 세션. ex) Session = MSession.GetOfflineSession("hello")
157102

158-
**[Sample Code](https://github.com/AlphaBs/MinecraftLauncherLibrary/wiki/Sample-Code)**
159-
160-
포지 실행 : 위 코드대로 만들면 실행 됩니다.
103+
//LauncherName = "MyLauncher",
104+
//ScreenWidth = 1600,
105+
//ScreenHeigth = 900,
106+
//ServerIp = "mc.hypixel.net"
107+
};
161108

162-
버그 : issue 에서 알려주세요.
109+
// 포지 실행
110+
//var process = launcher.Launch("1.12.2", "14.23.5.2768", launchOption);
163111

112+
// 바닐라 실행
113+
var process = launcher.Launch("1.15.2", launchOption);
164114

115+
process.Start();
165116

166117

118+
### More Information
119+
Go to [wiki](https://github.com/AlphaBs/CmlLib.Core/wiki/MLaunchOption)

0 commit comments

Comments
 (0)