zh_cn:tutorial:blockentityrenderers
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
zh_cn:tutorial:blockentityrenderers [2019/12/19 10:13] – lightcolour | zh_cn:tutorial:blockentityrenderers [2021/03/03 12:29] – [例子] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 渲染动态使用块实体渲染器块和物品 ====== | + | ====== 渲染动态使用方块实体渲染器方块和物品 ====== |
- | //这是本教程的1.15版本。 对于1.14版本,请参见[[tutorial: | + | 这是本教程的1.15版本。 对于1.14版本,请参见[[tutorial: |
- | 阅读本教程之前,请确保您已[[tutorial: | + | 阅读本教程之前,请确保您已[[zh_cn:tutorial: |
===== 介绍 ===== | ===== 介绍 ===== | ||
- | 方块块本身并不是那么有趣, | + | 方块本身并不是那么有趣, |
它们只是在某个位置和某个大小保持静止直到损坏。 | 它们只是在某个位置和某个大小保持静止直到损坏。 | ||
- | 我们可以使用块实体渲染器来更加动态地渲染与块实体相关联的项目和块-渲染多个不同的项目, | + | 我们可以使用方块实体渲染器来更加动态地渲染与方块实体相关联的项目和方块-渲染多个不同的项目, |
在不同的位置和大小,甚至更多。 | 在不同的位置和大小,甚至更多。 | ||
===== 例子 ===== | ===== 例子 ===== | ||
在本教程中,我们将通过向其添加'' | 在本教程中,我们将通过向其添加'' | ||
- | 渲染器将显示一个自动点唱机,该自动点唱机漂浮在块上方,上下,旋转。 | + | 渲染器将显示一个自动点唱机,该自动点唱机漂浮在方块上方,上下,旋转。 |
| | ||
我们需要做的第一件事是创建我们的“ BlockEntityRenderer”类: | 我们需要做的第一件事是创建我们的“ BlockEntityRenderer”类: | ||
Line 70: | Line 70: | ||
</ | </ | ||
然后,我们执行自动点唱机的移动(matrices.translate)和旋转(matrices.multiply)。 | 然后,我们执行自动点唱机的移动(matrices.translate)和旋转(matrices.multiply)。 | ||
- | 转换分为两部分:将其转换为高于块中心的0.5、1.25和0.5。 | + | 转换分为两部分:将其转换为高于方块中心的0.5、1.25和0.5。 |
第二部分是更改的部分:y值的偏移量。 偏移量是任何给定框架的项目高度。 | 第二部分是更改的部分:y值的偏移量。 偏移量是任何给定框架的项目高度。 | ||
每次我们都要重新计算,因为我们希望它可以动画上下跳跃。 我们通过以下方式计算: | 每次我们都要重新计算,因为我们希望它可以动画上下跳跃。 我们通过以下方式计算: | ||
Line 104: | Line 104: | ||
</ | </ | ||
- | 您可以立即尝试新创建的块实体渲染器。 | + | 您可以立即尝试新创建的方块实体渲染器。 |
- | 但是,如果您没有使块透明,您会发现有些不对劲-浮动块,点唱机是黑色的! | + | 但是,如果您没有使方块透明,您会发现有些不对劲-浮动方块,点唱机是黑色的! |
- | 这是因为默认情况下,无论您在方块实体中进行渲染的任何内容,都将接收光线,就好像它与块实体//处于同一位置一样。 | + | 这是因为默认情况下,无论您在方块实体中进行渲染的任何内容,都将接收光线,就好像它与方块实体处于同一位置一样。 |
- | 因此,浮动块从不透明的块中接收inside的光,这意味着它没有接收到光! | + | 因此,浮动方块从不透明的方块中接收inside的光,这意味着它没有接收到光! |
为了解决这个问题,我们将告诉Minecraft从上方的一个方块方块实体的位置接收光。 | 为了解决这个问题,我们将告诉Minecraft从上方的一个方块方块实体的位置接收光。 | ||
- | 要获取灯光,我们在块实体上方的位置调用'' | + | 要获取灯光,我们在方块实体上方的位置调用'' |
并使用灯光,我们在'' | 并使用灯光,我们在'' | ||
<code java> | <code java> | ||
Line 118: | Line 118: | ||
| | ||
int lightAbove = WorldRenderer.getLightmapCoordinates(blockEntity.getWorld(), | int lightAbove = WorldRenderer.getLightmapCoordinates(blockEntity.getWorld(), | ||
- | MinecraftClient.getInstance().getItemRenderer().renderItem(stack, | + | MinecraftClient.getInstance().getItemRenderer().renderItem(stack, |
| | ||
[...] | [...] |
zh_cn/tutorial/blockentityrenderers.txt · Last modified: 2023/08/29 10:31 by wjz_p