@@ -0,0 +1,1428 @@
+package org.cyclops.cyclopscore.client.render.tileentity;%0A%0Aimport com.mojang.blaze3d.matrix.MatrixStack;%0Aimport net.minecraft.client.renderer.IRenderTypeBuffer;%0Aimport net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;%0Aimport net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;%0Aimport net.minecraft.item.ItemStack;%0Aimport net.minecraft.tileentity.TileEntity;%0A%0Aimport javax.annotation.Nullable;%0Aimport java.util.function.Supplier;%0A%0A/**%0A * A supplier-based %7B@link ItemStackTileEntityRenderer%7D that caches the internal tile entity.%0A * Don't use this if the tile entity should be recreated at every render-tick.%0A * @author rubensworks%0A */%0Apublic class ItemStackTileEntityRendererBase extends ItemStackTileEntityRenderer %7B%0A%0A    private final Supplier%3CTileEntity%3E tileEntitySupplier;%0A    @Nullable%0A    private TileEntity tileEntity;%0A%0A    public ItemStackTileEntityRendererBase(Supplier%3CTileEntity%3E tileEntitySupplier) %7B%0A        this.tileEntitySupplier = tileEntitySupplier;%0A    %7D%0A%0A    @Override%0A    public void render(ItemStack itemStackIn, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) %7B%0A        if (this.tileEntity == null) %7B%0A            this.tileEntity = this.tileEntitySupplier.get();%0A        %7D%0A        TileEntityRendererDispatcher.instance.renderItem(this.tileEntity, matrixStackIn, bufferIn, combinedLightIn, combinedOverlayIn);%0A    %7D%0A%7D%0A

Add supplier-based ItemStackTileEntityRendererBase