本帖最后由 森林蝙蝠 于 2018-12-4 00:15 编辑

原文:https://gist.github.com/xt9/55a04226728cebe729fe37cc7aa9d10f

【重要】该文为Forge Annual Parly 2018(Forge 2018年报)的纪要,作者非forge贡献者,不完全保证其权威性,但并未有forge开发成员表示异议,有参考价值。

1.13 General(全局):
1.cpw is rewriting the mod loader and it's going to be merged into 1.13 forge
   cpw(forge早期的主要贡献者)正在重写mod加载器(以适应新版的Java),这会被合并到1.13的forge中。
2.1.13 forge will have java 9 support. (May happen sooner rather than later)
   1.13的forge将会支持Java 9(可能会更早一些)。
3.The mod loader carries a lot of technical debt, which is the reason the load speed is a bit slow, they're working towards improving the performance of  the loader.
   旧的mod加载器欠下了很多技术账,导致加载速度有点慢,他们正在努力优化性能。
4.Java 10 & 11 support depends on Mojang using it. Go yell at them for support.
   至于Java 10和11,mojang支持哪个,我们就用哪个,让他们支持去吧。
   点评:Java 11是下一个时代的官方长期支持版本,虽然重要,但比起9没有什么破坏性的变动(上一个破坏性变动,是Java 9的模块化),只要不使用那些被移出JDK 11的包(Java EE和Java FX等),问题就不大。
5.Forge will receive a full audit for 1.13, going over all of the classes for redundancies. Stable 1.13 Forge might take months.
   forge会在1.13接受全面审查,精简所有的类,需要几个月的功夫推出稳定的forge 1.13。
   点评:啊,跳票的香气。

6.New coremod system for 1.13, coremods are necessary for forge, but people tend to overuse them right now.
   1.13将会推出新的coremod系统,coremod对forge很重要,但是已经被大家滥用了。
   点评:coremod是采取修改Java字节码的手段,对MC底层代码做出修改的mod,滥用不仅可能造成崩溃,崩溃还难以定位,如果你看过1.1x的mod崩溃报告,就会发现里面有很多coremod存在……
7.JavaScript system to modify base classes.
   引入JavaScript系统,以修改基础的类。
   点评:你以为用JavaScript当脚本,就没人做coremod了?
8.New system might support swapping mod versions while the game is running.
   新的系统可能允许在游戏运行时更换mod版本(所谓的热更新)。
   点评:不错的功能,真能做到的话就太好了。
