北航开源软件开发导论课程第三次作业

选择一个开源项目进行分析

MinecraftForge

仓库地址

https://github.com/MinecraftForge/MinecraftForge

开源许可

LGPL 2.1 (详见https://github.com/MinecraftForge/MinecraftForge/blob/1.20.x/LICENSE.txt)

社区

所有人均可向仓库提起PR

闪光点

  1. 代码风格一致,阅读起来很舒服。
  2. 变量命名正规,能让人一眼看出来是做什么的。
  3. 注释写的很充足。
  4. 代码注释也很充足,如@NotNull和@Nullable,方便在利用Forge开发时IDE进行的检查。

具体功能的实现

Fluid(流体系统)

类似于Minecraft原版中的物品Item和ItemStack类,Forge中定义了FluidType和FluidStack类。以下是来自Harbinger(一个中文Minecraft Mod开发指南)中的一段话。https://harbinger.covertdragon.team/chapter-04/item-stack.html

Item 代表了物品的“类型”。两颗钻石因为“都是钻石”所以能叠加在一起。两块不同的金属锭因为类型不同所以不能叠加在一起。 有数量概念的是 ItemStack,一个 ItemStack 的实例代表了“一堆特定物品,数量不定”。Minecraft 中玩家背包里的东西都是 ItemStack。玩家手持的也是 ItemStack。在此基础上,ItemStack 还有携带一个 NBT 标签的能力,这允许 ItemStack 携带更多的自定义数据。
Minecraft 在这里采用了享元的概念:一种特定物品只对应一个 Item 实例。换言之,在 Modding 的过程中,我们可以直接通过 == 来判断两个物品是否为同一个种类。

Forge中的流体系统也是同样的道理,只不过把上述的Item换成FluidType,ItemStack换成FluidStack。

Energy(能源系统)

Forge中定义了IEnergyStorage接口,所有基于Forge的Mod中的能量需要实现或者利用这个接口中的内容来达到能量生产、传输、储存的效果。开发者可以自行实现接口的具体功能以达到不同能量生产传输效果,当然Forge提供了基础的实现类EnergyStorage和EmptyEnergyStorage方便开发者直接使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值