nsisogf
本帖最后由 nsisogf 于 2018-9-9 00:39 编辑

请在上方目录选择章目,本教程持续更新  (最新更新日期:2018.8.26 21:30)
阅读本教程需要一定的编程开发基础,教程没有编程语言限制,只要是高级语言,本教材都适用。因为考虑到大部分开发者使用JAVA/C#/C语言进行开发,本教程将使用C#进行代码示范,其逻辑与其他语言是相同的
在学习时,切勿使用可视化界面,学习时应使用Console(命令台)进行学习,避免窗口布局等繁杂操作

在学习前推荐阅读的内容:
- Minecraft开发维基
- JVM详解
- Json结构


2021.12 数据,可能有更多内容
请在上方目录选择章目,本教程持续更新(最新更新日期:2018.8.26 21:30)
阅读本教程需要一定的编程开发基础,教程没有编程语言限制,只要是高级语言,本教材都适用。因为考虑到大部分开发者使用JAVA/C#/C语言进行开发,本教程将使用C#进行代码示范,其逻辑与其他语言是相同的
在学习时,切勿使用可视化界面,学习时应使用Console(命令台)进行学习,避免窗口布局等繁杂操作


在学习前推荐阅读的内容:
- Minecraft开发维基
- JVM详解
- Json结构



1.1-Minecraft启动方式的基本概念
Minecraft的编写语言基于JAVA。其启动,离不开JVM(JAVA虚拟机)
要使Minecraft正常启动。就必须给JVM传入一个完整并相对于Minecraft可用的启动参数。
这个参数,需要通过启动器生成。而且启动器需要处理游戏文件(检查完整,解压),登陆等功能。也就是说,启动器要做到以下流程
读取版本引导文件 => 解析引导文件获取版本信息=> (可选)处理用户登陆 => 处理游戏文件 => 根据解析的版本信息生成启动参数 => 传递给JVM启动


启动器给JVM传递启动参数,是基于命令行传递的
你现在就可以体验命令行是如何传递参数的。在装有JAVA的电脑里,打开你的CMD控制台,输入java -version并回车
你会发现java会返回给你他自身的版本信息(版本号,位数等信息),这里,java就是执行的程序,-version就是传递过去的参数,意思就是叫JAVA返回version信息


听这么一说,觉得启动minecraft很简单吗?来看看1.7.10的JVM启动参数(cmd)

