mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
swirlier black hole, some anvil work
This commit is contained in:
parent
edd359d3b2
commit
e81b466b26
62
src/main/java/com/hbm/inventory/AnvilRecipes.java
Normal file
62
src/main/java/com/hbm/inventory/AnvilRecipes.java
Normal file
@ -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<AnvilSmithingRecipe> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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 {
|
||||
|
||||
@ -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 });
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
BIN
src/main/resources/assets/hbm/textures/entity/bholeDisc.png
Normal file
BIN
src/main/resources/assets/hbm/textures/entity/bholeDisc.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
BIN
src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png
Normal file
BIN
src/main/resources/assets/hbm/textures/entity/bholeDiscAlt.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Loading…
x
Reference in New Issue
Block a user