From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../fbs/tileentity/render/RenderMagicCircle.java | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/tileentity/render/RenderMagicCircle.java (limited to 'src/main/java/jp/plusplus/fbs/tileentity/render/RenderMagicCircle.java') diff --git a/src/main/java/jp/plusplus/fbs/tileentity/render/RenderMagicCircle.java b/src/main/java/jp/plusplus/fbs/tileentity/render/RenderMagicCircle.java new file mode 100644 index 0000000..1f662d4 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/tileentity/render/RenderMagicCircle.java @@ -0,0 +1,92 @@ +package jp.plusplus.fbs.tileentity.render; + +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.ProxyClient; +import jp.plusplus.fbs.tileentity.TileEntityMagicCore; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import java.util.HashMap; + +/** + * Created by pluslus_F on 2015/06/18. + */ +public class RenderMagicCircle extends TileEntitySpecialRenderer { + private static HashMap icons=new HashMap(); + public static RenderMagicCircle renderer; + + public void renderTileEntityCupAt(TileEntityMagicCore par1Tile, double par2, double par4, double par6, float par8) { + this.setRotation(par1Tile, (float) par2, (float) par4, (float) par6); + } + + public void setTileEntityRenderer(TileEntityRendererDispatcher par1TileEntityRenderer) { + super.func_147497_a(par1TileEntityRenderer); + renderer = this; + } + + public void setRotation(TileEntityMagicCore par0Tile, float par1, float par2, float par3) { + //テセレータを使って、一枚の平面テクスチャとして表示させる。 + + Tessellator tessellator = Tessellator.instance; + String name = par0Tile.getCircleName(); + float tick = FBS.proxy.getRenderPartialTicks(); + + if (!name.equals("null")) { + float r = par0Tile.getCircleRadius(); + + //コメントアウト部分を復帰させると、水面の描写が半透明になる。 + GL11.glPushMatrix(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(2.0F, 2.0F, 2.0F, 0.75F); + GL11.glTranslatef((float) par1 + 0.5f, (float) par2, (float) par3 + 0.5f); + GL11.glRotatef(360.0f / 120.0f * ((par0Tile.ticks % 120) + tick), 0f, 1f, 0f); + + + IIcon iicon = GetMagicCircleIcon(name); + float f14 = iicon.getMinU(); + float f15 = iicon.getMaxU(); + float f4 = iicon.getMinV(); + float f5 = iicon.getMaxV(); + + this.bindTexture(TextureMap.locationBlocksTexture); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + tessellator.addVertexWithUV(-0.5f - r, 0.0625D, 0.5f + r, (double) f15, (double) f4); + tessellator.addVertexWithUV(0.5f + r, 0.0625D, 0.5f + r, (double) f14, (double) f4); + tessellator.addVertexWithUV(0.5f + r, 0.0625D, -0.5f - r, (double) f14, (double) f5); + tessellator.addVertexWithUV(-0.5f - r, 0.0625D, -0.5f - r, (double) f15, (double) f5); + tessellator.draw(); + + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } + } + + public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) { + this.renderTileEntityCupAt((TileEntityMagicCore) par1TileEntity, par2, par4, par6, par8); + } + + public static void ClearMagicCircleIcons(){ + icons.clear(); + } + public static void RegisterMagicCircleIcon(String name, TextureMap ir, String iconName){ + if(icons.containsKey(name)) icons.remove(name); + icons.put(name, ir.registerIcon(iconName)); + } + public static IIcon GetMagicCircleIcon(String name){ + return icons.get(name); + } + +} -- cgit v1.2.3