package joshie.harvest.cooking.render; import joshie.harvest.cooking.tile.TileCounter; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; @SideOnly(Side.CLIENT) public class SpecialRendererCounter extends SpecialRendererCookware<TileCounter> { @Override protected void renderCookware(TileCounter tile) { List<ItemStack> ingredients = tile.getIngredients(); List<ItemStack> results = tile.getResult(); results.stream().filter(result -> result != null).forEachOrdered(result -> renderResult(tile, result)); int max = ingredients.size(); for (int i = 0; i < max; i++) { renderIngredient(ingredients.get(i), tile.heightOffset[i], tile.rotations[i], tile.offset1[i], tile.offset2[i]); } } @Override public void translateIngredient(boolean isBlock, float position, float rotation, float offset1, float offset2) { GlStateManager.translate(0.5F, 0.75F, 0.5F); GlStateManager.scale(0.5F, 0.5F, 0.5F); if (!isBlock) { GlStateManager.rotate(-90, 1F, 0F, 0F); GlStateManager.rotate(rotation, 0F, 0F, 1F); GlStateManager.translate(offset1, offset2, position); } else { GlStateManager.rotate(90, 1F, 0F, 0F); GlStateManager.translate(offset1 * 1.4F, 0.8F - offset2 * 2.5F, position - 1F); } } @Override public void translateResult(boolean isBlock) { GlStateManager.translate(0.5F, 1.025F, 0.5F); if (!isBlock) { GlStateManager.rotate(-90, 1F, 0F, 0F); } else { GlStateManager.rotate(90, 0F, 1F, 0F); } } }