GuiItemRenderState.java
net.minecraft.client.renderer.state.gui.GuiItemRenderState
信息
- 全限定名:net.minecraft.client.renderer.state.gui.GuiItemRenderState
- 类型:public final class
- 包:net.minecraft.client.renderer.state.gui
- 源码路径:src/main/java/net/minecraft/client/renderer/state/gui/GuiItemRenderState.java
- 起始行号:L13
- 实现:ScreenArea
- 职责:
TODO
字段/常量
-
pose- 类型:
Matrix3x2f - 修饰符:
private final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
itemStackRenderState- 类型:
TrackingItemStackRenderState - 修饰符:
private final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
x- 类型:
int - 修饰符:
private final - 源码定位:
L16 - 说明:
TODO
- 类型:
-
y- 类型:
int - 修饰符:
private final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
scissorArea- 类型:
ScreenRectangle - 修饰符:
private final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
oversizedItemBounds- 类型:
ScreenRectangle - 修饰符:
private final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
bounds- 类型:
ScreenRectangle - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public GuiItemRenderState(Matrix3x2f pose, TrackingItemStackRenderState itemStackRenderState, int x, int y, ScreenRectangle scissorArea) @ L22
- 构造器名:GuiItemRenderState
- 源码定位:L22
- 修饰符:public
参数:
- pose: Matrix3x2f
- itemStackRenderState: TrackingItemStackRenderState
- x: int
- y: int
- scissorArea: ScreenRectangle
说明:
TODO
方法
下面的方法块按源码顺序生成。
private ScreenRectangle calculateOversizedItemBounds() @ L32
- 方法名:calculateOversizedItemBounds
- 源码定位:L32
- 返回类型:ScreenRectangle
- 修饰符:private
参数:
- 无
说明:
TODO
private ScreenRectangle calculateBounds(ScreenRectangle itemBounds) @ L49
- 方法名:calculateBounds
- 源码定位:L49
- 返回类型:ScreenRectangle
- 修饰符:private
参数:
- itemBounds: ScreenRectangle
说明:
TODO
public Matrix3x2f pose() @ L54
- 方法名:pose
- 源码定位:L54
- 返回类型:Matrix3x2f
- 修饰符:public
参数:
- 无
说明:
TODO
public TrackingItemStackRenderState itemStackRenderState() @ L58
- 方法名:itemStackRenderState
- 源码定位:L58
- 返回类型:TrackingItemStackRenderState
- 修饰符:public
参数:
- 无
说明:
TODO
public int x() @ L62
- 方法名:x
- 源码定位:L62
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public int y() @ L66
- 方法名:y
- 源码定位:L66
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public ScreenRectangle scissorArea() @ L70
- 方法名:scissorArea
- 源码定位:L70
- 返回类型:ScreenRectangle
- 修饰符:public
参数:
- 无
说明:
TODO
public ScreenRectangle oversizedItemBounds() @ L74
- 方法名:oversizedItemBounds
- 源码定位:L74
- 返回类型:ScreenRectangle
- 修饰符:public
参数:
- 无
说明:
TODO
public ScreenRectangle bounds() @ L78
- 方法名:bounds
- 源码定位:L78
- 返回类型:ScreenRectangle
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public final class GuiItemRenderState implements ScreenArea {
private final Matrix3x2f pose;
private final TrackingItemStackRenderState itemStackRenderState;
private final int x;
private final int y;
private final @Nullable ScreenRectangle scissorArea;
private final @Nullable ScreenRectangle oversizedItemBounds;
private final @Nullable ScreenRectangle bounds;
public GuiItemRenderState(Matrix3x2f pose, TrackingItemStackRenderState itemStackRenderState, int x, int y, @Nullable ScreenRectangle scissorArea) {
this.pose = pose;
this.itemStackRenderState = itemStackRenderState;
this.x = x;
this.y = y;
this.scissorArea = scissorArea;
this.oversizedItemBounds = this.itemStackRenderState().isOversizedInGui() ? this.calculateOversizedItemBounds() : null;
this.bounds = this.calculateBounds(this.oversizedItemBounds != null ? this.oversizedItemBounds : new ScreenRectangle(this.x, this.y, 16, 16));
}
private @Nullable ScreenRectangle calculateOversizedItemBounds() {
AABB aabb = this.itemStackRenderState.getModelBoundingBox();
int actualXSize = Mth.ceil(aabb.getXsize() * 16.0);
int actualYSize = Mth.ceil(aabb.getYsize() * 16.0);
if (actualXSize <= 16 && actualYSize <= 16) {
return null;
} else {
float xOffset = (float)(aabb.minX * 16.0);
float yOffset = (float)(aabb.maxY * 16.0);
int flooredXOffset = Mth.floor(xOffset);
int flooredYOffset = Mth.floor(yOffset);
int actualX = this.x + flooredXOffset + 8;
int actualY = this.y - flooredYOffset + 8;
return new ScreenRectangle(actualX, actualY, actualXSize, actualYSize);
}
}
private @Nullable ScreenRectangle calculateBounds(ScreenRectangle itemBounds) {
ScreenRectangle bounds = itemBounds.transformMaxBounds(this.pose);
return this.scissorArea != null ? this.scissorArea.intersection(bounds) : bounds;
}
public Matrix3x2f pose() {
return this.pose;
}
public TrackingItemStackRenderState itemStackRenderState() {
return this.itemStackRenderState;
}
public int x() {
return this.x;
}
public int y() {
return this.y;
}
public @Nullable ScreenRectangle scissorArea() {
return this.scissorArea;
}
public @Nullable ScreenRectangle oversizedItemBounds() {
return this.oversizedItemBounds;
}
@Override
public @Nullable ScreenRectangle bounds() {
return this.bounds;
}
}引用的其他类
-
- 引用位置:
参数/字段/构造调用/返回值 - 关联成员:
ScreenRectangle()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.ceil(), Mth.floor()
- 引用位置: