LightningBoltRenderer.java
net.minecraft.client.renderer.entity.LightningBoltRenderer
信息
- 全限定名:net.minecraft.client.renderer.entity.LightningBoltRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.entity
- 源码路径:src/main/java/net/minecraft/client/renderer/entity/LightningBoltRenderer.java
- 起始行号:L16
- 继承:EntityRenderer<LightningBolt,LightningBoltRenderState>
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
- 无
构造器
public LightningBoltRenderer(EntityRendererProvider.Context context) @ L17
- 构造器名:LightningBoltRenderer
- 源码定位:L17
- 修饰符:public
参数:
- context: EntityRendererProvider.Context
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void submit(LightningBoltRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) @ L21
- 方法名:submit
- 源码定位:L21
- 返回类型:void
- 修饰符:public
参数:
- state: LightningBoltRenderState
- poseStack: PoseStack
- submitNodeCollector: SubmitNodeCollector
- camera: CameraRenderState
说明:
TODO
private static void quad(Matrix4fc pose, VertexConsumer buffer, float xo0, float zo0, int h, float xo1, float zo1, float boltRed, float boltGreen, float boltBlue, float rr1, float rr2, boolean px1, boolean pz1, boolean px2, boolean pz2) @ L92
- 方法名:quad
- 源码定位:L92
- 返回类型:void
- 修饰符:private static
参数:
- pose: Matrix4fc
- buffer: VertexConsumer
- xo0: float
- zo0: float
- h: int
- xo1: float
- zo1: float
- boltRed: float
- boltGreen: float
- boltBlue: float
- rr1: float
- rr2: float
- px1: boolean
- pz1: boolean
- px2: boolean
- pz2: boolean
说明:
TODO
public LightningBoltRenderState createRenderState() @ L116
- 方法名:createRenderState
- 源码定位:L116
- 返回类型:LightningBoltRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public void extractRenderState(LightningBolt entity, LightningBoltRenderState state, float partialTicks) @ L120
- 方法名:extractRenderState
- 源码定位:L120
- 返回类型:void
- 修饰符:public
参数:
- entity: LightningBolt
- state: LightningBoltRenderState
- partialTicks: float
说明:
TODO
protected boolean affectedByCulling(LightningBolt entity) @ L125
- 方法名:affectedByCulling
- 源码定位:L125
- 返回类型:boolean
- 修饰符:protected
参数:
- entity: LightningBolt
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class LightningBoltRenderer extends EntityRenderer<LightningBolt, LightningBoltRenderState> {
public LightningBoltRenderer(EntityRendererProvider.Context context) {
super(context);
}
public void submit(LightningBoltRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera) {
float[] xOffs = new float[8];
float[] zOffs = new float[8];
float xOff = 0.0F;
float zOff = 0.0F;
RandomSource random = RandomSource.createThreadLocalInstance(state.seed);
for (int h = 7; h >= 0; h--) {
xOffs[h] = xOff;
zOffs[h] = zOff;
xOff += random.nextInt(11) - 5;
zOff += random.nextInt(11) - 5;
}
float finalXOff = xOff;
float finalZOff = zOff;
submitNodeCollector.submitCustomGeometry(poseStack, RenderTypes.lightning(), (pose, buffer) -> {
Matrix4fc poseMatrix = pose.pose();
for (int r = 0; r < 4; r++) {
RandomSource randomx = RandomSource.createThreadLocalInstance(state.seed);
for (int p = 0; p < 3; p++) {
int hs = 7;
int ht = 0;
if (p > 0) {
hs = 7 - p;
}
if (p > 0) {
ht = hs - 2;
}
float xo0 = xOffs[hs] - finalXOff;
float zo0 = zOffs[hs] - finalZOff;
for (int h = hs; h >= ht; h--) {
float xo1 = xo0;
float zo1 = zo0;
if (p == 0) {
xo0 += randomx.nextInt(11) - 5;
zo0 += randomx.nextInt(11) - 5;
} else {
xo0 += randomx.nextInt(31) - 15;
zo0 += randomx.nextInt(31) - 15;
}
float br = 0.5F;
float boltRed = 0.45F;
float boltGreen = 0.45F;
float boltBlue = 0.5F;
float rr1 = 0.1F + r * 0.2F;
if (p == 0) {
rr1 *= h * 0.1F + 1.0F;
}
float rr2 = 0.1F + r * 0.2F;
if (p == 0) {
rr2 *= (h - 1.0F) * 0.1F + 1.0F;
}
quad(poseMatrix, buffer, xo0, zo0, h, xo1, zo1, 0.45F, 0.45F, 0.5F, rr1, rr2, false, false, true, false);
quad(poseMatrix, buffer, xo0, zo0, h, xo1, zo1, 0.45F, 0.45F, 0.5F, rr1, rr2, true, false, true, true);
quad(poseMatrix, buffer, xo0, zo0, h, xo1, zo1, 0.45F, 0.45F, 0.5F, rr1, rr2, true, true, false, true);
quad(poseMatrix, buffer, xo0, zo0, h, xo1, zo1, 0.45F, 0.45F, 0.5F, rr1, rr2, false, true, false, false);
}
}
}
});
}
private static void quad(
Matrix4fc pose,
VertexConsumer buffer,
float xo0,
float zo0,
int h,
float xo1,
float zo1,
float boltRed,
float boltGreen,
float boltBlue,
float rr1,
float rr2,
boolean px1,
boolean pz1,
boolean px2,
boolean pz2
) {
buffer.addVertex(pose, xo0 + (px1 ? rr2 : -rr2), (float)(h * 16), zo0 + (pz1 ? rr2 : -rr2)).setColor(boltRed, boltGreen, boltBlue, 0.3F);
buffer.addVertex(pose, xo1 + (px1 ? rr1 : -rr1), (float)((h + 1) * 16), zo1 + (pz1 ? rr1 : -rr1)).setColor(boltRed, boltGreen, boltBlue, 0.3F);
buffer.addVertex(pose, xo1 + (px2 ? rr1 : -rr1), (float)((h + 1) * 16), zo1 + (pz2 ? rr1 : -rr1)).setColor(boltRed, boltGreen, boltBlue, 0.3F);
buffer.addVertex(pose, xo0 + (px2 ? rr2 : -rr2), (float)(h * 16), zo0 + (pz2 ? rr2 : -rr2)).setColor(boltRed, boltGreen, boltBlue, 0.3F);
}
public LightningBoltRenderState createRenderState() {
return new LightningBoltRenderState();
}
public void extractRenderState(LightningBolt entity, LightningBoltRenderState state, float partialTicks) {
super.extractRenderState(entity, state, partialTicks);
state.seed = entity.seed;
}
protected boolean affectedByCulling(LightningBolt entity) {
return false;
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
LightningBoltRenderState()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RenderTypes.lightning()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
RandomSource.createThreadLocalInstance()
- 引用位置:
-
- 引用位置:
参数
- 引用位置: