欢迎光临散文网 会员登陆 & 注册

我的世界·1.20.1·forge Mod教程·ep4·方块,方块实体,发电机

2023-07-26 21:02 作者:Flandre芙兰  | 我要投稿

## 本次的内容

forge电力

动画纹理

自定义创造物品栏

## 发电机

发电机是一个提供燃料生成Forge能力的方块(FE),方块拥有一个GUI,显示电力水平,有一个物品的slot,可以放入燃料。发电机的前面显示是否在发电的状态。

## block

从Block开始,具有两个属性的方块,FACING和POWERED,当玩家放置方块的时候,FACING属性需要根据玩家面朝的方向进行放置。



当具有燃料的时候,方块实体将负责发电


Forge配备了与能量有关的处理,支持IEnergyStorage的方块可以存储能源。


发电机还具有物品的处理的能力,用于存储物品,只有一个燃料槽


我们使用AdaptedEnergyStorage进行能力的操纵,可以方面限制提取和插入。


Forge的能量系统是一个推送系统,你不需要去提取能量,也不应该这样做。


tickServer方法会在server上的每个Tick被调用,他会做两件事件

- 产生能量。

- 将能量分配给周围的Block


generateEnergy方法根据当前的燃料产生能量,如果没有燃料,则不会产生任何能量,如果有燃料,就更具Generate残生能量,在这类数值是50/tick


generateEnergy方法还负责更新方块的POWERED的属性,如果我们正在产生能量,则周围的方块可以被供电,如果没有发电那么周围的方块不能被供电。


DistributeEnergy方法将能量分配给相邻可以接受的方块,他通过查找支持IEnergyReceiver的功能的方块完成功能,如果他找到了这个方块,就会将能量推送给该方块,如果方块接受了能量,那么就移除自己存储的能量。


## Container

容器和我们之前介绍的类似


不同的是我们现在有两个slot需要向客户端发送能量的状态。第一个发送能量的低16bit,第二个发送能量高的16个bit

这样是因为slot只能传递16为数据,我们需要32位存储能量。


## Screen

在客户端我们需要创建一个GUI界面,显示燃料槽和发电机的状态。能量的显示为一个条,随着发电而填充,这是我们的使用的2个slot的传递数据实现的。


当鼠标悬停在能量条上时,我们还会能量的状态

## charger


charger是一个block,他在将来为我们的机器人充电,现在他还只是一个用于接受能量存储的块

该charger没有用户界面,不要screen 和 container


## block

charger是一个带有实体的方块,并且是半砖,这样我们需要重写getShape的原因,他使用POWERED属性表示是否有电


## the block entity


charger不存放任何的item,但是存储能量,所以使用AdaptedEnergyStorage,不过他仅接受能量,因为在能量变化的时候需要setChange,所以我们需要重写receiveEnergy方法,以便我们调用setChange。发电机我们不需要怎么做,因为发电机修改内部的能量,无论是发电还是分配电的时候,这两种情况都不需要setChange。


在tickSever中,我们检查charger的是否有电,有电就将块的状态修改为POWERED状态。

 Data Generation

数据生成和之前类似。


对于发电机,使用了一个6个面都是一样的模型,每个面都有两种状态。


对于charger我们使用两个slab模型,表示充电和未充电,然后使用getVariantBudiler创建方块的状态。


我的世界·1.20.1·forge Mod教程·ep4·方块,方块实体,发电机的评论 (共 条)

分享到微博请遵守国家法律