矿车物品 3D 渲染

基本信息

属性 值
类型 客户端渲染配置项
配置键 render minecarts in 3D on inventory
配置分类 Configuration.CATEGORY_GENERAL
默认值 false
配置文件 config/ironchestminecarts.cfg(event.getSuggestedConfigurationFile())
读取位置 IronChestMinecarts.preInit(FMLPreInitializationEvent)
读取失败 FMLLog.log(Level.ERROR, e, "Iron Chest Minecarts had a problem loading its configs!"),配置值保持默认 false
作用范围 全部 8 个矿车物品(无逐物品开关)

行为

本模组唯一的配置项。它控制矿车物品在手持与物品栏中是否以 3D 箱子矿车模型渲染,还是退化为原版物品贴图(sprite)。

if (renderMinecarts3D) if (event.getSide() == Side.CLIENT)
    MinecraftForgeClient.registerItemRenderer(minecart, new ItemMinecartChestRenderer());
  • 循环位于 8 个矿车物品的注册循环内,true 时为每一个物品注册 ItemMinecartChestRenderer;
  • event.getSide() == Side.CLIENT 保证服务端不会注册渲染器(避免在专用服务器上加载客户端类);
  • 双重 if 而非 &&,逻辑等价但不做短路优化;
  • 配置为 false(默认)时完全不注册 IItemRenderer,物品沿用 setTextureName(...) 指定的静态贴图 textures/items/minecart_chest_*.png。

渲染细节

ItemMinecartRenderer(抽象)负责矿车模型,ItemMinecartChestRenderer(实现)负责箱子方块。模型为原版 ModelMinecart,贴图固定为 textures/entity/minecart.png;箱子方块通过 RenderBlocks.renderBlockAsItem(IronChest.ironChestBlock, item.type.ordinal(), 1) 渲染,因此每个物品显示的是自己对应等级的铁箱子。

handleRenderType 返回 type != ItemRenderType.FIRST_PERSON_MAP(即地图视角不渲染 3D 模型);shouldUseRenderHelper 恒为 true。

各视角的缩放与位移(renderItem 中硬编码):

ItemRenderType 缩放 平移 说明
ENTITY glScaled(0.5, 0.5, 0.5) (0.0, -0.25, 0.0) 掉落物 / 实体展示
EQUIPPED 无 (0.5, 0.75, 0.5) 盔甲位 / 装备位
EQUIPPED_FIRST_PERSON 无 (-0.5, 1.0, 0.7) 第一人称手持
INVENTORY glScaled(1.2, 1.2, 1.2) (-0.5, -0.45, -0.5) 物品栏 / 箱子 GUI 内
FIRST_PERSON_MAP — — handleRenderType 返回 false,直接跳过

箱子方块本身的渲染变换(ItemMinecartChestRenderer.renderBlock):glScaled(0.75 * 0.75 × 3) → 绕 Y 轴旋转 270° → 沿 Y 平移 6/16 格 → 渲染方块,结束时把颜色重置为 (1, 1, 1, 1)(GL11.glColor4f)以免染色污染后续渲染。

矿车模型在箱子之后渲染:glRotated(90, 0, 1, 0) → glScaled(0.75 × 3) → glScaled(-1, -1, 1)(翻转面朝向)→ 绑定矿车贴图 → model.render(null, 0, 0, -0.1F, 0, 0, 1F/16F)。

⚠️ 两处代码都写了 GL11.glScaled(0.75 * 0.75, 0.75 * 0.75, 0.75 * 0.75) 与 glScaled(0.75, 0.75, 0.75) 的组合写法,源码原样如此,未做简化。

数值

数值 值
默认值 false(2D 物品贴图)
启用后效果 手持与物品栏显示 3D 箱子矿车
客户端要求 是(服务端注册会被 Side.CLIENT 过滤)

相关条目