在骁龙845设备上的Windows里原生运行Minecraft Java Edition
傻逼都知道微软他妈的不会做移动端的东西, 傻逼才他妈会用ARM设备上的Windows搞半天想要原生运行Minecraft就是为了他妈提高效率, 结果他妈的微软没给他妈的845的显卡驱动做他妈的OpenGL, 还得去下载他妈的兼容包转成他妈的DirectX 12才能他妈的跑.典型的跨平台跨了他妈个寂寞.越想越气, 懒得写了.简单说一下:从https://bell-sw.com/pages/downloads/#/java-17-current下载JRE 17, 选择Windows ARM64.从微软商店下载OpenCL™ 和 OpenGL® 兼容包, 安装完成后无需重启.建议使用HMCL启动器3.5.3及以后的版本, 需要利用到旧版本HMCL或者其他启动器可能没有的特性: https://github.com/Glavo/HMCL-Update本次使用的是1.18.2版本, 其他版本不知道会不会炸.下载https://build.lwjgl.org/release/3.3.0/lwjgl-3.3.0.zip, 取出Minecraft需要的Native文件.需要修改的Libraries文件位于.minecraft\libraries\org\lwjgl下, 从刚刚下载的lwjgl-3.3.0.zip内, 找到相应的文件并替换. 例如lwjgl\3.2.2\lwjgl-3.2.2.jar使用压缩包内的lwjgl\lwjgl.jar替换.同时将压缩包内的对应Native库lwjgl-xxx-natives-windows-arm64.jar解压, 找到windows\arm64\org\lwjgl\lwjgl-xxx.dll, 放置到.minecraft\versions\1.18.1\natives下, 文件名保持原样.一共需要提取7个dll和替换7个jar文件, 自己数.在HMCL里修改游戏设置, 将Native库位置指向刚刚放dll文件的文件夹.启动游戏.
警告本教程所使用的Java版本为8u73, 在此版本的Java上未默认禁止远程代码加载, 可能会导致Log4J远程代码执行漏洞被利用请确保您使用的是最新版本的Spigot或者Paper服务端, 或者避免将服务器暴露在不信任的环境.众所周知, Kindle是一个水墨屏的电子阅读器.但是, 他有Shell.所以也能拿来开服.png今天的受害者主角是一块Kindle Paperwhite 3, 拥有512M超大运存和一颗高性能的ARMv7处理器, 还有一块4G海量容量的EMMC, 用来开服真是再合适不过了.Kindle Paperwhite 2 及之前的设备只有256M内存(甚至更少), 难以分配足够的内存给Minecraft服务器, 建议洗洗睡.以下操作可能会损坏你的设备, 请谨慎行事, 注意备份.\#0 事先准备1. 越狱你的Kindle设备目前通用软件越狱的方法支持固件版为=5.6.5, 或者5.10.3~5.13.3, 具体可以参考这些教程: https://bookfere.com/skills/jailbreak如果你的固件版本不符合要求, 也可以通过硬件破解的方式进行越狱(支持任意版本固件), 可参考这篇帖子: https://tieba.baidu.com/p/61769732842. 安装KUAL/MRPackageInstaller/USBNetHackKUAL提供了基本的越狱软件启动界面, MRPackageInstaller用于安装USBNetworkHack和其他的一些东西.可在此处下载:https://www.mobileread.com/forums/showthread.php?t=225030KUAL:针对5.10以上的固件, 通过刷入Update_KUALBooklet_hotfix_*_install.bin即可在主界面看到KUAL启动器.针对其他固件, 越狱后直接将KUAL-KDK-2.0.azw2复制到documents文件夹即可启动MRPackageInstaller:为KUAL拓展, 将下载得到的文件直接解压进Kindle存储根目录即可.USBNetworkHack:为MRPackage, 需要手动安装.将Update_usbnet_*_install_pw2_kt2_kv_pw3_koa_kt3_koa2_pw4_kt4.bin解压进mrpackage.打开KUAL, 点击"Helper +"->"Install MRPackage"等待设备重启3. 安装KtermKterm提供一个触控命令行终端, 可在SSH未准备好之前提供操作空间.由于Kterm依赖Xorg, 会占用大量内存, 因此后期会使用SSH进行操作, 而不是Kterm.下载地址: https://github.com/bfabiszewski/kterm/releases/download/v2.6/kterm-kindle-2.6.zipKterm是一个KUAL拓展, 将文件夹解压到extentions文件夹内即可.4. 启动SSH服务器通过KUAL启动Kterm, 输入以下命令:killall dropbear dropbear -n即可以无密码的方式登录到Kindle.* 为什么不建议修改密码或者密钥对的方式登录KindleKindle的Linux环境并非标准Linux, 我们无法得知其密码是否有意义, 如果贸然修改可能会导致不可挽回的后果, 最后可能会沦落到需要用刷机版去救砖.而关于密钥对, Kindle的root目录位于/tmp下, 重启便会清空, 每次重新启动都需要重新上传密钥对.至此, 准备环节已经结束.\#1 配置环境1. 安装JavaKindle的处理器比较特殊, 并不支持硬浮点运算, 因此需要下载特殊版本的Java.https://www.oracle.com/java/technologies/javaseembedded8u73-downloads.html在此处下载ejdk-8u73-linux-arm-sflt.tar.gz, 复制到Kindle内存存储空间.通过SSH登录到Kindle, 使用以下命令解压Java:cd /mnt/us/ tar -zxvf ./ejdk-8u73-linux-arm-sflt.tar.gz将JRE移动出来并清理多余文件:mv ./ejdk1.8.0_73/linux_arm_sflt/jre ./jre rm -r ejdk-8u73-linux-arm-sflt.tar.gz ./ejdk1.8.0_73测试Java:/mnt/us/jre/bin/java -version控制台输出:java version "1.8.0_73" Java(TM) SE Embedded Runtime Environment (build 1.8.0_73-b02, headless) Java HotSpot(TM) Embedded Client VM (build 25.73-b02, mixed mode)即表明Java已经能够正常运行.2. 下载Minecraft服务端推荐使用Paper-1.8.8: https://papermc.io/api/v2/projects/paper/versions/1.8.8/builds/443/downloads/paper-1.8.8-443.jar可以尝试使用高版本, 但是性能可能不足.# 创建文件夹, 存放服务端文件 mkdir mc cd mc # 下载服务端 wget https://papermc.io/api/v2/projects/paper/versions/1.8.8/builds/443/downloads/paper-1.8.8-443.jar3. 创建Swapfile(极其高端先进的内存融合技术™) (可选, 强烈推荐)通过内存融合技术™, 利用空余的存储空间, 可以使你的Kindle拥有更加充足的内存去运行Minecraft服务器.对于Kindle Paperwhite 3来说, 创建一个128M的Swapfile已经足够Kindle去运行Minecraft服务器了.# 创建128M的空文件 dd if=/dev/zero of=/mnt/us/swapfile bs=1M count=128 # 格式化为Swap mkswap /mnt/us/swapfile # 启动Swap swapon /mnt/us/swapfile* Swapfile并非越大越好可用内存空间≠原始内存空间+Swapfile大小Swapfile仅作为临时交换空间, 其效率极其低下.过大的Swapfile是没有意义的, 因为软件运行时必然有一部分在原始内存空间内, 其占用不能被转移到Swapfile内.因此Swapfile利用率不会太高, 但是能为Minecraft服务器提供有限的额外运行空间.经测试, JVM内存分配等于128M不能正常启动服务器, 通过添加Swap空间可以为JVM提供192M的运行内存分配.4. 结束无关进程直接键入以下命令:stop framework stop tmd stop webreader stop powerd stop cmd stop demd stop dpmd stop appmgrd stop perfd stop stackdumpd stop kb stop contentpackd stop pillow stop todo stop rcm stop otav3 stop otaupd stop volumd stop udevd stop dynconfig stop lipcd stop archive stop x即可结束绝大部分无关进程.5. 开放防火墙键入以下命令:iptables -A INPUT -i wlan0 -p tcp -m tcp --dport 25565 -j ACCEPT即可开放25565端口.\#2 启动Minecraft服务器1. 启动命令cd /mnt/us/mc /mnt/us/jre/bin/java -Xmx192M -jar ./paper-1.8.8-443.jar即可启动Minecraft服务器.首次启动需要同意EUAL, 需要使用Vi编辑文件.vi <filename>例如, 编辑eula.txt:vi eual.txtVi使用指南可在搜索引擎内找到(接近Vim), 在此仅讲解基本使用:1. 启动编辑模式按下键盘上的"i"键.2. 编辑文件通过上下左右键移动光标, 如正常打字一样键入内容.可能会出现上下左右无法移动光标的情况, 请自行百度解决.3. 退出编辑模式按下键盘上的"ESC"键4. 保存并退出在退出编辑模式之后, 输入":wq"即可保存并退出2. 同意EUAL协议编辑eual.txt, 将false改为true.3. 轻度优化编辑spigot.yml修改view-distance为2 (降低内存和CPU占用)首次启动需要生成地图, 耗时可能较长:\#3 玩!通过IP地址进入服务器, 可以看到我们的Kindle是非常的流畅:轻轻松松tps就能跑到19以上!控制台运行时截图:\#4 收工由于使用了结束Kindle关键进程来腾出内存的方法, 此时的Kindle已经废了.png只需要重启设备即可恢复正常:reboot\#5 再玩一次!仅需要通过Kterm重新启动SSH服务端, 然后登录到SSH, 结束掉无关进程, 启动Swap, 开放防火墙即可.swapon /mnt/us/swapfile stop framework stop tmd stop webreader stop powerd stop cmd stop demd stop dpmd stop appmgrd stop perfd stop stackdumpd stop kb stop contentpackd stop pillow stop todo stop rcm stop otav3 stop otaupd stop volumd stop udevd stop dynconfig stop lipcd stop archive stop x iptables -A INPUT -i wlan0 -p tcp -m tcp --dport 25565 -j ACCEPT再次启动Minecraft服务端:cd /mnt/us/mc /mnt/us/jre/bin/java -Xmx192M -jar ./paper-1.8.8-443.jar玩!