Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package gregtechlite.gtlitecore.client.renderer;

import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public interface UniversiumRenderBehavior extends ItemRendererManager
{

float getCosmicOpacity();

@SideOnly(Side.CLIENT)
default float getCosmicOpacity(ItemStack stack, Object... args)
{
return getCosmicOpacity();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
package gregtechlite.gtlitecore.client.renderer.handler;

import gregtech.api.items.metaitem.MetaItem;
import gregtechlite.gtlitecore.client.model.WrappedModelGetter;
import gregtechlite.gtlitecore.client.renderer.CustomItemRenderer;
import gregtechlite.gtlitecore.client.renderer.UniversiumRenderBehavior;
import gregtechlite.gtlitecore.client.shader.CosmicShaderHelper;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.model.IModelState;
import org.lwjgl.opengl.GL11;

public class UniversiumItemRenderer extends WrappedItemRenderer
{

public UniversiumItemRenderer(IModelState state, IBakedModel model)
{
super(state, model);
}

public UniversiumItemRenderer(IModelState state, WrappedModelGetter getter)
{
super(state, getter);
}

@Override
public void renderItem(ItemStack stack, ItemCameraTransforms.TransformType transformType)
{
if (!(stack.getItem() instanceof MetaItem))
{
renderModel(wrapped, stack);
return;
}

MetaItem<?>.MetaValueItem valueItem = ((MetaItem<?>) stack.getItem()).getItem(stack);
UniversiumRenderBehavior urb = null;
if (valueItem != null)
{
urb = (UniversiumRenderBehavior) ((CustomItemRenderer) valueItem).getRendererManager();
}

processLightLevel(transformType);

if (transformType == net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType.GUI)
{
renderInventory(stack, renderEntity, urb);
}
else
{
renderSimple(stack, renderEntity, urb);
}
}

protected void renderSimple(ItemStack stack, EntityLivingBase player, UniversiumRenderBehavior urb)
{
GlStateManager.pushMatrix();
GlStateManager.enableBlend();
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
GlStateManager.color(1F, 1F, 1F, 1F);

World world = player != null ? player.world : null;
IBakedModel model = wrapped.getOverrides().handleItemState(wrapped, stack, world, player);

// Render base model
renderModel(model, stack);

// Render cosmic overlay with shader
if (urb != null) {
GlStateManager.disableAlpha();
GlStateManager.depthFunc(GL11.GL_EQUAL);

CosmicShaderHelper.cosmicOpacity = urb.getCosmicOpacity(stack);
CosmicShaderHelper.useShader();

renderModel(model, stack);

CosmicShaderHelper.releaseShader();

GlStateManager.depthFunc(GL11.GL_LEQUAL);
GlStateManager.enableAlpha();
}

GlStateManager.disableBlend();
GlStateManager.popMatrix();
}

protected void renderInventory(ItemStack stack, EntityLivingBase player, UniversiumRenderBehavior urb)
{
GlStateManager.pushMatrix();
GlStateManager.enableBlend();
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
GlStateManager.disableAlpha();
GlStateManager.disableDepth();

World world = player != null ? player.world : null;
IBakedModel model = wrapped.getOverrides().handleItemState(wrapped, stack, world, player);

// Render base model
renderModel(model, stack);

// Render cosmic overlay with shader
if (urb != null) {
GlStateManager.pushMatrix();
GlStateManager.enableBlend();
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
GlStateManager.disableAlpha();
GlStateManager.disableDepth();

GlStateManager.color(1F, 1F, 1F, 1F);
CosmicShaderHelper.cosmicOpacity = urb.getCosmicOpacity(stack);
CosmicShaderHelper.inventoryRender = true;
CosmicShaderHelper.useShader();

renderModel(model, stack);

CosmicShaderHelper.releaseShader();
CosmicShaderHelper.inventoryRender = false;
GlStateManager.popMatrix();
}

GlStateManager.enableAlpha();
GlStateManager.enableRescaleNormal();
GlStateManager.enableDepth();
GlStateManager.disableBlend();
GlStateManager.popMatrix();
}

protected void processLightLevel(ItemCameraTransforms.TransformType transformType)
{
switch (transformType)
{
case GROUND:
if (entityPos != null)
{
CosmicShaderHelper.setLightFromLocation(world, entityPos);
return;
}
break;
case THIRD_PERSON_LEFT_HAND:
case THIRD_PERSON_RIGHT_HAND:
case FIRST_PERSON_LEFT_HAND:
case FIRST_PERSON_RIGHT_HAND:
case HEAD:
if (renderEntity != null)
{
CosmicShaderHelper.setLightFromLocation(world, entityPos);
return;
}
break;
case GUI:
CosmicShaderHelper.setLightLevel(1.2F);
return;
default:
break;
}
CosmicShaderHelper.setLightLevel(1.0F);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import gregtech.api.unification.material.Materials.Uranium238
import gregtech.api.unification.material.info.MaterialIconSet
import gregtechlite.gtlitecore.client.renderer.texture.GTLiteTextures
import gregtechlite.gtlitecore.common.item.behavior.HaloRenderItemBehavior
import gregtechlite.gtlitecore.common.item.behavior.UniversiumRenderItemBehavior

object GTLiteMaterialIconSet
{
Expand Down Expand Up @@ -68,7 +69,8 @@ object GTLiteMaterialIconSet
val WHITE_DWARF = iconSet("white_dwarf")

@JvmField
val UNIVERSIUM = iconSet("universium")
val UNIVERSIUM = MaterialIconSetWithRenderer("universium", null, true,
UniversiumRenderItemBehavior())

@JvmField
val CHROMATIC = iconSet("chromatic")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package gregtechlite.gtlitecore.common.item.behavior

import codechicken.lib.model.ModelRegistryHelper
import codechicken.lib.util.TransformUtils
import gregtechlite.gtlitecore.client.renderer.UniversiumRenderBehavior
import gregtechlite.gtlitecore.client.renderer.handler.UniversiumItemRenderer
import net.minecraft.client.renderer.block.model.ModelResourceLocation
import net.minecraft.util.ResourceLocation
import net.minecraftforge.fml.relauncher.Side
import net.minecraftforge.fml.relauncher.SideOnly

class UniversiumRenderItemBehavior(private val cosmicOpacity: Float = 2.5f) : UniversiumRenderBehavior
{

override fun getCosmicOpacity(): Float = cosmicOpacity

@SideOnly(Side.CLIENT)
override fun onRendererRegistry(location: ResourceLocation)
{
ModelRegistryHelper.register(ModelResourceLocation(location, "inventory"),
UniversiumItemRenderer(TransformUtils.DEFAULT_ITEM) { modelRegistry ->
modelRegistry.getObject(ModelResourceLocation(location, "inventory"))
})
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "gregtech:items/material_sets/universium/wire_fine",
"layer1": "gregtech:items/material_sets/universium/wire_fine_overlay"
"layer0": "gregtech:items/material_sets/universium/wire_fine"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"animation": {
"interpolate": true,
"frametime": 4
"frametime": 1
}
}
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

Binary file not shown.
Binary file not shown.