feat: add minium stone block overlay
This commit is contained in:
parent
3345a53e9e
commit
5e09684be3
|
@ -83,5 +83,9 @@ public class HUDTickHandler {
|
|||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glPopMatrix();
|
||||
GL11.glPopMatrix();
|
||||
|
||||
((IOverlayItem) itemStack.getItem())
|
||||
.getOverlayItemRenderer()
|
||||
.renderOverlayItem(entityPlayer, itemStack);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package com.pahimar.ee3.client.renderer;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
* A renderer to render IOverlayItems in the HUD.
|
||||
*/
|
||||
public interface IOverlayItemRenderer {
|
||||
void renderOverlayItem(EntityPlayer player, ItemStack stack);
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
package com.pahimar.ee3.client.renderer.overlay_item;
|
||||
|
||||
import com.pahimar.ee3.client.renderer.IOverlayItemRenderer;
|
||||
import com.pahimar.ee3.client.util.RenderUtils;
|
||||
import com.pahimar.ee3.util.TransmutationHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class MiniumStoneOverlayItemRenderer implements IOverlayItemRenderer {
|
||||
public static final MiniumStoneOverlayItemRenderer INSTANCE
|
||||
= new MiniumStoneOverlayItemRenderer();
|
||||
|
||||
@Override
|
||||
public void renderOverlayItem(EntityPlayer player, ItemStack stack) {
|
||||
Minecraft minecraft = Minecraft.getMinecraft();
|
||||
//float overlayScale = ConfigurationSettings.TARGET_BLOCK_OVERLAY_SCALE;
|
||||
float overlayScale = 2.0f;
|
||||
float blockScale = overlayScale / 2.0F;
|
||||
//float overlayOpacity = ConfigurationSettings.TARGET_BLOCK_OVERLAY_OPACITY;
|
||||
float overlayOpacity = 1.0f;
|
||||
GL11.glPushMatrix();
|
||||
ScaledResolution sr = new ScaledResolution(
|
||||
minecraft, minecraft.displayWidth, minecraft.displayHeight
|
||||
);
|
||||
GL11.glClear(256);
|
||||
GL11.glMatrixMode(5889);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glOrtho(
|
||||
0.0,
|
||||
sr.getScaledWidth_double(),
|
||||
sr.getScaledHeight_double(),
|
||||
0.0,
|
||||
1000.0,
|
||||
3000.0
|
||||
);
|
||||
GL11.glMatrixMode(5888);
|
||||
GL11.glLoadIdentity();
|
||||
GL11.glTranslatef(0.0F, 0.0F, -2000.0F);
|
||||
GL11.glPushMatrix();
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glEnable(32826);
|
||||
GL11.glEnable(2903);
|
||||
GL11.glEnable(2896);
|
||||
int hudBlockX = 0;
|
||||
int hudBlockY = 0;
|
||||
hudBlockX
|
||||
= (int) ((float) sr.getScaledWidth() - 16.0F * overlayScale / 2.0F - 8.0F);
|
||||
hudBlockY
|
||||
= (int) ((float) sr.getScaledHeight() - 16.0F * overlayScale / 2.0F - 8.0F);
|
||||
|
||||
if (TransmutationHelper.targetBlockStack != null
|
||||
&& TransmutationHelper.targetBlockStack.getItem() instanceof ItemBlock) {
|
||||
RenderUtils.renderRotatingBlockIntoGUI(
|
||||
minecraft.fontRenderer,
|
||||
TransmutationHelper.targetBlockStack,
|
||||
hudBlockX,
|
||||
hudBlockY,
|
||||
-90.0F,
|
||||
blockScale
|
||||
);
|
||||
}
|
||||
|
||||
GL11.glDisable(2896);
|
||||
GL11.glPopMatrix();
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
|
@ -1,7 +1,10 @@
|
|||
package com.pahimar.ee3.client.util;
|
||||
|
||||
import cpw.mods.fml.client.FMLClientHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -11,6 +14,8 @@ import org.lwjgl.opengl.GL11;
|
|||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
public class RenderUtils {
|
||||
private static int rotationAngle = 0;
|
||||
|
||||
public static void bindTexture(ResourceLocation texture) {
|
||||
FMLClientHandler.instance().getClient().getTextureManager().bindTexture(texture);
|
||||
}
|
||||
|
@ -95,4 +100,36 @@ public class RenderUtils {
|
|||
private static double getPulseValue() {
|
||||
return (Math.sin(System.nanoTime() / 100f) + 1) / 2;
|
||||
}
|
||||
|
||||
public static void renderRotatingBlockIntoGUI(
|
||||
FontRenderer fontRenderer,
|
||||
ItemStack stack,
|
||||
int x,
|
||||
int y,
|
||||
float zLevel,
|
||||
float scale
|
||||
) {
|
||||
RenderBlocks renderBlocks = new RenderBlocks();
|
||||
Block block = Block.getBlockFromItem(stack.getItem());
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture
|
||||
);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float) (x - 2), (float) (y + 3), -3.0F + zLevel);
|
||||
GL11.glScalef(10.0F, 10.0F, 10.0F);
|
||||
GL11.glTranslatef(1.0F, 0.5F, 1.0F);
|
||||
GL11.glScalef(1.0F * scale, 1.0F * scale, -1.0F);
|
||||
GL11.glRotatef(210.0F, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glRotatef(0.0F + (float) (1 * rotationAngle), 0.0F, 1.0F, 0.0F);
|
||||
rotationAngle = (rotationAngle + 1) % 360;
|
||||
int var10 = stack.getItem().getColorFromItemStack(stack, 0);
|
||||
float var16 = (float) (var10 >> 16 & 255) / 255.0F;
|
||||
float var12 = (float) (var10 >> 8 & 255) / 255.0F;
|
||||
float var13 = (float) (var10 & 255) / 255.0F;
|
||||
GL11.glColor4f(var16, var12, var13, 1.0F);
|
||||
GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
|
||||
renderBlocks.useInventoryTint = true;
|
||||
renderBlocks.renderBlockAsItem(block, stack.getItemDamage(), 1.0F);
|
||||
renderBlocks.useInventoryTint = true;
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.pahimar.ee3.item;
|
||||
|
||||
import com.pahimar.ee3.EquivalentExchange3;
|
||||
import com.pahimar.ee3.client.renderer.IOverlayItemRenderer;
|
||||
import com.pahimar.ee3.client.renderer.overlay_item.MiniumStoneOverlayItemRenderer;
|
||||
import com.pahimar.ee3.reference.GUIs;
|
||||
import com.pahimar.ee3.reference.Key;
|
||||
import com.pahimar.ee3.reference.Names;
|
||||
|
@ -134,4 +136,10 @@ public class ItemMiniumStone
|
|||
//thePlayer.openGui((Object)EquivalentExchange3.instance, 1, thePlayer.worldObj,
|
||||
//(int)thePlayer.posX, (int)thePlayer.posY, (int)thePlayer.posZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IOverlayItemRenderer getOverlayItemRenderer() {
|
||||
return MiniumStoneOverlayItemRenderer.INSTANCE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
package com.pahimar.ee3.item;
|
||||
|
||||
import com.pahimar.ee3.client.renderer.IOverlayItemRenderer;
|
||||
import com.pahimar.ee3.reference.Key;
|
||||
import com.pahimar.ee3.reference.Names;
|
||||
import com.pahimar.ee3.util.IKeyBound;
|
||||
import com.pahimar.ee3.util.IOverlayItem;
|
||||
import com.pahimar.ee3.util.LogHelper;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -58,4 +62,10 @@ public class ItemPhilosophersStone
|
|||
public void transmuteBlock(
|
||||
ItemStack p0, EntityPlayer p1, World p2, int p3, int p4, int p5, int p6
|
||||
) {}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IOverlayItemRenderer getOverlayItemRenderer() {
|
||||
return (e, s) -> {};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
package com.pahimar.ee3.util;
|
||||
|
||||
public interface IOverlayItem {}
|
||||
import com.pahimar.ee3.client.renderer.IOverlayItemRenderer;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public interface IOverlayItem {
|
||||
@SideOnly(Side.CLIENT)
|
||||
IOverlayItemRenderer getOverlayItemRenderer();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue