ShulkerRenderer.java
net.minecraft.client.renderer.entity.ShulkerRenderer
信息
- 全限定名:net.minecraft.client.renderer.entity.ShulkerRenderer
- 类型:public class
- 包:net.minecraft.client.renderer.entity
- 源码路径:src/main/java/net/minecraft/client/renderer/entity/ShulkerRenderer.java
- 起始行号:L21
- 继承:MobRenderer<Shulker,ShulkerRenderState,ShulkerModel>
- 职责:
TODO
字段/常量
-
DEFAULT_TEXTURE_LOCATION- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
TEXTURE_LOCATION- 类型:
Identifier[] - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ShulkerRenderer(EntityRendererProvider.Context context) @ L28
- 构造器名:ShulkerRenderer
- 源码定位:L28
- 修饰符:public
参数:
- context: EntityRendererProvider.Context
说明:
TODO
方法
下面的方法块按源码顺序生成。
public Vec3 getRenderOffset(ShulkerRenderState state) @ L32
- 方法名:getRenderOffset
- 源码定位:L32
- 返回类型:Vec3
- 修饰符:public
参数:
- state: ShulkerRenderState
说明:
TODO
public boolean shouldRender(Shulker entity, Frustum culler, double camX, double camY, double camZ) @ L36
- 方法名:shouldRender
- 源码定位:L36
- 返回类型:boolean
- 修饰符:public
参数:
- entity: Shulker
- culler: Frustum
- camX: double
- camY: double
- camZ: double
说明:
TODO
public Identifier getTextureLocation(ShulkerRenderState state) @ L56
- 方法名:getTextureLocation
- 源码定位:L56
- 返回类型:Identifier
- 修饰符:public
参数:
- state: ShulkerRenderState
说明:
TODO
public ShulkerRenderState createRenderState() @ L60
- 方法名:createRenderState
- 源码定位:L60
- 返回类型:ShulkerRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public void extractRenderState(Shulker entity, ShulkerRenderState state, float partialTicks) @ L64
- 方法名:extractRenderState
- 源码定位:L64
- 返回类型:void
- 修饰符:public
参数:
- entity: Shulker
- state: ShulkerRenderState
- partialTicks: float
说明:
TODO
public static Identifier getTextureLocation(DyeColor color) @ L74
- 方法名:getTextureLocation
- 源码定位:L74
- 返回类型:Identifier
- 修饰符:public static
参数:
- color: DyeColor
说明:
TODO
protected void setupRotations(ShulkerRenderState state, PoseStack poseStack, float bodyRot, float entityScale) @ L78
- 方法名:setupRotations
- 源码定位:L78
- 返回类型:void
- 修饰符:protected
参数:
- state: ShulkerRenderState
- poseStack: PoseStack
- bodyRot: float
- entityScale: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ShulkerRenderer extends MobRenderer<Shulker, ShulkerRenderState, ShulkerModel> {
private static final Identifier DEFAULT_TEXTURE_LOCATION = Sheets.DEFAULT_SHULKER_TEXTURE_LOCATION.texture().withPath(path -> "textures/" + path + ".png");
private static final Identifier[] TEXTURE_LOCATION = Sheets.SHULKER_TEXTURE_LOCATION
.stream()
.map(location -> location.texture().withPath(path -> "textures/" + path + ".png"))
.toArray(Identifier[]::new);
public ShulkerRenderer(EntityRendererProvider.Context context) {
super(context, new ShulkerModel(context.bakeLayer(ModelLayers.SHULKER)), 0.0F);
}
public Vec3 getRenderOffset(ShulkerRenderState state) {
return state.renderOffset;
}
public boolean shouldRender(Shulker entity, Frustum culler, double camX, double camY, double camZ) {
if (super.shouldRender(entity, culler, camX, camY, camZ)) {
return true;
} else {
Vec3 startPos = entity.getRenderPosition(0.0F);
if (startPos == null) {
return false;
} else {
EntityType<?> type = entity.getType();
float halfHeight = type.getHeight() / 2.0F;
float halfWidth = type.getWidth() / 2.0F;
Vec3 targetPos = Vec3.atBottomCenterOf(entity.blockPosition());
return culler.isVisible(
new AABB(startPos.x, startPos.y + halfHeight, startPos.z, targetPos.x, targetPos.y + halfHeight, targetPos.z)
.inflate(halfWidth, halfHeight, halfWidth)
);
}
}
}
public Identifier getTextureLocation(ShulkerRenderState state) {
return getTextureLocation(state.color);
}
public ShulkerRenderState createRenderState() {
return new ShulkerRenderState();
}
public void extractRenderState(Shulker entity, ShulkerRenderState state, float partialTicks) {
super.extractRenderState(entity, state, partialTicks);
state.renderOffset = Objects.requireNonNullElse(entity.getRenderPosition(partialTicks), Vec3.ZERO);
state.color = entity.getColor();
state.peekAmount = entity.getClientPeekAmount(partialTicks);
state.yHeadRot = entity.yHeadRot;
state.yBodyRot = entity.yBodyRot;
state.attachFace = entity.getAttachFace();
}
public static Identifier getTextureLocation(@Nullable DyeColor color) {
return color == null ? DEFAULT_TEXTURE_LOCATION : TEXTURE_LOCATION[color.getId()];
}
protected void setupRotations(ShulkerRenderState state, PoseStack poseStack, float bodyRot, float entityScale) {
super.setupRotations(state, poseStack, bodyRot + 180.0F, entityScale);
poseStack.rotateAround(state.attachFace.getOpposite().getRotation(), 0.0F, 0.5F, 0.0F);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
ShulkerModel()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数/构造调用/返回值 - 关联成员:
ShulkerRenderState()
- 引用位置:
-
- 引用位置:
字段/返回值
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
AABB()
- 引用位置:
-
- 引用位置:
方法调用/返回值 - 关联成员:
Vec3.atBottomCenterOf()
- 引用位置: