译文:
官方演示网址:https ://g.eags.us/eaglercraft/
本地下载:stable-download/Offline_Download_Version.html
(右键单击链接并按“将链接另存为...”以下载文件)
一个新的服务器列表站点正在建设中
如有任何问题,您可以加入不和谐服务器并在那里联系我https://discord.gg/KMQW9Uvjyq
什么是鹰工艺?
Eaglercraft 是真正的 Minecraft 1.5.2,您可以在任何常规网络浏览器中玩。这包括学校 chromebook,它适用于所有 chromebook。您可以通过基于 Bungeecord 的自定义代理加入真正的 Minecraft 1.5.2 服务器。
Ayonull 运行一个常见问题解答网站:https ://eagler.nully.tech/
如何制作服务器
如果 replit 是可以接受的,你可以使用这个:
https://replit.com/@ayunami2000/eaglercraft-server
手动设置说明:
检查是否安装了 Java。您可以从https://www.java.com/en/download/下载它
从此存储库下载stable-download/stable-download-new.zip文件
将下载的 ZIP 文件解压缩到新文件夹
打开新文件夹,进入java/bungee_command文件夹
在 Windows 中,双击run.bat。它应该会打开一个新的终端窗口有些计算机可能只会说“运行”而不是“run.bat”,两者都是正确的
在 macOS 或 Linux 上,谷歌如何打开终端并使用cd命令导航到java/bungee_command
然后,在该文件夹中,运行chmod +x run_unix.sh然后运行./run_unix.sh。它应该启动同一个服务器
转到java/bukkit_command也从 ZIP 中提取的另一个文件夹
同样,在 Windows 上,双击run.bat该文件夹。它应该打开第二个终端窗口。
保留您打开的第一个和第二个终端窗口,只需最小化它们不要关闭
同样,在 macOS 或 Linux 上,重复步骤 7,java/bukkit_command文件夹中除外
您的服务器现已准备就绪。下载并打开stable-download/Offline_Download_Version.html
从主菜单转到“多人游戏”。选择“直接连接”,输入127.0.0.1:25565并按“加入服务器”
它应该允许您连接,如果没有,请检查两个终端窗口是否有错误
如果您可以定期检查Offline_Download_Version.html的更新,那么您现在完成了
如果您正在和朋友一起玩并且想要一个可以更新的共享网站,请查看stable-download/web文件夹
要安装,请创建一个网站并将其内容上传stable-download/web到您想要安装 Eaglercraft 的 URL
如果您在本地浏览器中打开“web”文件夹,它将无法工作!如果您在 URL 中看到“file:///”,则说明您做错了。您需要将文件夹上传到 HTTP 或 HTTPS 服务器,并通过 Internet 通过 http:// 或 https:// 访问它。否则游戏将无法加载,这不是错误
要修改默认的服务器列表,请下载servers_template.dat并在NBTExplorer中打开它。进行更改,然后保存
如果无法安装 NBTExplorer,请尝试WebNBT
将您的修改上传servers_template.dat到base64encode.org,然后按“编码”。
下载并打开编码文件,将文件中的文本复制并粘贴回第 21 行(或第 22 行)的引号之间,以代替同样以引号index.html开头的旧文本CgAACQAHc2Vydm
要创建自动加入服务器的站点链接,请在 URL 中添加一个?server=变量,例如(例如):https://g.eags.us/eaglercraft/?server=127.0.0.1:25565将自动加入ws://127.0.0.1:25565/为玩家完成用户名和皮肤设置后
要更改服务器的 MOTD 和图标,请在 中编辑motd1:侦听器配置的标签,并在配置文件所在的文件夹中java/bungee_command/config.yml替换。server-icon.png用于&添加颜色/格式代码。服务器列表会将您的图标缩小为 64×64 像素
你可以给你的 MOTD 多行,添加一个motd2:来定义第二行
对于动画 MOTD 和图标,安装 EaglerMOTD:https ://github.com/LAX1DUDE/eaglercraft-motd/
要添加一些 bukkit 插件,请下载 CraftBukkit 1.5.2 的插件 JAR 文件并将其放入java/bukkit_command/plugins
要添加一些蹦极插件,请下载插件的 JAR 文件并将其放入java/bungee_command/plugins
请参阅https://github.com/LAX1DUDE/eaglercraft-plugins/下载一些支持的插件
要添加/loginand /register,请安装AuthMe并仔细阅读其文档以正确设置
要在 Eaglercraftbungee 上禁止用户名,请使用: eag-ban <username>
要在 Eaglercraftbungee 上封禁 IP,请使用: eag-ban-ip <ip>,或eag-ban-ip <name>自动封禁玩家的 IP
要禁止一定范围的 IP 地址,请使用斜杠符号定义子网。例子:eag-ban-ip 192.168.0.0/8
要通过通配符 () 禁止用户,请使用:eag-ban-wildcard <text>或eag-ban-wildcard *<text>或eag-ban-wildcard <text>
您可以编辑 EaglercraftBungee 文件夹中的 bans.txt,保存时服务器会自动重新加载文件
要通过正则表达式禁止用户,请使用:eag-ban-regex <regex>与正则表达式匹配小写的用户名
如果您在服务器上使用/op,请记住,如果您“/op LAX1DUDE”,则以“laX1DUDE”或“LaX1dUdE”或“lax1dude”身份加入的玩家也都将拥有/op。为了解决这个问题,通过将“BitchFilterPlugin.jar”移动到“java/bukkit_command/plugins”中,强制所有操作员只能在其用户名中加入所有小写字母(“lax1dude”),然后注册每个操作用户名小写
ws://要通过 URL或wss://URL 而不是连接到您的服务器,请将nginxip:port设置为您希望 URL 连接到的 EaglercraftBungee 服务器的反向代理。使用带有指令的位置 URL 模板。ip:portproxy_pass
Eaglercraft 默认使用 80 端口进行 IP 连接,键入127.0.0.1与键入相同ws://127.0.0.1:80/
要将客户端的远程 IP 地址从 nginx 上的请求转发到 EaglercraftBungee 以强制执行 IP 禁令,X-Real-IP请在代理时将请求的标头设置为 websocket
要为您的站点制作自定义资源包,请克隆此存储库并编辑lwjgl-rundir/resources中的文件。
完成后,导航到epkcompiler/并双击run.bat. 等待窗口说Press any key to continue...并关闭它。然后,转到../javascript存储库并复制javascript/assets.epk到assets.epk您网站上的
如果您使用的是 mac 或 linux,请导航到 epkcompiler 文件夹cd并运行chmod +x run_unix.sh,然后./run_unix.sh执行此操作,然后将其复制javascript/assets.epk到assets.epk您网站上的
单人玩家?
我为这个版本的 eaglercraft 成功创建了 Singleplayer,它可以 100% 运行,但是经过多轮非常彻底的测试,我发现 TeaVM 无法优化地形生成和世界滴答的某些方面,并且它可以优化渲染多人游戏构建。在i9-11900K上,“Tiny”的渲染距离在静止不动时难以超过 12 TPS,并且在必须生成几个新块并触发照明更新时立即降至 1 TPS 以下。如果我作为单人游戏发布的内容不完美,这款游戏的玩家群每天都会困扰我因此,单人游戏将无限期地保持私有状态,除非您只是想重新利用一些基本的操作系统仿真代码,否则我不会回答任何有关它的进一步问题或共享源代码。
Minecraft Beta 单人游戏将很快移植
它是如何工作的?
Eaglercraft 使用直接来自 Mojang 的 Minecraft 1.5.2 官方版本的反编译源代码。它由MCP反编译,然后使用TeaVM重新编译为 Javascript. 因此它可以加入真正的 Minecraft 1.5.2 服务器,因为它实际上是在浏览器中运行 Minecraft 1.5.2。然而,由于现代浏览器的安全限制,它必须使用 javascript Websocket 对象进行多人游戏,而不是直接 TCP 连接到它的服务器。Eaglercraft 包含一个修改版的 Bungeecord,它接受来自 Eaglercraft 客户端的浏览器 HTTP Websocket 连接,并在内部将流解包到常规 TCP,以便可以将它们转发到没有插件的常规 Bukkit 服务器。对于图形,自定义 GPU 兼容层允许 Mojang 的固定功能基于 OpenGL 1.3 的渲染引擎直接渲染到页面上的 HTML5 WebGL 2.0 画布,而对源代码的更改最少,从而使游戏的图形看起来与桌面版 Minecraft 1.5 完全相同.2.
问题?
我几乎每天都厌倦了关闭重复的“如何切断”和“添加单人游戏”问题,所以我禁用了它,因为老实说,我不再关心了,如果你有问题要报告,请加入 discord有信心可以用源代码备份
Eaglecraft 蹦极
EaglercraftBungee 将 WebSockets 转换为原始的 Minecraft 1.5.2 TCP 连接。它只是普通的 BungeeCord,有更多config.yml选项,还有一个内置插件,用于在客户端之间同步人们的自定义皮肤,这样人们就可以看到彼此的皮肤
启用 forward_ip 并从您的代理传递 X-Real-IP 标头以对 URL 使用速率限制和 IP 禁令
Nginx 示例:添加proxy_set_header X-Real-IP $remote_addr到您的代理配置
服务器已内置 DoS 保护,通过在 bungee 控制台中键入“eag-ratelimit reset”进行重置
ratelimit: ip: enable: true period: 90 limit: 60 limit_lockout: 80 lockout_duration: 1200 exceptions: []
enable启用速率限制
period并limit设置请求数 ( limit) 可以在 ( period) 秒内进行
limit_lockout并lockout_duration设置在IP 被阻塞秒数之前 ( ) 秒内可以limit_lockout发出的请求数 ( )periodlockout_duration
exceptions永远不应受到速率限制的 IP 地址列表。默认情况下,将 127.0.0.1 和 192.168.. 等本地 IP 设置为例外
要开发插件,请下载stable-download/java/bungee_command/bungee_dist.jar并将其添加到 Java IDE 的构建路径中。像普通的 BungeeCord 插件一样开发插件,请参阅EaglerMOTD示例。
通过将插件导出为 jar 并将其放在 EaglercraftBungee 的“/plugins”目录中然后单击“run.bat”来测试您的插件
新活动:
net.md_5.bungee.api.event.WebsocketMOTDEvent : 当客户端或网站请求 MOTD 时触发
net.md_5.bungee.api.event.WebsocketQueryEvent:当客户端或网站请求查询时触发。当站点向侦听器打开文本 WebSocket 并发送单个字符串Accept: <query>数据包时,就会发生这种情况。可用于向支持集成 WebSocket 查询的服务器列表站点提供额外的自定义统计信息
使用类中的标准 BungeeCord@EventHandler 注解注册事件处理程序 Listener
安装(详细)
如果你想使用这个项目但不想从头开始编译,下载stable-download/stable-download-new.zip并解压
在 stable-download-new.zip 中有一个“java”和一个“web”文件夹。将 web 文件夹的内容上传到您的 web 服务器。web文件夹如果在本地通过file:///打开是不行的,需要在http://或者https://页面打开。如果您使用的是 chrome,或者如果这不可能,请尝试使用此扩展程序,然后下载适用于文件 URL 的替代单文件 html离线版本。如果您使用此替代版本,请确保您和您的同行通过定期下载此链接上的任何较新版本的 html 文件来保持您的副本是最新的以避免陷入具有破坏游戏故障或错误的版本。eaglercraft bungeecord 可执行文件与示例配置文件和用于启动它的 run.bat 脚本一起位于 java/bungee_command 文件夹中。配置为与 eaglercraft bungee 可执行文件一起使用的 minecraft 1.5.2 的 CraftBukkit 位于 java/bukkit_command 中。Spigot 1.5.2 的可用版本在与 bungee 一起使用时存在错误,因此您只能在服务器上使用 CraftBukkit 和 CraftBukkit 插件
以下是一些与 Eaglercraft 兼容的 Bukkit 插件:https ://github.com/LAX1DUDE/eaglercraft-plugins
要玩游戏,请在 bungee_command 和 bukkit_command 文件夹中启动 run.bat 脚本。然后导航到 web 文件夹内容结束的 URL。游戏应该加载没有任何问题。转到多人游戏屏幕并选择“直接连接”。键入 127.0.0.1:25565。按下 connect 或者随便什么就可以了,在 bungeecord config.yml 中配置的默认端口是 25565 而不是 80 以避免与本地 Web 服务器或操作系统的任何潜在冲突(并且 linux 桌面用户不能在没有 sudo 的情况下使用 1024 以下的端口号)。
如果在连接到服务器时未提供 :port,Eaglercraft 中的默认行为是使用端口 80,而不是端口 25565。这样游戏在生产环境中的多人连接不会默认使用当前被任何防火墙阻止的端口. 这也使您能够使用 Cloudflare 和 nginx 在您的站点上创建反向代理连接,以在同一域上托管多个服务器,并为每个套接字使用不同的 ws:// URL。
如果您需要 SSL,请将nginx设置为从端口 443 到 bungeecord 服务器上的端口的反向代理。当 nginx 虚拟主机处于代理模式时,您可以非常轻松地在其上配置 SSL,这比我在 bungee 中创建自己的 websocket SSL 配置选项要容易得多。要连接到在多人游戏屏幕上运行 SSL websocket 的服务器,请使用以下格式:wss://[url]/. 您还可以在 URL 开头的域或 ip 地址之后再次添加 :port 选项以更改端口并使用 SSL 连接。如果您在 https:// URL 上设置 Eaglercraft index.html,Chrome 将只允许您从多人游戏屏幕建立 wss:// 连接。它是 Chrome 中的一项安全功能,如果您想同时支持 ws:// 和 wss://,您必须在 http:// URL 上托管 Eaglercraft index.html。我对安全性的最佳建议是使用 Cloudflare 代理站点和 websocket,因为您可以在本地服务器上使用 http 和 ws,然后您可以配置 cloudflare 在连接被代理时为您执行 SSL。它可以将您的 IP 地址设置到最大,您还可以在他们的小型入门包中免费为大型 assets.epk 和 classes.js 文件设置内容交付网络
要更改服务器列表中的默认服务器,请下载stable-download/servers_template.dat并使用 NBTExplorer(我的世界之一)打开文件。您将在存储为 NBT 组件的“服务器”标签中看到默认服务器列表,您可以编辑它们并添加更多,只要您遵循现有服务器具有的相同格式即可。完成后,保存文件并使用base64encode.org上的上传选项将文件编码回 base64 ,然后下载编码文件并打开它,并将 index.html 第 8 行引号之间的 base64 替换为您下载的编码文件中的新base64。
bungeecord 服务器中有一个硬编码的插件,用于在玩家和世界之间自动同步 eaglercraft 配置文件皮肤
您可能应该使用像AuthMe这样的插件来阻止恶意软件登录到其他人的个人资料
编译
要为 Web 编译,请运行 gradle 'teavm' 编译目标以生成 classes.js 文件。
要编译为常规桌面 Java 以进行快速调试,请使用本机 OpenGL 而不是 WebGL 进行渲染:
创建一个新的空 eclipse 项目
将 src/main/java 和 src/lwjgl/java 链接为源文件夹,并将 lwjgl-rundir 中的 jar 作为依赖项添加
创建一个运行配置并添加一个指向 lwjgl natives 文件夹 (lwjgl-rundir/natives) 的 jvm 参数,如下所示:-Djava.library.path=natives,并确保运行配置的工作目录是 lwjgl-rundir 文件夹。
修改游戏资源包(javascript/assets.epk),查看/epkcompiler目录下的readme
这个项目只是一个概念证明,展示了使用 TeaVM 将现有的 java 程序交叉编译为 javascript 时可以完成的工作。它不是很快也不是很稳定,唯一真正有用的部分是模拟器代码,它使用在浏览器中运行的 webgl(基于 OpenGL 3.3)创建临时固定功能 OpenGL 1.3 上下文。也许将来可以用来移植其他游戏。
贡献
我真正要说的是,制表符而不是空格,并且将代码格式化为类似于出厂设置中的 eclipse 自动格式化工具,而且还可以运行足够长的代码行以离开屏幕和单行 if 语句和其他如果该类别中的格式违规有助于增强文件中不太重要的代码和更重要的代码之间的对比,那么它是受欢迎的。不要对javascript/classes.js或javascript/assets.epk中的任何内容进行更改stable-download/。当我合并拉取请求时,我会自己重新编译这些。