zh_cn:tutorial:blockentityrenderers
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
zh_cn:tutorial:blockentityrenderers [2022/02/07 07:40] – [例子] solidblock | zh_cn:tutorial:blockentityrenderers [2023/08/29 10:31] (current) – [例子] wjz_p | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== 使用方块实体渲染器动态渲染方块和物品 ====== | ====== 使用方块实体渲染器动态渲染方块和物品 ====== | ||
// | // | ||
- | 这是本教程的1.15和1.16版本。对于1.14版本,请参见[[zh_cn: | + | 这是本教程的 1.15 以上版本。对于 1.14 版本,请参见[[zh_cn: |
- | 阅读本教程之前,请确保您已[[zh_cn: | + | 阅读本教程之前,请确保您已[[blockentity|添加方块实体]]! |
===== 介绍 ===== | ===== 介绍 ===== | ||
方块本身并不是那么有趣,只是在某个位置和某个大小保持静止直到损坏。我们可以使用方块实体渲染器(block entity renderer)更加动态地渲染与方块实体有关的物品和方块——在不同的位置、以不同的大小渲染多个物品。 | 方块本身并不是那么有趣,只是在某个位置和某个大小保持静止直到损坏。我们可以使用方块实体渲染器(block entity renderer)更加动态地渲染与方块实体有关的物品和方块——在不同的位置、以不同的大小渲染多个物品。 | ||
Line 11: | Line 11: | ||
我们需要做的第一件事是创建我们的 '' | 我们需要做的第一件事是创建我们的 '' | ||
<code java> | <code java> | ||
- | public class DemoBlockEntityRenderer<T extends BlockEntity> | + | @Environment(EnvType.CLIENT) |
+ | public class DemoBlockEntityRenderer implements BlockEntityRenderer< | ||
// 唱片机物品堆 | // 唱片机物品堆 | ||
private static ItemStack stack = new ItemStack(Items.JUKEBOX, | private static ItemStack stack = new ItemStack(Items.JUKEBOX, | ||
Line 28: | Line 29: | ||
<code java> | <code java> | ||
+ | @Environment(EnvType.CLIENT) | ||
public class ExampleModClient implements ClientModInitializer { | public class ExampleModClient implements ClientModInitializer { | ||
@Override | @Override | ||
Line 50: | Line 52: | ||
<code java> | <code java> | ||
- | @Override | + | |
- | public void onInitializeClient() { | + | public void onInitializeClient() { |
- | BlockEntityRendererRegistry.INSTANCE.register(DEMO_BLOCK_ENTITY, | + | |
- | } | + | // |
+ | } | ||
</ | </ | ||
我们重写在每一帧都会被调用的 '' | 我们重写在每一帧都会被调用的 '' | ||
Line 77: | Line 80: | ||
// 旋转物品 | // 旋转物品 | ||
- | matrices.multiply(Vec3f.POSITIVE_Y.getDegreesQuaternion((blockEntity.getWorld().getTime() + tickDelta) * 4)); | + | matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees((blockEntity.getWorld().getTime() + tickDelta) * 4)); |
} | } | ||
</ | </ |
zh_cn/tutorial/blockentityrenderers.1644219637.txt.gz · Last modified: 2022/02/07 07:40 by solidblock