Add remnants

This commit is contained in:
Electroblob77
2020-05-21 18:40:01 +01:00
parent 30f2a99a2c
commit 1275f1d31f
21 changed files with 665 additions and 1 deletions
@@ -746,6 +746,7 @@ public class ClientProxy extends CommonProxy {
RenderingRegistry.registerEntityRenderingHandler(EntityWizard.class, RenderWizard::new);
RenderingRegistry.registerEntityRenderingHandler(EntityEvilWizard.class, RenderEvilWizard::new);
RenderingRegistry.registerEntityRenderingHandler(EntityDecoy.class, RenderDecoy::new);
RenderingRegistry.registerEntityRenderingHandler(EntityRemnant.class, RenderRemnant::new);
// Throwables
RenderingRegistry.registerEntityRenderingHandler(EntitySparkBomb.class,
@@ -0,0 +1,48 @@
package electroblob.wizardry.client.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
/** Based on ModelEnderCrystal */
public class ModelRemnant extends ModelBase {
private final ModelRenderer cube = new ModelRenderer(this, "cube");
public ModelRemnant(){
this.cube.setTextureOffset(0, 0).addBox(-4.0F, -4.0F, -4.0F, 8, 8, 8);
}
@Override
public void render(Entity entity, float rotationSpeed, float expandFraction, float age, float netHeadYaw, float headPitch, float scale){
GlStateManager.pushMatrix();
// GlStateManager.scale(2.0F, 2.0F, 2.0F);
// GlStateManager.translate(0.0F, -0.5F, 0.0F);
GlStateManager.disableCull();
GlStateManager.translate(0.0F, entity.height/2, 0.0F);
float s = expandFraction + MathHelper.sin(age * 0.1f) * 0.06f;
GlStateManager.scale(s, s, s);
GlStateManager.rotate(age * rotationSpeed/2, 0.0F, 1.0F, 0.0F);
GlStateManager.rotate(60.0F, 0.7071F, 0.0F, 0.7071F);
GlStateManager.rotate(age * rotationSpeed, 0.0F, 1.0F, 0.0F);
this.cube.render(scale);
GlStateManager.scale(0.875F, 0.875F, 0.875F);
GlStateManager.rotate(60.0F, 0.7071F, 0.0F, 0.7071F);
GlStateManager.rotate(age * rotationSpeed, 0.0F, 1.0F, 0.0F);
this.cube.render(scale);
GlStateManager.enableCull();
GlStateManager.popMatrix();
}
}
@@ -0,0 +1,75 @@
package electroblob.wizardry.client.renderer;
import electroblob.wizardry.Wizardry;
import electroblob.wizardry.client.model.ModelRemnant;
import electroblob.wizardry.entity.living.EntityRemnant;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import javax.annotation.Nullable;
public class RenderRemnant extends Render<EntityRemnant> {
private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/entity/remnant.png");
private final ModelRemnant model;
public RenderRemnant(RenderManager manager){
super(manager);
model = new ModelRemnant();
}
@Override
public void doRender(EntityRemnant entity, double x, double y, double z, float entityYaw, float partialTicks){
float age = (float)entity.ticksExisted + partialTicks;
GlStateManager.pushMatrix();
GlStateManager.translate((float)x, (float)y, (float)z);
this.bindTexture(TEXTURE);
// float whatIsThis = MathHelper.sin(age * 0.2F) / 2.0F + 0.5F;
// whatIsThis = whatIsThis * whatIsThis + whatIsThis;
if(this.renderOutlines){
GlStateManager.enableColorMaterial();
GlStateManager.enableOutlineMode(this.getTeamColor(entity));
}
float expansion = 0.9f;
if(entity.deathTime > 0){
float f = (entity.deathTime + partialTicks) * 0.25f;
f = 1 - (1 / (f + 1));
expansion -= f * 0.75f;
}else if(entity.hurtTime > 0){
float f = (entity.hurtTime - partialTicks) / entity.maxHurtTime;
// Neat bit of maths borrowed from the camera tilt effect when hurt
f = MathHelper.sin(f * f * f * f * (float)Math.PI);
expansion += f * 0.2f;
}
// if(entity.isAttacking()) s -= 0.4f;
float rotationSpeed = entity.isAttacking() ? 10 : 3;
this.model.render(entity, rotationSpeed, expansion, age, 0, 0, 0.0625f);
if(this.renderOutlines){
GlStateManager.disableOutlineMode();
GlStateManager.disableColorMaterial();
}
GlStateManager.popMatrix();
super.doRender(entity, x, y, z, entityYaw, partialTicks);
}
@Nullable
@Override
protected ResourceLocation getEntityTexture(EntityRemnant entity){
return TEXTURE;
}
}