代码:

  1. @echo off
  2. set appdata=[游戏路径]\.minecraft

  3. "[JAVA路径]"
  4. -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
  5. -XX:+UseG1GC
  6. -XX:-UseAdaptiveSizePolicy
  7. -XX:-OmitStackTraceInFastThrow
  8. -Xmn128m
  9. -Xmx3072m
  10. -Djava.library.path=[游戏路径]\.minecraft\versions\1.7.10\1.7.10-natives
  11. -Dfml.ignoreInvalidMinecraftCertificates=true
  12. -Dfml.ignorePatchDiscrepancies=true
  13. -cp=
  14.     [游戏路径]\.minecraft\libraries\com\mojang\netty\1.6\netty-1.6.jar;
  15.     [游戏路径]\.minecraft\libraries\com\mojang\realms\1.3.5\realms-1.3.5.jar;
  16.     [游戏路径]\.minecraft\libraries\org\apache\commons\commons-compress\1.8.1\commons-compress-1.8.1.jar;
  17.     [游戏路径]\.minecraft\libraries\org\apache\httpcomponents\httpclient\4.3.3\httpclient-4.3.3.jar;
  18.     [游戏路径]\.minecraft\libraries\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;
  19.     [游戏路径]\.minecraft\libraries\org\apache\httpcomponents\httpcore\4.3.2\httpcore-4.3.2.jar;
  20.     [游戏路径]\.minecraft\libraries\java3d\vecmath\1.3.1\vecmath-1.3.1.jar;
  21.     [游戏路径]\.minecraft\libraries\net\sf\trove4j\trove4j\3.0.3\trove4j-3.0.3.jar;
  22.     [游戏路径]\.minecraft\libraries\com\ibm\icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar;
  23.     [游戏路径]\.minecraft\libraries\net\sf\jopt-simple\jopt-simple\4.5\jopt-simple-4.5.jar;
  24.     [游戏路径]\.minecraft\libraries\com\paulscode\codecjorbis\20101023\codecjorbis-20101023.jar;
  25.     [游戏路径]\.minecraft\libraries\com\paulscode\codecwav\20101023\codecwav-20101023.jar;
  26.     [游戏路径]\.minecraft\libraries\com\paulscode\libraryjavasound\20101123\libraryjavasound-20101123.jar;
  27.     [游戏路径]\.minecraft\libraries\com\paulscode\librarylwjglopenal\20100824\librarylwjglopenal-20100824.jar;
  28.     [游戏路径]\.minecraft\libraries\com\paulscode\soundsystem\20120107\soundsystem-20120107.jar;
  29.     [游戏路径]\.minecraft\libraries\io\netty\netty-all\4.0.10.Final\netty-all-4.0.10.Final.jar;
  30.     [游戏路径]\.minecraft\libraries\com\google\guava\guava\15.0\guava-15.0.jar;
  31.     [游戏路径]\.minecraft\libraries\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;
  32.     [游戏路径]\.minecraft\libraries\commons-io\commons-io\2.4\commons-io-2.4.jar;
  33.     [游戏路径]\.minecraft\libraries\commons-codec\commons-codec\1.9\commons-codec-1.9.jar;
  34.     [游戏路径]\.minecraft\libraries\net\java\jinput\jinput\2.0.5\jinput-2.0.5.jar;
  35.     [游戏路径]\.minecraft\libraries\net\java\jutils\jutils\1.0.0\jutils-1.0.0.jar;
  36.     [游戏路径]\.minecraft\libraries\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar;
  37.     [游戏路径]\.minecraft\libraries\com\mojang\authlib\1.5.21\authlib-1.5.21.jar;
  38.     [游戏路径]\.minecraft\libraries\org\apache\logging\log4j\log4j-api\2.0-beta9\log4j-api-2.0-beta9.jar;
  39.     [游戏路径]\.minecraft\libraries\org\apache\logging\log4j\log4j-core\2.0-beta9\log4j-core-2.0-beta9.jar;
  40.     [游戏路径]\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl\2.9.1\lwjgl-2.9.1.jar;
  41.     [游戏路径]\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl_util\2.9.1\lwjgl_util-2.9.1.jar;
  42.     [游戏路径]\.minecraft\libraries\tv\twitch\twitch\5.16\twitch-5.16.jar;
  43.    
  44.     [游戏路径]\.minecraft\versions\1.7.10\1.7.10.jar
  45.    -mainClass=net.minecraft.client.main.Main
  46.    --username [玩家名称]
  47.    --version "[version信息]"
  48.    --gameDir [游戏路径]\.minecraft
  49.    --assetsDir [游戏路径]\.minecraft\assets
  50.    --assetIndex 1.7.10
  51.    --uuid 78db288208c027abd8d6fce4b368c62d
  52.    --accessToken 78db288208c027abd8d6fce4b368c62d
  53.    --userProperties {}
  54.    --userType Legacy
  55.    --height 480
  56.    --width 854
启动minecraft并不简单,所以在学习的时候切勿掉以轻心
下一章我们将详细剖析参数里面各个部分是怎么得到的,并一步步引入启动器该作到的其他功能



待更新



待更新



Namefind
楼主讲KMCCC?

SevenC
咕咕咕了??

nsisogf

咕咕咕了2333我有空就删下贴

最爱论坛
作者您好,请问您何时更新教程?

结城希亚
谁把坟挖了
待 更 新