2022-11-18 20:08:58 +01:00
|
|
|
package net.anvilcraft.classiccasting;
|
|
|
|
|
|
|
|
import net.minecraft.block.Block;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
|
|
import net.minecraft.client.renderer.texture.TextureMap;
|
|
|
|
import net.minecraft.item.ItemBlock;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.IIcon;
|
|
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
|
|
|
|
public class UtilsFX {
|
|
|
|
public static void render3DItem(
|
|
|
|
final ItemStack par2ItemStack,
|
|
|
|
final int par3,
|
|
|
|
final float scale,
|
|
|
|
final int brightness
|
|
|
|
) {
|
|
|
|
final Minecraft mc = Minecraft.getMinecraft();
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
Block block = null;
|
|
|
|
if (par2ItemStack.getItem() instanceof ItemBlock) {
|
|
|
|
block = Block.getBlockFromItem(par2ItemStack.getItem());
|
|
|
|
}
|
|
|
|
if (block != null && par2ItemStack.getItemSpriteNumber() == 0
|
|
|
|
&& RenderBlocks.renderItemIn3d(block.getRenderType())) {
|
|
|
|
mc.renderEngine.bindTexture(TextureMap.locationBlocksTexture);
|
|
|
|
RenderBlocks.getInstance().renderBlockAsItem(
|
|
|
|
block, par2ItemStack.getItemDamage(), 1.0f
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
final IIcon icon = Minecraft.getMinecraft().renderViewEntity.getItemIcon(
|
|
|
|
par2ItemStack, par3
|
|
|
|
);
|
|
|
|
if (icon == null) {
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (par2ItemStack.getItemSpriteNumber() == 0) {
|
|
|
|
mc.renderEngine.bindTexture(TextureMap.locationBlocksTexture);
|
|
|
|
} else {
|
|
|
|
mc.renderEngine.bindTexture(TextureMap.locationItemsTexture);
|
|
|
|
}
|
|
|
|
final Tessellator tessellator = Tessellator.instance;
|
|
|
|
final float f = icon.getMinU();
|
|
|
|
final float f2 = icon.getMaxU();
|
|
|
|
final float f3 = icon.getMinV();
|
|
|
|
final float f4 = icon.getMaxV();
|
|
|
|
GL11.glEnable(32826);
|
|
|
|
final float f7 = scale;
|
|
|
|
GL11.glScalef(f7, f7, f7);
|
|
|
|
renderItemIn2D(
|
|
|
|
tessellator,
|
|
|
|
f2,
|
|
|
|
f3,
|
|
|
|
f,
|
|
|
|
f4,
|
|
|
|
icon.getIconWidth(),
|
|
|
|
icon.getIconHeight(),
|
|
|
|
0.0625f,
|
|
|
|
brightness
|
|
|
|
);
|
|
|
|
if (par2ItemStack != null && par2ItemStack.hasEffect(0) && par3 == 0) {
|
|
|
|
GL11.glDepthFunc(514);
|
|
|
|
GL11.glDisable(2896);
|
|
|
|
// TODO: WTF
|
|
|
|
mc.renderEngine.bindTexture(new ResourceLocation("%blur%/misc/glint.png")
|
|
|
|
);
|
|
|
|
GL11.glEnable(3042);
|
|
|
|
GL11.glBlendFunc(768, 1);
|
|
|
|
final float f8 = 0.76f;
|
|
|
|
GL11.glColor4f(0.5f * f8, 0.25f * f8, 0.8f * f8, 1.0f);
|
|
|
|
GL11.glMatrixMode(5890);
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
final float f9 = 0.125f;
|
|
|
|
GL11.glScalef(f9, f9, f9);
|
|
|
|
float f10 = Minecraft.getSystemTime() % 3000L / 3000.0f * 8.0f;
|
|
|
|
GL11.glTranslatef(f10, 0.0f, 0.0f);
|
|
|
|
GL11.glRotatef(-50.0f, 0.0f, 0.0f, 1.0f);
|
|
|
|
renderItemIn2D(
|
|
|
|
tessellator, 0.0f, 0.0f, 1.0f, 1.0f, 256, 256, 0.0625f, brightness
|
|
|
|
);
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
GL11.glPushMatrix();
|
|
|
|
GL11.glScalef(f9, f9, f9);
|
|
|
|
f10 = Minecraft.getSystemTime() % 4873L / 4873.0f * 8.0f;
|
|
|
|
GL11.glTranslatef(-f10, 0.0f, 0.0f);
|
|
|
|
GL11.glRotatef(10.0f, 0.0f, 0.0f, 1.0f);
|
|
|
|
renderItemIn2D(
|
|
|
|
tessellator, 0.0f, 0.0f, 1.0f, 1.0f, 256, 256, 0.0625f, brightness
|
|
|
|
);
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
GL11.glMatrixMode(5888);
|
|
|
|
GL11.glDisable(3042);
|
|
|
|
GL11.glEnable(2896);
|
|
|
|
GL11.glDepthFunc(515);
|
|
|
|
}
|
|
|
|
GL11.glDisable(32826);
|
|
|
|
}
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void renderItemIn2D(
|
|
|
|
Tessellator tes,
|
|
|
|
float p_78439_1_,
|
|
|
|
float p_78439_2_,
|
|
|
|
float p_78439_3_,
|
|
|
|
float p_78439_4_,
|
|
|
|
int p_78439_5_,
|
|
|
|
int p_78439_6_,
|
|
|
|
float p_78439_7_,
|
|
|
|
int brightness
|
|
|
|
) {
|
|
|
|
tes.startDrawingQuads();
|
|
|
|
tes.setBrightness(brightness);
|
|
|
|
tes.setNormal(0.0F, 0.0F, 1.0F);
|
2023-01-12 18:22:43 +01:00
|
|
|
tes.addVertexWithUV(0.0D, 0.0D, 0.0D, (double) p_78439_1_, (double) p_78439_4_);
|
|
|
|
tes.addVertexWithUV(1.0D, 0.0D, 0.0D, (double) p_78439_3_, (double) p_78439_4_);
|
|
|
|
tes.addVertexWithUV(1.0D, 1.0D, 0.0D, (double) p_78439_3_, (double) p_78439_2_);
|
|
|
|
tes.addVertexWithUV(0.0D, 1.0D, 0.0D, (double) p_78439_1_, (double) p_78439_2_);
|
2022-11-18 20:08:58 +01:00
|
|
|
tes.draw();
|
|
|
|
tes.startDrawingQuads();
|
|
|
|
tes.setBrightness(brightness);
|
|
|
|
tes.setNormal(0.0F, 0.0F, -1.0F);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
0.0D,
|
|
|
|
1.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_1_,
|
|
|
|
(double) p_78439_2_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
1.0D,
|
|
|
|
1.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_3_,
|
|
|
|
(double) p_78439_2_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
1.0D,
|
|
|
|
0.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_3_,
|
|
|
|
(double) p_78439_4_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
0.0D,
|
|
|
|
0.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_1_,
|
|
|
|
(double) p_78439_4_
|
|
|
|
);
|
|
|
|
tes.draw();
|
|
|
|
float f5 = 0.5F * (p_78439_1_ - p_78439_3_) / (float) p_78439_5_;
|
|
|
|
float f6 = 0.5F * (p_78439_4_ - p_78439_2_) / (float) p_78439_6_;
|
|
|
|
tes.startDrawingQuads();
|
|
|
|
tes.setBrightness(brightness);
|
|
|
|
tes.setNormal(-1.0F, 0.0F, 0.0F);
|
|
|
|
int k;
|
|
|
|
float f7;
|
|
|
|
float f8;
|
|
|
|
|
|
|
|
for (k = 0; k < p_78439_5_; ++k) {
|
|
|
|
f7 = (float) k / (float) p_78439_5_;
|
|
|
|
f8 = p_78439_1_ + (p_78439_3_ - p_78439_1_) * f7 - f5;
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f7,
|
|
|
|
0.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) f8,
|
|
|
|
(double) p_78439_4_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f7, 0.0D, 0.0D, (double) f8, (double) p_78439_4_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f7, 1.0D, 0.0D, (double) f8, (double) p_78439_2_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f7,
|
|
|
|
1.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) f8,
|
|
|
|
(double) p_78439_2_
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
tes.draw();
|
|
|
|
tes.startDrawingQuads();
|
|
|
|
tes.setBrightness(brightness);
|
|
|
|
tes.setNormal(1.0F, 0.0F, 0.0F);
|
|
|
|
float f9;
|
|
|
|
|
|
|
|
for (k = 0; k < p_78439_5_; ++k) {
|
|
|
|
f7 = (float) k / (float) p_78439_5_;
|
|
|
|
f8 = p_78439_1_ + (p_78439_3_ - p_78439_1_) * f7 - f5;
|
|
|
|
f9 = f7 + 1.0F / (float) p_78439_5_;
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f9,
|
|
|
|
1.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) f8,
|
|
|
|
(double) p_78439_2_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f9, 1.0D, 0.0D, (double) f8, (double) p_78439_2_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f9, 0.0D, 0.0D, (double) f8, (double) p_78439_4_
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
(double) f9,
|
|
|
|
0.0D,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) f8,
|
|
|
|
(double) p_78439_4_
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
tes.draw();
|
|
|
|
tes.startDrawingQuads();
|
|
|
|
tes.setBrightness(brightness);
|
|
|
|
tes.setNormal(0.0F, 1.0F, 0.0F);
|
|
|
|
|
|
|
|
for (k = 0; k < p_78439_6_; ++k) {
|
|
|
|
f7 = (float) k / (float) p_78439_6_;
|
|
|
|
f8 = p_78439_4_ + (p_78439_2_ - p_78439_4_) * f7 - f6;
|
|
|
|
f9 = f7 + 1.0F / (float) p_78439_6_;
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
0.0D, (double) f9, 0.0D, (double) p_78439_1_, (double) f8
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
1.0D, (double) f9, 0.0D, (double) p_78439_3_, (double) f8
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
1.0D,
|
|
|
|
(double) f9,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_3_,
|
|
|
|
(double) f8
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
0.0D,
|
|
|
|
(double) f9,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_1_,
|
|
|
|
(double) f8
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
tes.draw();
|
|
|
|
tes.startDrawingQuads();
|
|
|
|
tes.setBrightness(brightness);
|
|
|
|
tes.setNormal(0.0F, -1.0F, 0.0F);
|
|
|
|
|
|
|
|
for (k = 0; k < p_78439_6_; ++k) {
|
|
|
|
f7 = (float) k / (float) p_78439_6_;
|
|
|
|
f8 = p_78439_4_ + (p_78439_2_ - p_78439_4_) * f7 - f6;
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
1.0D, (double) f7, 0.0D, (double) p_78439_3_, (double) f8
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
0.0D, (double) f7, 0.0D, (double) p_78439_1_, (double) f8
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
0.0D,
|
|
|
|
(double) f7,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_1_,
|
|
|
|
(double) f8
|
|
|
|
);
|
|
|
|
tes.addVertexWithUV(
|
|
|
|
1.0D,
|
|
|
|
(double) f7,
|
|
|
|
(double) (0.0F - p_78439_7_),
|
|
|
|
(double) p_78439_3_,
|
|
|
|
(double) f8
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
tes.draw();
|
|
|
|
}
|
|
|
|
}
|