diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-04-14 17:33:29 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-04-14 19:29:03 +0800 |
| commit | d892547a9b8a8ae85655900c08b6cc97c6aa2050 (patch) | |
| tree | 2df75febcd6df65ff8d9315c9bd0de81caf9a874 /runtime/src/main/java/me/shedaniel/rei/plugin/client | |
| parent | 5467c2f08da6f3c6dae7ae603e3708d4f6eb1638 (diff) | |
| download | RoughlyEnoughItems-d892547a9b8a8ae85655900c08b6cc97c6aa2050.tar.gz RoughlyEnoughItems-d892547a9b8a8ae85655900c08b6cc97c6aa2050.tar.bz2 RoughlyEnoughItems-d892547a9b8a8ae85655900c08b6cc97c6aa2050.zip | |
Pass the BakedModel as an extra data
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin/client')
| -rw-r--r-- | runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index d3c666b68..8742000eb 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -196,18 +196,21 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer @SuppressWarnings("deprecation") @Environment(EnvType.CLIENT) - public class ItemEntryRenderer extends AbstractEntryRenderer<ItemStack> implements BatchedEntryRenderer<ItemStack> { + public class ItemEntryRenderer extends AbstractEntryRenderer<ItemStack> implements BatchedEntryRenderer<ItemStack, BakedModel> { + public static final int ITEM_LIGHT = 0xf000f0; + @Override - public int getBatchIdentifier(EntryStack<ItemStack> entry, Rectangle bounds) { - return 1738923 + (getModelFromStack(entry.getValue()).usesBlockLight() ? 1 : 0); + public BakedModel getExtraData(EntryStack<ItemStack> entry) { + return Minecraft.getInstance().getItemRenderer().getModel(entry.getValue(), null, null); } - private BakedModel getModelFromStack(ItemStack stack) { - return Minecraft.getInstance().getItemRenderer().getModel(stack, null, null); + @Override + public int getBatchIdentifier(EntryStack<ItemStack> entry, Rectangle bounds, BakedModel model) { + return 1738923 + (model.usesBlockLight() ? 1 : 0); } @Override - public void startBatch(EntryStack<ItemStack> entry, PoseStack matrices, float delta) { + public void startBatch(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, float delta) { Minecraft.getInstance().getTextureManager().bind(TextureAtlas.LOCATION_BLOCKS); Minecraft.getInstance().getTextureManager().getTexture(TextureAtlas.LOCATION_BLOCKS).setFilter(false, false); RenderSystem.pushMatrix(); @@ -217,25 +220,25 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - boolean sideLit = getModelFromStack(entry.getValue()).usesBlockLight(); + boolean sideLit = model.usesBlockLight(); if (!sideLit) Lighting.setupForFlatItems(); } @Override - public void renderBase(EntryStack<ItemStack> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) { + public void renderBase(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) { if (!entry.isEmpty()) { ItemStack stack = entry.getValue(); matrices.pushPose(); matrices.translate(bounds.getCenterX(), bounds.getCenterY(), 100.0F + entry.getZ()); matrices.scale(bounds.getWidth(), (bounds.getWidth() + bounds.getHeight()) / -2f, bounds.getHeight()); - Minecraft.getInstance().getItemRenderer().render(stack, ItemTransforms.TransformType.GUI, false, matrices, immediate, 15728880, OverlayTexture.NO_OVERLAY, getModelFromStack(stack)); + Minecraft.getInstance().getItemRenderer().render(stack, ItemTransforms.TransformType.GUI, false, matrices, immediate, ITEM_LIGHT, OverlayTexture.NO_OVERLAY, model); matrices.popPose(); } } @Override - public void renderOverlay(EntryStack<ItemStack> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) { + public void renderOverlay(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) { if (!entry.isEmpty()) { Minecraft.getInstance().getItemRenderer().blitOffset = entry.getZ(); Minecraft.getInstance().getItemRenderer().renderGuiItemDecorations(Minecraft.getInstance().font, entry.getValue(), bounds.x, bounds.y, null); @@ -244,11 +247,11 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer } @Override - public void endBatch(EntryStack<ItemStack> entry, PoseStack matrices, float delta) { + public void endBatch(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, float delta) { RenderSystem.enableDepthTest(); RenderSystem.disableAlphaTest(); RenderSystem.disableRescaleNormal(); - boolean sideLit = getModelFromStack(entry.getValue()).usesBlockLight(); + boolean sideLit = model.usesBlockLight(); if (!sideLit) Lighting.setupFor3DItems(); RenderSystem.popMatrix(); |