9.Mod system should not scare bukkit plugin devs so much after the rewrite(but forge will never be bukkit/sponge since it's not an abstraction)
   重写后的mod系统应该不会“吓跑”bukkit插件开发者,但是forge也不会变成bukkit或sponge,因为它不是一个抽象的接口。
   点评:这个“吓跑”意味深长,是能做好共存,还是便于开发?如果是前者,bukkit和sponge共存的项目应该就要下岗了。

1.13 Performance(性能):
10.Multicore systems should receive a big speed increase (for the loader?)
    (对加载器而言?)多核系统会大幅加速。
     点评:启动速度快了?MMC可能会失去引以为傲的优势。
11.1.13 updates to LWJGL3  which has support for multithreaded rendering, so they still want someone who does rendering to speed that up.
     1.13底层更新到LWJGL 3之后,有多线程渲染了,所以他们(mojang)会找一些搞渲染的人加速渲染。
     点评:终于(和谐)的有多线程渲染了。

1.13 Vanilla Code Changes(原版代码修改):
12.Vanilla command system rewritten, a lot more structured. Uses Brigadier.
     使用Brigadier(Mojang官方提供的一个工具)重写了原版命令系统,大大提升结构性。
     点评:这是除了LaunchWrapper之外,我知道的第二个Mojang官方工具。
13.Lot of new World generation util that should help for mods like Twilight forest & Betweenlands.
     很多新的世界生成工具,对暮色森林和交错维度这样的mod很有用。
     点评:别让它们变得更卡就好……
14.DataFixers: Could theoretically support porting modded worlds from version to version, but will probably not be a thing.
     理论上,可以将mod整合包的存档跨版本迁移,但是可能(因为其他原因)不会实现。
     点评:重要的功能,希望能做好吧。

1.13 Modding(mod编写):
15.More Event driven networking for simplmpl
     为简化实现,更多的事件驱动将被加入。
16.async & promises support
     异步支持。
17.login & handshake, system is getting a rewrite, should make it faster and more lag-resistant. Giving more feedback on how close it is to connecting to  the server.
    登录和握手的系统正在重写,会让它更快,延迟更少,连接掉线时会给予更多反馈(不是原来那样就一个异常了)。
18.Login needs support for longer handshakes since the block registry is ~16 times larger, and needs to be synced.
     登录需要更长时间的握手,因为方块注册变大了约16倍,需要同步。
19.Breakings changes in forge for 1.13? Yeeeeees. Forge will have a full audit for every line of code, so a lot of things are breaking. Terrain stuff will 100% break.
     forge 1.13是破坏性的变化吗?那当然啦,forge每一行都需要重新检查,很多东西都在破而后立,至少地形相关是100%破坏了。
20.Forge's official stance is always use the latest version, but 1.12 will have full support until 1.13 have a stable version  that Lex is happy with.
     forge官方态度是永远使用最新的版本,但是情况特殊,在1.13稳定之前,将继续对1.12提供完整支持。
21.1.13 is cooler and more enticing than 1.8 ever where when moving from 1.7.
     如果你从1.7迁移上来,1.13比1.8更棒。
22.Grum on entity data models: Not planned by mojang atm.
     实体数据模型:Mojang尚无计划。
23.Forge team is looking for someone to do rendering.
     (呼应第11条)Forge团队诚邀渲染人才加入!
24.Localization is getting a rewrite.
     本地化系统正在重写。
25.OreDict will be deprecated, Replaced with the new tag system. (Forge did it first, mojang is thieeeeves)
     矿物词典将被废弃,使用新的标签系统。(这东西是forge先搞出来的,mojang就是一群鸡鸣狗盗之辈)
26.Forge might take over to init gears/nuggets/iron and all those common occuring ingredients that have tags. atleast as an optional.
     forge将接管锭,粒,齿轮等的初始化,至少也是个可选项。
     点评:锭,粒,齿轮,板,棒子……等,是常见的“工业物品”,以前是由JAOPCA之类的mod负责添加,现在forge要亲自下场?
27.Not much info on how datapacks will be utilized. They don't know if it's feasible yet (probably referring to syncing datapacks to the client).
     包括forge团队自己,没人清楚数据包这东西怎么实用化(可能需要把数据包同步到客户端上)。
28.Java will always be the language that Forge supports,Scala removed.
     Forge将永远使用Java,Scala将被移出forge库(单独下载)。
     点评:有很多资源文件下载失败的情况,就是因为Scala类库下不动,移除的话简直喜大普奔。
29.Clojure/Kotlin/Javascript/Scala/Groovy support planned (loaded with loaders specified in the mod toml file),language support should only have to be -> require a lang support mod from curse, and start developing.
     Forge计划支持Clojure/Kotlin/Scala/Groovy之类JVM方言以及JavaScript(在mod的.toml文件中指定相应的加载器),用这些语言开发mod,只能通过在curse上下载一个相应的前置mod。
30.No Annotations processor, MCMOD.info is dead and the mod annotation only have one value.
     没有注解处理器了,mcmod.info已死,@mod 注解只有一个值了。
31.Tweakers removed, New loader system uses serviceloaders.
     Tweaker(伴随着launchwrapper的移除)将被移除,新的加载系统将使用serviceloaders。
     点评:一大波coremod作者还有30秒到达战场,准备碾碎forge。
32.Bad practice to have enable/disable flags for items/blocks in config. Just register how many you want.
     在配置文件中为物品和方块添加“开启/禁用”参数实现的并不好,你想注册多少就注册多少。
33.Block id will persist even if you remove the block that had that id, leaving dead id's. But you can reclaim it.
     如果你移除了一个方块,那么方块的id会被保留下来成为一个“死”id,你也可以重新声明。
34.They want a world cleanup tool that prunes dead ids. (Someone please write it).
     他们想要一个存档清理工具,来清理死id(等人写呢)。
35.Registries will still be locked.
     Registries仍将被锁定。(也就是说,我们仍然需要使用RegistryEvent<T>这种不直观的形式去注册物品等)
36.Grum: Recipes should be reloadable in 1.13
     合成表在1.13应该可以被重载了。
     点评:魔改整合包的作者应该最喜欢这个。
37.Grum: don't use 2^31 blockstates please hehehe, you are going to have a bad time
     千万不要让你的方块占用 2^31 种方块状态,你会呵呵的。
38.Gui's have not really changed
     用户界面类没有发生什么变化。
     点评:没变化说个毛线。
39.World generation is now really modular,THREADED!! (Not multi threaded)
     世界生成现在模块化,线程化了!(但不是多线程的)

1.13 Commands(命令):
40.Will support sub-commands
     支持子指令。(不搞CB的我并不知道这是什么)

1.13 Fluid(流体):
41.They need to probably rethink everyone about how fluid works.
     他们打算重新定义“流体”。
42.Might not make the rewrite straight away since mojang is not 100% done with the new fluid system.
     可能不会直接重写,因为mojang的新流体系统还是没写完。
43.There will probably be a new entry/event for registering liquids.
     注册流体可能会有一个新的入口或事件。
44.They would like FluidStack to be immutable and be more like ItemStack.
     FluidStack类型可能将不可变,更像ItemStack。

1.13 Forge Gradle(Gradle支持):
45.ForgeGradle is getting a rewrite,no ETA,should be functional in a few weeks.
     ForgeGradle(这个gradle插件)正在重写,没有准确时间,应该几周就能实用了。
     点评:forgegradle像个傻子一样,现在还用gradle 2.14.

1.13 Configuration(配置文件):
46.Format will be TOML (Luckily it's not YAML),will also be used for the modloader.
     包括mod加载器在内,将采取TOML格式文件做配置,感谢上帝吧,它不是YAML。
     点评:做插件的吃你家大米了?
47.Event to get config values from a TOML object.
     增设从TOML对象中获取配置值得事件。
48.Annotations for config will kind of stay.
     配置相关的注解还要再等会。
49.Nested list support, should have all the same capabilities as the existing system.
     支持嵌套list(List:Java的数据结构,“表”),现有的表达能力在新系统中都应支持。
50.Scopes split into GLOBAL(What we have today)/PLAYER/SERVER
     配置文件的作用范围分为全局(现在的情况),玩家和服务器。
51.Ability to load defaults from inside the jar.
     能够从jar文件内部加载默认值。
52.The library syncs config automatically.
     自动同步配置。
53.It's up to the modder to handle the syncing correctly.
     由mod开发者完全控制同步。

Communication(Forge社区事件):
54.tterag in chat: Anyone can contribute to the forge docs.
     tterag:任何人都可以对forge文档做贡献。
55.Lex gets help from Sponge devs and other sources to name mappings,and he has been updating MCP for all the snapshots.
     Sponge社区有帮助LexManos(forge的主要贡献者)反混淆MC的代码,而且他一直在更新MCP的快照。
56.They try their best to inform about new changes on irc/discord, and try to keep the docs up to date.
     他们正在irc或discord上尽力通知大家新的变化,也在随时更新文档。

Project Valhalla(Valhalla项目,一个属于OpenJDK的项目):
57.Many objects would turn into value types.Would have massive performance changes? (Tuned out for a bit)
     很多对象都会转变成值类型,将会引发重大的性能变动?
     点评:值类型是直接存放在栈上的一些数据(而不需要创建对象,不需要垃圾回收),等效于原Java的基本类型(int,long,double……)之类。
     恭喜Java在变成C#的道路上又进一步!
58.Might make it into Java 11
     将把它做进Java11中去。
59.The java dev community is very hyped about it,nothing else would have a bigger impact on performance than this,but when we get this depends only on Mojang.
     Java社区对此很感兴趣,没有什么比这个(Valhalla)带来的性能影响更大了,但我们啥时候得到这个只能取决于mojang。

Misc(其他):
60.There could be a Forge util mod for library functions if they can find anyone trustworthy to develop it.
     会有一个forge工具mod以存放各种库函数,如果他们找到信得过的人开发的话。
61.Documentation probably won't change a lot until stable release, follow the beta changelogs to keep posted.
     在1.13出稳定版之前,文档不会改变太多,当然beta发布日志还会推送。
62.More event registries will be a thing in 1.13.
     1.13会有更多事件注册!

FML Demonstration(FML新特性展示):
1.Only one value for Mod annotation, MODID
   @Mod注解只有一个modid值了,形如@Mod(MODID)。
2.All additional properties for mods are moved to META-INF/mods.toml
   所有mod的附加信息(例如作者,版本号)将被移动到META-INF/mods.toml文件。
3.modLoader, you can specify what language loader you want to use, you can also specify the version of the loader.
   你可以指定使用哪一种语言和加载器的版本来加载你的mod。
4.Needs to follow apache maven version, use numbers please.
   需要跟着Apache maven的版本号规范走。
5.Support for multiline description
   支持多行描述。
6.Can put multiple mods in there with jar-in-jar, but one mod specified is recommended.
   可以将多个mod的jar文件套在一起,但是仍然推荐分开。
   点评:虽然跟以前塞进minecraft.jar的形式很像,但这一次是自动处理依赖和防止空间浪费的。
7.cpw: wants to move away from stringAPIs like annotations, because they're error prone and require some validation.
   cpw:想远离字符串类型的API,例如注解,因为它们容易出错,还需要一些验证。
   点评:那你想呗!
8.Using suppliers and types should be more stable.
   使用supplier(Java 8提供的一个函数式接口)和类型系统应该会更加稳定。
9.SubscribeEvent and Mod.EventBusSubscriber is not going away.
   @SubscribeEvent和@Mod.EventBusSubscriber没有移除。
10.SidedProxy annotation will probably not be maintained. Replaced with using SidedExecutor.
     @SidedProxy注解(一个使方法运行在服务端或客户端某一头的注解)可能不再维护,替换成SidedExecutor。
11.The InterModComms system is getting rewritten.
     mod内部通信系统(IMC)正在重写。
12.Optional is gone, it's not coming back.
     @Optional注解消失了,不再会回来了。
13.Removed magic derpy strings in annotations, now replaced with suppliers.
     移除注解中的奇怪字符串,换成了supplier。

Forge Modders Day模组开发者日
14.Virtual event,Mini minecon for modders.
     这是mod开发者的一次线上小聚会。
     点评:性感Lex在线发牌?
15.cpw wanted to write a history of modding talk.
     cpw想写一下mod开发的历史。
16.They're open for ideas for modders day, talk to the forge team on Discord.
     当天forge开发团队会在discord上公开收集想法。
     Pahimar is helping with organization,they would love it if Sponge devs would also join in on the fun.
     Pahimar(等价交换2作者)在帮忙组织,他们也欢迎sponge的开发者加入。
     Might have a modjam event after/before.
     这之前或之后会有一场Modjam比赛(Modjam:mod开发比赛,96小时内完赛)。
(完)