diff --git a/src/main/java/com/hbm/inventory/AnvilRecipes.java b/src/main/java/com/hbm/inventory/AnvilRecipes.java new file mode 100644 index 000000000..fc5696e0f --- /dev/null +++ b/src/main/java/com/hbm/inventory/AnvilRecipes.java @@ -0,0 +1,62 @@ +package com.hbm.inventory; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class AnvilRecipes { + + private static List smithingRecipes = new ArrayList(); + + public static void register() { + + smithingRecipes.add(new AnvilSmithingRecipe(2, new ItemStack(ModItems.plate_steel, 2), + new OreDictStack("ingotSteel"), new OreDictStack("ingotSteel"))); + } + + public static class AnvilSmithingRecipe { + + int tier; + ItemStack output; + AStack left; + AStack right; + boolean shapeless = false; + + public AnvilSmithingRecipe(int tier, ItemStack out, AStack left, AStack right) { + this.tier = tier; + this.output = out; + this.left = left; + this.right = right; + } + + public AnvilSmithingRecipe makeShapeless() { + this.shapeless = true; + return this; + } + + public boolean matches(ItemStack left, ItemStack right) { + + if(doesStackMatch(left, this.left) && doesStackMatch(right, this.right)) + return true; + + if(shapeless) { + return doesStackMatch(right, this.left) && doesStackMatch(left, this.right); + } + + return false; + } + + public boolean doesStackMatch(ItemStack input, AStack recipe) { + return recipe.matchesRecipe(input); + } + + public ItemStack getOutput(ItemStack left, ItemStack right) { + return output.copy(); + } + } +} diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index 489fda465..13a942a0f 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -72,6 +72,8 @@ public class RecipesCommon { return false; } + public abstract boolean matchesRecipe(ItemStack stack); + public abstract AStack copy(); } @@ -212,6 +214,24 @@ public class RecipesCommon { public AStack copy() { return new ComparableStack(item, stacksize, meta); } + + @Override + public boolean matchesRecipe(ItemStack stack) { + + if(stack == null) + return false; + + if(stack.getItem() != this.item) + return false; + + if(this.meta != OreDictionary.WILDCARD_VALUE && stack.getItemDamage() != this.meta) + return false; + + if(stack.stackSize < this.stacksize) + return false; + + return false; + } } /* @@ -301,6 +321,25 @@ public class RecipesCommon { public AStack copy() { return new OreDictStack(name, stacksize); } + + @Override + public boolean matchesRecipe(ItemStack stack) { + + if(stack == null) + return false; + + int[] ids = OreDictionary.getOreIDs(stack); + + if(ids == null || ids.length == 0) + return false; + + for(int i = 0; i < ids.length; i++) { + if(this.name.equals(OreDictionary.getOreName(ids[i]))) + return true; + } + + return false; + } } public static class MetaBlock { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 283403b5e..43e85651e 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -796,6 +796,8 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.deco_pipe_quad_marked, 8), new Object[] { "PPP", "PCP", "PPP", 'P', ModBlocks.deco_pipe_quad_green, 'C', "dyeGreen" })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.deco_pipe_framed_marked, 8), new Object[] { "PPP", "PCP", "PPP", 'P', ModBlocks.deco_pipe_framed_green, 'C', "dyeGreen" })); + GameRegistry.addRecipe(new ItemStack(ModBlocks.anvil_murky, 1), new Object[] { "PPP", "PCP", "PPP", 'P', ModItems.undefined, 'C', ModBlocks.anvil_steel }); + if(GeneralConfig.enableBabyMode) { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, ModItems.niter }); diff --git a/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java b/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java index 0adc25b0a..191d6ea5c 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java @@ -25,6 +25,7 @@ public class RenderBlackHole extends Render { private IModelCustom blastModel; private ResourceLocation hole = new ResourceLocation(RefStrings.MODID, "textures/models/BlackHole.png"); private ResourceLocation swirl = new ResourceLocation(RefStrings.MODID, "textures/entity/bhole.png"); + private ResourceLocation disc = new ResourceLocation(RefStrings.MODID, "textures/entity/bholeDisc.png"); public RenderBlackHole() { blastModel = AdvancedModelLoader.loadModel(objTesterModelRL); @@ -32,87 +33,254 @@ public class RenderBlackHole extends Render { @Override public void doRender(Entity entity, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); - if(entity instanceof EntityBlackHole) { + float size = entity.getDataWatcher().getWatchableObjectFloat(16); + + GL11.glScalef(size, size, size); + + bindTexture(hole); + blastModel.renderAll(); + + if(entity instanceof EntityVortex) { + renderSwirl(entity, interp); + + } else if(entity instanceof EntityRagingVortex) { + renderSwirl(entity, interp); + renderJets(entity, interp); + + } else { + renderDisc(entity, interp); + renderJets(entity, interp); + } + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glPopMatrix(); + } + + private void renderDisc(Entity entity, float interp) { + + float glow = 0.75F; + + bindTexture(disc); + + GL11.glPushMatrix(); + GL11.glRotatef(entity.getEntityId() % 90 - 45, 1, 0, 0); + GL11.glRotatef(entity.getEntityId() % 360, 0, 1, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(false); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.0F); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + Tessellator tess = Tessellator.instance; + + int count = 16; + + Vec3 vec = Vec3.createVectorHelper(1, 0, 0); + + for(int k = 0; k < 15; k++) { + GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - - float size = entity.getDataWatcher().getWatchableObjectFloat(16); - - GL11.glScalef(size, size, size); - - bindTexture(hole); - blastModel.renderAll(); + GL11.glRotatef((entity.ticksExisted + interp % 360) * -((float)Math.pow(k + 1, 1.25)), 0, 1, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + double s = 3 - k * 0.175D; - renderSwirl(entity, true, interp); - - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); + for(int j = 0; j < 2; j++) { + + tess.startDrawingQuads(); + for(int i = 0; i < count; i++) { + + if(j == 0) + this.setColorFromIteration(tess, k, 1F); + else + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, glow); + + tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + this.setColorFromIteration(tess, k, 0F); + tess.addVertexWithUV(vec.xCoord * s * 2, 0, vec.zCoord * s * 2, 0.5 + vec.xCoord * 0.5, 0.5 + vec.zCoord * 0.5); + + vec.rotateAroundY((float)(Math.PI * 2 / count)); + this.setColorFromIteration(tess, k, 0F); + tess.addVertexWithUV(vec.xCoord * s * 2, 0, vec.zCoord * s * 2, 0.5 + vec.xCoord * 0.5, 0.5 + vec.zCoord * 0.5); + + if(j == 0) + this.setColorFromIteration(tess, k, 1F); + else + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, glow); + + tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + } + tess.draw(); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + } GL11.glPopMatrix(); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glPopMatrix(); + } + + private void setColorFromIteration(Tessellator tess, int iteration, float alpha) { + + if(iteration < 5) { + float g = 0.125F + iteration * (1F / 10F); + tess.setColorRGBA_F(1.0F, g, 0.0F, alpha); + return; + } + + if(iteration == 5) { + tess.setColorRGBA_F(1.0F, 1.0F, 0.0F, alpha); + return; + } + + if(iteration > 5) { + + int i = iteration - 6; + float r = 1.0F - i * (1F / 9F); + float g = 1F - i * (1F / 9F); + float b = i * (1F / 5F); + tess.setColorRGBA_F(r, g, b, alpha); + return; + } + + switch(iteration) { + case 0: tess.setColorRGBA_F(1.0F, 0.0F, 0.0F, alpha); break; + case 1: tess.setColorRGBA_F(1.0F, 0.5F, 0.0F, alpha); break; + case 2: tess.setColorRGBA_F(1.0F, 1.0F, 0.0F, alpha); break; + case 3: tess.setColorRGBA_F(0.5F, 1.0F, 1.0F, alpha); break; } } - private void renderSwirl(Entity entity, boolean hasJet, float interp) { + private void renderSwirl(Entity entity, float interp) { + + float glow = 0.75F; + + if(entity instanceof EntityRagingVortex) + glow = 0.25F; bindTexture(swirl); + GL11.glPushMatrix(); GL11.glRotatef(entity.getEntityId() % 90 - 45, 1, 0, 0); GL11.glRotatef(entity.getEntityId() % 360, 0, 1, 0); GL11.glRotatef((entity.ticksExisted + interp % 360) * -5, 0, 1, 0); GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(false); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.0F); OpenGlHelper.glBlendFunc(770, 771, 1, 0); Vec3 vec = Vec3.createVectorHelper(1, 0, 0); Tessellator tess = Tessellator.instance; - tess.startDrawingQuads(); double s = 3; int count = 16; - for(int i = 0; i < count; i++) { - - tess.setColorRGBA_F(0.0F, 0.0F, 0.0F, 1.0F); - tess.addVertexWithUV(vec.xCoord * 0.9, 0, vec.zCoord * 0.9, 0.5 + vec.xCoord * 0.25 / s * 0.9, 0.5 + vec.zCoord * 0.25 / s * 0.9); - this.setColorFull(entity, tess); - tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + //swirl, inner part (solid) + for(int j = 0; j < 2; j++) { + tess.startDrawingQuads(); + for(int i = 0; i < count; i++) { + + tess.setColorRGBA_F(0.0F, 0.0F, 0.0F, 1.0F); + tess.addVertexWithUV(vec.xCoord * 0.9, 0, vec.zCoord * 0.9, 0.5 + vec.xCoord * 0.25 / s * 0.9, 0.5 + vec.zCoord * 0.25 / s * 0.9); + + if(j == 0) + this.setColorFull(entity, tess); + else + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, glow); + + tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + + vec.rotateAroundY((float)(Math.PI * 2 / count)); + + if(j == 0) + this.setColorFull(entity, tess); + else + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, glow); + + tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + tess.setColorRGBA_F(0.0F, 0.0F, 0.0F, 1.0F); + tess.addVertexWithUV(vec.xCoord * 0.9, 0, vec.zCoord * 0.9, 0.5 + vec.xCoord * 0.25 / s * 0.9, 0.5 + vec.zCoord * 0.25 / s * 0.9); + } - vec.rotateAroundY((float)(Math.PI * 2 / count)); - this.setColorFull(entity, tess); - tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); - tess.setColorRGBA_F(0.0F, 0.0F, 0.0F, 1.0F); - tess.addVertexWithUV(vec.xCoord * 0.9, 0, vec.zCoord * 0.9, 0.5 + vec.xCoord * 0.25 / s * 0.9, 0.5 + vec.zCoord * 0.25 / s * 0.9); + tess.draw(); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); } - tess.draw(); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + //swirl, outer part (fade) + for(int j = 0; j < 2; j++) { + + tess.startDrawingQuads(); + for(int i = 0; i < count; i++) { + + if(j == 0) + this.setColorFull(entity, tess); + else + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, glow); + + tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + this.setColorNone(entity, tess); + tess.addVertexWithUV(vec.xCoord * s * 2, 0, vec.zCoord * s * 2, 0.5 + vec.xCoord * 0.5, 0.5 + vec.zCoord * 0.5); + + vec.rotateAroundY((float)(Math.PI * 2 / count)); + this.setColorNone(entity, tess); + tess.addVertexWithUV(vec.xCoord * s * 2, 0, vec.zCoord * s * 2, 0.5 + vec.xCoord * 0.5, 0.5 + vec.zCoord * 0.5); + + if(j == 0) + this.setColorFull(entity, tess); + else + tess.setColorRGBA_F(1.0F, 1.0F, 1.0F, glow); + + tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); + } + tess.draw(); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + } - tess.startDrawingQuads(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_ALPHA_TEST); + + GL11.glPopMatrix(); + } + + private void renderJets(Entity entity, float interp) { + + Tessellator tess = Tessellator.instance; + + GL11.glPushMatrix(); + GL11.glRotatef(entity.getEntityId() % 90 - 45, 1, 0, 0); + GL11.glRotatef(entity.getEntityId() % 360, 0, 1, 0); + GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glDepthMask(false); GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.0F); GL11.glEnable(GL11.GL_BLEND); - - for(int i = 0; i < count; i++) { - - this.setColorFull(entity, tess); - tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); - this.setColorNone(entity, tess); - tess.addVertexWithUV(vec.xCoord * s * 2, 0, vec.zCoord * s * 2, 0.5 + vec.xCoord * 0.5, 0.5 + vec.zCoord * 0.5); - - vec.rotateAroundY((float)(Math.PI * 2 / count)); - this.setColorNone(entity, tess); - tess.addVertexWithUV(vec.xCoord * s * 2, 0, vec.zCoord * s * 2, 0.5 + vec.xCoord * 0.5, 0.5 + vec.zCoord * 0.5); - this.setColorFull(entity, tess); - tess.addVertexWithUV(vec.xCoord * s, 0, vec.zCoord * s, 0.5 + vec.xCoord * 0.25, 0.5 + vec.zCoord * 0.25); - } - - tess.draw(); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glDisable(GL11.GL_TEXTURE_2D); for(int j = -1; j <= 1; j += 2) { @@ -132,17 +300,18 @@ public class RenderBlackHole extends Render { tess.draw(); } - GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glShadeModel(GL11.GL_FLAT); GL11.glDisable(GL11.GL_BLEND); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glDepthMask(true); GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glPopMatrix(); } private void renderFlare(Entity entity) { - + + GL11.glPushMatrix(); GL11.glScalef(0.2F, 0.2F, 0.2F); Tessellator tessellator = Tessellator.instance; @@ -166,7 +335,6 @@ public class RenderBlackHole extends Render { GL11.glDisable(GL11.GL_ALPHA_TEST); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDepthMask(false); - GL11.glPushMatrix(); for(int i = 0; i < count; i++) { GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); @@ -188,7 +356,6 @@ public class RenderBlackHole extends Render { tessellator.draw(); } - GL11.glPopMatrix(); GL11.glDepthMask(true); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); @@ -197,6 +364,7 @@ public class RenderBlackHole extends Render { GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_ALPHA_TEST); RenderHelper.enableStandardItemLighting(); + GL11.glPopMatrix(); } private void setColorFull(Entity e, Tessellator tessellator) { diff --git a/src/main/java/com/hbm/render/entity/effect/RenderVortex.java b/src/main/java/com/hbm/render/entity/effect/RenderVortex.java deleted file mode 100644 index c5959eb05..000000000 --- a/src/main/java/com/hbm/render/entity/effect/RenderVortex.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.hbm.render.entity.effect; - -import java.util.Random; - -import org.lwjgl.opengl.GL11; - -import com.hbm.entity.effect.EntityBlackHole; -import com.hbm.lib.RefStrings; - -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.entity.Entity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; - -public class RenderVortex extends Render { - - private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/Sphere.obj"); - private IModelCustom blastModel; - private ResourceLocation blastTexture; - - - public RenderVortex() { - blastModel = AdvancedModelLoader.loadModel(objTesterModelRL); - blastTexture = new ResourceLocation(RefStrings.MODID, "textures/models/BlackHole.png"); - - } - - @Override - public void doRender(Entity entity, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { - - if(entity instanceof EntityBlackHole) { - GL11.glPushMatrix(); - GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); - GL11.glRotatef((entity.ticksExisted % 360) * 10, 1, 1, 1); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - - float size = entity.getDataWatcher().getWatchableObjectFloat(16); - - GL11.glScalef(size, size, size); - - bindTexture(blastTexture); - blastModel.renderAll(); - - - GL11.glScalef(0.2F, 0.2F, 0.2F); - - //FLARE START - Tessellator tessellator = Tessellator.instance; - RenderHelper.disableStandardItemLighting(); - int j = 75;//entity.ticksExisted > 250 ? 250 : entity.ticksExisted; - float f1 = (j + 2.0F) / 200.0F; - float f2 = 0.0F; - int count = 250; - - /*if(entity.ticksExisted < 250) - { - count = entity.ticksExisted * 3; - }*/ - - count = j; - - if (f1 > 0.8F) - { - f2 = (f1 - 0.8F) / 0.2F; - } - - Random random = new Random(432L); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDepthMask(false); - GL11.glPushMatrix(); - - //for (int i = 0; (float)i < (f1 + f1 * f1) / 2.0F * 60.0F; ++i) - for(int i = 0; i < count; i++) - { - GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(random.nextFloat() * 360.0F + f1 * 90.0F, 0.0F, 0.0F, 1.0F); - tessellator.startDrawing(6); - float f3 = random.nextFloat() * 20.0F + 5.0F + f2 * 10.0F; - float f4 = random.nextFloat() * 2.0F + 1.0F + f2 * 2.0F; - //tessellator.setColorRGBA_I(16777215, (int)(255.0F * (1.0F - f2))); - tessellator.setColorRGBA_I(0x3898b3, (int)(255.0F * (1.0F/* - f2*/))); - tessellator.addVertex(0.0D, 0.0D, 0.0D); - //tessellator.setColorRGBA_I(16711935, 0); - tessellator.setColorRGBA_I(0x3898b3, 0); - tessellator.addVertex(-0.866D * f4, f3, -0.5F * f4); - tessellator.addVertex(0.866D * f4, f3, -0.5F * f4); - tessellator.addVertex(0.0D, f3, 1.0F * f4); - tessellator.addVertex(-0.866D * f4, f3, -0.5F * f4); - tessellator.draw(); - } - - GL11.glPopMatrix(); - GL11.glPopMatrix(); - GL11.glDepthMask(true); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - GL11.glShadeModel(GL11.GL_FLAT); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_ALPHA_TEST); - RenderHelper.enableStandardItemLighting(); - //FLARE END - - } - } - - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return null; - } -} diff --git a/src/main/resources/assets/hbm/textures/entity/bholeDisc.png b/src/main/resources/assets/hbm/textures/entity/bholeDisc.png new file mode 100644 index 000000000..8b1af7c93 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/bholeDisc.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png b/src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png new file mode 100644 index 000000000..eef976334 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png differ