initial commit
This commit is contained in:
parent
3c9ee26b06
commit
22186c33b9
1458 changed files with 282792 additions and 0 deletions
28
java/src/game/renderer/layers/LayerArachnoidArmor.java
Executable file
28
java/src/game/renderer/layers/LayerArachnoidArmor.java
Executable file
|
@ -0,0 +1,28 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.renderer.entity.RendererLivingEntity;
|
||||
import game.renderer.model.ModelBiped;
|
||||
|
||||
public class LayerArachnoidArmor extends LayerArmor
|
||||
{
|
||||
public LayerArachnoidArmor(RendererLivingEntity<?> rendererIn)
|
||||
{
|
||||
super(rendererIn, 12, 12);
|
||||
}
|
||||
|
||||
protected void setModelPartVisible(ModelBiped model, int armorSlot)
|
||||
{
|
||||
|
||||
switch (armorSlot)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
model.setVisible(false);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
super.setModelPartVisible(model, armorSlot);
|
||||
}
|
||||
}
|
||||
}
|
202
java/src/game/renderer/layers/LayerArmor.java
Executable file
202
java/src/game/renderer/layers/LayerArmor.java
Executable file
|
@ -0,0 +1,202 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.WCF;
|
||||
import game.entity.types.EntityLiving;
|
||||
import game.item.ItemArmor;
|
||||
import game.item.ItemStack;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RendererLivingEntity;
|
||||
import game.renderer.model.ModelArmor;
|
||||
import game.renderer.model.ModelBiped;
|
||||
|
||||
public class LayerArmor implements LayerRenderer<EntityLiving>
|
||||
{
|
||||
protected static final String ENCHANTED_ITEM_GLINT_RES = "textures/glint.png";
|
||||
|
||||
protected ModelBiped modelLeggings;
|
||||
protected ModelBiped modelArmor;
|
||||
private final RendererLivingEntity<?> renderer;
|
||||
private float alpha = 1.0F;
|
||||
private float colorR = 1.0F;
|
||||
private float colorG = 1.0F;
|
||||
private float colorB = 1.0F;
|
||||
private boolean skipRenderGlint;
|
||||
// private static final Map<String, String> ARMOR_TEXTURE_RES_MAP = Maps.<String, String>newHashMap();
|
||||
|
||||
public LayerArmor(RendererLivingEntity<?> rendererIn, int arms, int legs)
|
||||
{
|
||||
this.renderer = rendererIn;
|
||||
// this.initArmor();
|
||||
this.modelLeggings = new ModelArmor(0.5F, arms, legs);
|
||||
this.modelArmor = new ModelArmor(1.0F, arms, legs);
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityLiving entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
this.renderLayer(entitylivingbaseIn, p_177141_2_, p_177141_3_, partialTicks, p_177141_5_, p_177141_6_, p_177141_7_, scale, 4);
|
||||
this.renderLayer(entitylivingbaseIn, p_177141_2_, p_177141_3_, partialTicks, p_177141_5_, p_177141_6_, p_177141_7_, scale, 3);
|
||||
this.renderLayer(entitylivingbaseIn, p_177141_2_, p_177141_3_, partialTicks, p_177141_5_, p_177141_6_, p_177141_7_, scale, 2);
|
||||
this.renderLayer(entitylivingbaseIn, p_177141_2_, p_177141_3_, partialTicks, p_177141_5_, p_177141_6_, p_177141_7_, scale, 1);
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
private void renderLayer(EntityLiving entitylivingbaseIn, float p_177182_2_, float p_177182_3_, float partialTicks, float p_177182_5_, float p_177182_6_, float p_177182_7_, float scale, int armorSlot)
|
||||
{
|
||||
ItemStack itemstack = this.getCurrentArmor(entitylivingbaseIn, armorSlot);
|
||||
|
||||
if (itemstack != null && itemstack.getItem() instanceof ItemArmor)
|
||||
{
|
||||
ItemArmor itemarmor = (ItemArmor)itemstack.getItem();
|
||||
ModelBiped t = this.getArmorModel(armorSlot);
|
||||
t.setModelAttributes(this.renderer.getMainModel());
|
||||
t.setLivingAnimations(entitylivingbaseIn, p_177182_2_, p_177182_3_, partialTicks);
|
||||
this.setModelPartVisible(t, armorSlot);
|
||||
boolean flag = this.isSlotForLeggings(armorSlot);
|
||||
this.renderer.bindTexture(this.getArmorResource(itemarmor, flag, null));
|
||||
|
||||
if (itemarmor.getArmorMaterial().canBeDyed())
|
||||
{
|
||||
int i = itemarmor.getArmorColor(itemstack);
|
||||
float f = (float)(i >> 16 & 255) / 255.0F;
|
||||
float f1 = (float)(i >> 8 & 255) / 255.0F;
|
||||
float f2 = (float)(i & 255) / 255.0F;
|
||||
GlState.color(this.colorR * f, this.colorG * f1, this.colorB * f2, this.alpha);
|
||||
t.render(entitylivingbaseIn, p_177182_2_, p_177182_3_, p_177182_5_, p_177182_6_, p_177182_7_, scale);
|
||||
this.renderer.bindTexture(this.getArmorResource(itemarmor, flag, "overlay"));
|
||||
}
|
||||
|
||||
// case CHAIN:
|
||||
// case IRON:
|
||||
// case GOLD:
|
||||
// case DIAMOND:
|
||||
if(itemarmor.getArmorMaterial().hasArmor()) {
|
||||
GlState.color(this.colorR, this.colorG, this.colorB, this.alpha);
|
||||
t.render(entitylivingbaseIn, p_177182_2_, p_177182_3_, p_177182_5_, p_177182_6_, p_177182_7_, scale);
|
||||
}
|
||||
|
||||
// default:
|
||||
if (!this.skipRenderGlint && itemstack.isItemEnchanted())
|
||||
{
|
||||
this.renderGlint(entitylivingbaseIn, t, p_177182_2_, p_177182_3_, partialTicks, p_177182_5_, p_177182_6_, p_177182_7_, scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack getCurrentArmor(EntityLiving entitylivingbaseIn, int armorSlot)
|
||||
{
|
||||
return entitylivingbaseIn.getArmor(armorSlot - 1);
|
||||
}
|
||||
|
||||
public ModelBiped getArmorModel(int armorSlot)
|
||||
{
|
||||
return this.isSlotForLeggings(armorSlot) ? this.modelLeggings : this.modelArmor;
|
||||
}
|
||||
|
||||
private boolean isSlotForLeggings(int armorSlot)
|
||||
{
|
||||
return armorSlot == 2;
|
||||
}
|
||||
|
||||
private void renderGlint(EntityLiving entitylivingbaseIn, ModelBiped modelbaseIn, float p_177183_3_, float p_177183_4_, float partialTicks, float p_177183_6_, float p_177183_7_, float p_177183_8_, float scale)
|
||||
{
|
||||
float f = (float)entitylivingbaseIn.ticksExisted + partialTicks;
|
||||
this.renderer.bindTexture(ENCHANTED_ITEM_GLINT_RES);
|
||||
GlState.enableBlend();
|
||||
GlState.depthFunc(514);
|
||||
GlState.depthMask(false);
|
||||
float f1 = 0.5F;
|
||||
GlState.color(f1, f1, f1, 1.0F);
|
||||
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
GlState.disableLighting();
|
||||
GlState.blendFunc(768, 1);
|
||||
float f2 = 0.76F;
|
||||
GlState.color(0.5F * f2, 0.25F * f2, 0.8F * f2, 1.0F);
|
||||
WCF.glMatrixMode(5890);
|
||||
WCF.glLoadIdentity();
|
||||
float f3 = 0.33333334F;
|
||||
WCF.glScalef(f3, f3, f3);
|
||||
WCF.glRotatef(30.0F - (float)i * 60.0F, 0.0F, 0.0F, 1.0F);
|
||||
WCF.glTranslatef(0.0F, f * (0.001F + (float)i * 0.003F) * 20.0F, 0.0F);
|
||||
WCF.glMatrixMode(5888);
|
||||
modelbaseIn.render(entitylivingbaseIn, p_177183_3_, p_177183_4_, p_177183_6_, p_177183_7_, p_177183_8_, scale);
|
||||
}
|
||||
|
||||
WCF.glMatrixMode(5890);
|
||||
WCF.glLoadIdentity();
|
||||
WCF.glMatrixMode(5888);
|
||||
GlState.enableLighting();
|
||||
GlState.depthMask(true);
|
||||
GlState.depthFunc(515);
|
||||
GlState.disableBlend();
|
||||
}
|
||||
|
||||
// private String getArmorResource(ItemArmor item, boolean legs)
|
||||
// {
|
||||
// return this.getArmorResource(item, legs, null);
|
||||
// }
|
||||
|
||||
private String getArmorResource(ItemArmor item, boolean legs, String layer)
|
||||
{
|
||||
return String.format("textures/armor/%s_layer_%d%s.png", item.getArmorTexture(), legs ? 2 : 1,
|
||||
layer == null ? "" : ("_" + layer));
|
||||
// ResourceLocation resourcelocation = (ResourceLocation)ARMOR_TEXTURE_RES_MAP.get(s);
|
||||
//
|
||||
// if (resourcelocation == null)
|
||||
// {
|
||||
// resourcelocation = new ResourceLocation(s);
|
||||
// ARMOR_TEXTURE_RES_MAP.put(s, resourcelocation);
|
||||
// }
|
||||
//
|
||||
// return s;
|
||||
}
|
||||
|
||||
// protected abstract void initArmor();
|
||||
|
||||
// protected abstract void setModelPartVisible(T model, int armorSlot);
|
||||
|
||||
// protected void initArmor()
|
||||
// {
|
||||
// this.modelLeggings = new ModelBiped(0.5F);
|
||||
// this.modelArmor = new ModelBiped(1.0F);
|
||||
// }
|
||||
|
||||
protected void setModelPartVisible(ModelBiped model, int armorSlot)
|
||||
{
|
||||
model.setVisible(false);
|
||||
|
||||
switch (armorSlot)
|
||||
{
|
||||
case 1:
|
||||
model.bipedRightLeg.showModel = true;
|
||||
model.bipedLeftLeg.showModel = true;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
model.bipedBody.showModel = true;
|
||||
model.bipedRightLeg.showModel = true;
|
||||
model.bipedLeftLeg.showModel = true;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
model.bipedBody.showModel = true;
|
||||
model.bipedRightArm.showModel = true;
|
||||
model.bipedLeftArm.showModel = true;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
model.bipedHead.showModel = true;
|
||||
model.bipedHeadwear.showModel = true;
|
||||
}
|
||||
}
|
||||
|
||||
// protected void setModelVisible(ModelBiped model)
|
||||
// {
|
||||
// model.setVisible(false);
|
||||
// }
|
||||
}
|
70
java/src/game/renderer/layers/LayerArrow.java
Executable file
70
java/src/game/renderer/layers/LayerArrow.java
Executable file
|
@ -0,0 +1,70 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.ExtMath;
|
||||
import game.WCF;
|
||||
import game.entity.Entity;
|
||||
import game.entity.projectile.EntityArrow;
|
||||
import game.entity.types.EntityLiving;
|
||||
import game.renderer.ItemRenderer;
|
||||
import game.renderer.entity.RendererLivingEntity;
|
||||
import game.renderer.model.ModelBox;
|
||||
import game.renderer.model.ModelRenderer;
|
||||
import game.rng.Random;
|
||||
|
||||
public class LayerArrow implements LayerRenderer<EntityLiving>
|
||||
{
|
||||
private final RendererLivingEntity field_177168_a;
|
||||
|
||||
public LayerArrow(RendererLivingEntity p_i46124_1_)
|
||||
{
|
||||
this.field_177168_a = p_i46124_1_;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityLiving entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
int i = entitylivingbaseIn.getArrowCountInEntity();
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
Entity entity = new EntityArrow(entitylivingbaseIn.worldObj, entitylivingbaseIn.posX, entitylivingbaseIn.posY, entitylivingbaseIn.posZ);
|
||||
Random random = new Random((long)entitylivingbaseIn.getId());
|
||||
ItemRenderer.disableStandardItemLighting();
|
||||
|
||||
for (int j = 0; j < i; ++j)
|
||||
{
|
||||
WCF.glPushMatrix();
|
||||
ModelRenderer modelrenderer = this.field_177168_a.getMainModel().getRandomModelBox(random);
|
||||
ModelBox modelbox = (ModelBox)modelrenderer.cubeList.get(random.zrange(modelrenderer.cubeList.size()));
|
||||
modelrenderer.postRender(0.0625F);
|
||||
float f = random.floatv();
|
||||
float f1 = random.floatv();
|
||||
float f2 = random.floatv();
|
||||
float f3 = (modelbox.posX1 + (modelbox.posX2 - modelbox.posX1) * f) / 16.0F;
|
||||
float f4 = (modelbox.posY1 + (modelbox.posY2 - modelbox.posY1) * f1) / 16.0F;
|
||||
float f5 = (modelbox.posZ1 + (modelbox.posZ2 - modelbox.posZ1) * f2) / 16.0F;
|
||||
WCF.glTranslatef(f3, f4, f5);
|
||||
f = f * 2.0F - 1.0F;
|
||||
f1 = f1 * 2.0F - 1.0F;
|
||||
f2 = f2 * 2.0F - 1.0F;
|
||||
f = f * -1.0F;
|
||||
f1 = f1 * -1.0F;
|
||||
f2 = f2 * -1.0F;
|
||||
float f6 = ExtMath.sqrtf(f * f + f2 * f2);
|
||||
entity.prevYaw = entity.rotYaw = (float)(Math.atan2((double)f, (double)f2) * 180.0D / Math.PI);
|
||||
entity.prevPitch = entity.rotPitch = (float)(Math.atan2((double)f1, (double)f6) * 180.0D / Math.PI);
|
||||
double d0 = 0.0D;
|
||||
double d1 = 0.0D;
|
||||
double d2 = 0.0D;
|
||||
this.field_177168_a.getRenderManager().renderEntity(entity, d0, d1, d2, partialTicks);
|
||||
WCF.glPopMatrix();
|
||||
}
|
||||
|
||||
ItemRenderer.enableStandardItemLighting();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
79
java/src/game/renderer/layers/LayerCape.java
Executable file
79
java/src/game/renderer/layers/LayerCape.java
Executable file
|
@ -0,0 +1,79 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.ExtMath;
|
||||
import game.WCF;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderHumanoid;
|
||||
import game.renderer.model.ModelRenderer;
|
||||
|
||||
public class LayerCape implements LayerRenderer<EntityNPC>
|
||||
{
|
||||
private final RenderHumanoid renderer;
|
||||
private final ModelRenderer bipedCape;
|
||||
private final float shift;
|
||||
private final int height;
|
||||
|
||||
public LayerCape(RenderHumanoid npcRendererIn, int shift, int height)
|
||||
{
|
||||
this.renderer = npcRendererIn;
|
||||
this.shift = (float)shift; // 0.0F
|
||||
this.height = height;
|
||||
this.bipedCape = new ModelRenderer(0, 0, 64, 32);
|
||||
this.bipedCape.addBox(-5.0F, 0.0F, -1.0F, 10, height, 1, 0.0f);
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityNPC entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if(/* !entitylivingbaseIn.isInvisible() && */ // entitylivingbaseIn.isWearing(ModelPart.CAPE)
|
||||
// &&
|
||||
entitylivingbaseIn.getLocationCape() != null) {
|
||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.renderer.bindTexture(entitylivingbaseIn.getLocationCape());
|
||||
WCF.glPushMatrix();
|
||||
WCF.glTranslatef(0.0F, 0.0F, 0.125F);
|
||||
if(entitylivingbaseIn.isPlayer()) {
|
||||
EntityNPC player = (EntityNPC)entitylivingbaseIn;
|
||||
double d0 = player.prevChasingPosX + (player.chasingPosX - player.prevChasingPosX) * (double)partialTicks - (entitylivingbaseIn.prevX + (entitylivingbaseIn.posX - entitylivingbaseIn.prevX) * (double)partialTicks);
|
||||
double d1 = player.prevChasingPosY + (player.chasingPosY - player.prevChasingPosY) * (double)partialTicks - (entitylivingbaseIn.prevY + (entitylivingbaseIn.posY - entitylivingbaseIn.prevY) * (double)partialTicks);
|
||||
double d2 = player.prevChasingPosZ + (player.chasingPosZ - player.prevChasingPosZ) * (double)partialTicks - (entitylivingbaseIn.prevZ + (entitylivingbaseIn.posZ - entitylivingbaseIn.prevZ) * (double)partialTicks);
|
||||
float f = entitylivingbaseIn.prevYawOffset + (entitylivingbaseIn.yawOffset - entitylivingbaseIn.prevYawOffset) * partialTicks;
|
||||
double d3 = (double)ExtMath.sin(f * (float)Math.PI / 180.0F);
|
||||
double d4 = (double)(-ExtMath.cos(f * (float)Math.PI / 180.0F));
|
||||
float f1 = (float)d1 * 10.0F;
|
||||
f1 = ExtMath.clampf(f1, -6.0F, 32.0F);
|
||||
float f2 = (float)(d0 * d3 + d2 * d4) * 100.0F;
|
||||
float f3 = (float)(d0 * d4 - d2 * d3) * 100.0F;
|
||||
|
||||
if (f2 < 0.0F)
|
||||
{
|
||||
f2 = 0.0F;
|
||||
}
|
||||
|
||||
float f4 = player.prevCameraYaw + (player.cameraYaw - player.prevCameraYaw) * partialTicks;
|
||||
f1 = f1 + ExtMath.sin((entitylivingbaseIn.prevWalkDistMod + (entitylivingbaseIn.walkDistMod - entitylivingbaseIn.prevWalkDistMod) * partialTicks) * 6.0F) * 32.0F * f4;
|
||||
|
||||
if (entitylivingbaseIn.isSneakingVisually())
|
||||
{
|
||||
f1 += 25.0F;
|
||||
}
|
||||
|
||||
WCF.glRotatef(6.0F + f2 / 2.0F + f1, 1.0F, 0.0F, 0.0F);
|
||||
WCF.glRotatef(f3 / 2.0F, 0.0F, 0.0F, 1.0F);
|
||||
WCF.glRotatef(-f3 / 2.0F, 0.0F, 1.0F, 0.0F);
|
||||
}
|
||||
else {
|
||||
WCF.glRotatef(entitylivingbaseIn.isSneakingVisually() ? 25.0F : 5.0F, 1.0F, 0.0F, 0.0F);
|
||||
}
|
||||
WCF.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
|
||||
this.bipedCape.rotationPointY = this.shift + (entitylivingbaseIn.isSneakingVisually() ? 2.0f : 0.0f);
|
||||
this.bipedCape.render(0.0625F);
|
||||
WCF.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
56
java/src/game/renderer/layers/LayerCharge.java
Executable file
56
java/src/game/renderer/layers/LayerCharge.java
Executable file
|
@ -0,0 +1,56 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.WCF;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderHumanoid;
|
||||
import game.renderer.model.ModelCharge;
|
||||
|
||||
|
||||
public class LayerCharge implements LayerRenderer<EntityNPC>
|
||||
{
|
||||
private static final String LIGHTNING_TEXTURE = "textures/entity/charge.png";
|
||||
|
||||
private final RenderHumanoid main;
|
||||
private final ModelCharge charge = new ModelCharge(2.0F);
|
||||
|
||||
public LayerCharge(RenderHumanoid main)
|
||||
{
|
||||
this.main = main;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityNPC entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if (entitylivingbaseIn.isCharged())
|
||||
{
|
||||
// boolean flag = entitylivingbaseIn.isInvisible();
|
||||
GlState.depthMask(true);
|
||||
this.main.bindTexture(LIGHTNING_TEXTURE);
|
||||
WCF.glMatrixMode(5890);
|
||||
WCF.glLoadIdentity();
|
||||
float f = (float)entitylivingbaseIn.ticksExisted + partialTicks;
|
||||
WCF.glTranslatef(f * 0.01F, f * 0.01F, 0.0F);
|
||||
WCF.glMatrixMode(5888);
|
||||
GlState.enableBlend();
|
||||
float f1 = 0.5F;
|
||||
GlState.color(f1, f1, f1, 1.0F);
|
||||
GlState.disableLighting();
|
||||
GlState.blendFunc(1, 1);
|
||||
this.charge.setModelAttributes(this.main.getMainModel());
|
||||
WCF.glScalef(entitylivingbaseIn.height, entitylivingbaseIn.height, entitylivingbaseIn.height);
|
||||
WCF.glTranslatef(0.0f, /* entitylivingbaseIn.isChild() ? 0.5f : */ -0.25f, 0.0f);
|
||||
this.charge.render(entitylivingbaseIn, p_177141_2_, p_177141_3_, p_177141_5_, p_177141_6_, p_177141_7_, scale);
|
||||
WCF.glMatrixMode(5890);
|
||||
WCF.glLoadIdentity();
|
||||
WCF.glMatrixMode(5888);
|
||||
GlState.enableLighting();
|
||||
GlState.disableBlend();
|
||||
GlState.depthMask(false);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
44
java/src/game/renderer/layers/LayerEnderDragonEyes.java
Executable file
44
java/src/game/renderer/layers/LayerEnderDragonEyes.java
Executable file
|
@ -0,0 +1,44 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.WCF;
|
||||
import game.entity.animal.EntityDragon;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderDragon;
|
||||
|
||||
|
||||
public class LayerEnderDragonEyes implements LayerRenderer<EntityDragon>
|
||||
{
|
||||
private static final String TEXTURE = "textures/entity/dragon_eyes.png";
|
||||
private final RenderDragon dragonRenderer;
|
||||
|
||||
public LayerEnderDragonEyes(RenderDragon dragonRendererIn)
|
||||
{
|
||||
this.dragonRenderer = dragonRendererIn;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityDragon entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
this.dragonRenderer.bindTexture(TEXTURE);
|
||||
GlState.enableBlend();
|
||||
GlState.disableAlpha();
|
||||
GlState.blendFunc(1, 1);
|
||||
GlState.disableLighting();
|
||||
GlState.depthFunc(514);
|
||||
int i = 61680;
|
||||
int j = i % 65536;
|
||||
int k = i / 65536;
|
||||
WCF.glMultiTexCoord2f(WCF.GL_TEXTURE1, (float)j / 1.0F, (float)k / 1.0F);
|
||||
GlState.enableLighting();
|
||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.dragonRenderer.getMainModel().render(entitylivingbaseIn, p_177141_2_, p_177141_3_, p_177141_5_, p_177141_6_, p_177141_7_, scale);
|
||||
this.dragonRenderer.setLightmap(entitylivingbaseIn, partialTicks);
|
||||
GlState.disableBlend();
|
||||
GlState.enableAlpha();
|
||||
GlState.depthFunc(515);
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
75
java/src/game/renderer/layers/LayerEntityBreak.java
Executable file
75
java/src/game/renderer/layers/LayerEntityBreak.java
Executable file
|
@ -0,0 +1,75 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.WCF;
|
||||
import game.entity.animal.EntityDragon;
|
||||
import game.renderer.DefaultVertexFormats;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.ItemRenderer;
|
||||
import game.renderer.RenderBuffer;
|
||||
import game.renderer.Tessellator;
|
||||
import game.rng.Random;
|
||||
|
||||
public class LayerEntityBreak implements LayerRenderer<EntityDragon>
|
||||
{
|
||||
public void doRenderLayer(EntityDragon entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if (entitylivingbaseIn.deathTime > 0)
|
||||
{
|
||||
// Tessellator tessellator = Tessellator.getInstance();
|
||||
RenderBuffer worldrenderer = Tessellator.getBuffer();
|
||||
ItemRenderer.disableStandardItemLighting();
|
||||
float f = ((float)entitylivingbaseIn.deathTime + partialTicks) / 200.0F;
|
||||
float f1 = 0.0F;
|
||||
|
||||
if (f > 0.8F)
|
||||
{
|
||||
f1 = (f - 0.8F) / 0.2F;
|
||||
}
|
||||
|
||||
Random random = new Random(432L);
|
||||
GlState.disableTexture2D();
|
||||
GlState.shadeModel(7425);
|
||||
GlState.enableBlend();
|
||||
GlState.blendFunc(770, 1);
|
||||
GlState.disableAlpha();
|
||||
GlState.enableCull();
|
||||
GlState.depthMask(false);
|
||||
WCF.glPushMatrix();
|
||||
WCF.glTranslatef(0.0F, -1.0F, -2.0F);
|
||||
|
||||
for (int i = 0; (float)i < (f + f * f) / 2.0F * 60.0F; ++i)
|
||||
{
|
||||
WCF.glRotatef(random.floatv() * 360.0F, 1.0F, 0.0F, 0.0F);
|
||||
WCF.glRotatef(random.floatv() * 360.0F, 0.0F, 1.0F, 0.0F);
|
||||
WCF.glRotatef(random.floatv() * 360.0F, 0.0F, 0.0F, 1.0F);
|
||||
WCF.glRotatef(random.floatv() * 360.0F, 1.0F, 0.0F, 0.0F);
|
||||
WCF.glRotatef(random.floatv() * 360.0F, 0.0F, 1.0F, 0.0F);
|
||||
WCF.glRotatef(random.floatv() * 360.0F + f * 90.0F, 0.0F, 0.0F, 1.0F);
|
||||
float f2 = random.floatv() * 20.0F + 5.0F + f1 * 10.0F;
|
||||
float f3 = random.floatv() * 2.0F + 1.0F + f1 * 2.0F;
|
||||
worldrenderer.begin(6, DefaultVertexFormats.POSITION_COLOR);
|
||||
worldrenderer.pos(0.0D, 0.0D, 0.0D).color(255, 255, 255, (int)(255.0F * (1.0F - f1))).endVertex();
|
||||
worldrenderer.pos(-0.866D * (double)f3, (double)f2, (double)(-0.5F * f3)).color(255, 0, 255, 0).endVertex();
|
||||
worldrenderer.pos(0.866D * (double)f3, (double)f2, (double)(-0.5F * f3)).color(255, 0, 255, 0).endVertex();
|
||||
worldrenderer.pos(0.0D, (double)f2, (double)(1.0F * f3)).color(255, 0, 255, 0).endVertex();
|
||||
worldrenderer.pos(-0.866D * (double)f3, (double)f2, (double)(-0.5F * f3)).color(255, 0, 255, 0).endVertex();
|
||||
Tessellator.draw();
|
||||
}
|
||||
|
||||
WCF.glPopMatrix();
|
||||
GlState.depthMask(true);
|
||||
GlState.disableCull();
|
||||
GlState.disableBlend();
|
||||
GlState.shadeModel(7424);
|
||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlState.enableTexture2D();
|
||||
GlState.enableAlpha();
|
||||
ItemRenderer.enableStandardItemLighting();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
192
java/src/game/renderer/layers/LayerExtra.java
Executable file
192
java/src/game/renderer/layers/LayerExtra.java
Executable file
|
@ -0,0 +1,192 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import game.Game;
|
||||
import game.WCF;
|
||||
import game.collect.Lists;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.init.SpeciesRegistry.ModelType;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.blockmodel.ModelGenerator;
|
||||
import game.renderer.model.ModelBox;
|
||||
import game.renderer.model.ModelHumanoid;
|
||||
import game.renderer.model.ModelRenderer;
|
||||
|
||||
public class LayerExtra implements LayerRenderer<EntityNPC>
|
||||
{
|
||||
private final List<ModelRenderer> body;
|
||||
private final List<ModelRenderer> head;
|
||||
private final List<ModelRenderer> larm;
|
||||
private final List<ModelRenderer> rarm;
|
||||
private final List<ModelRenderer> wing;
|
||||
private final List<ModelRenderer> halo;
|
||||
|
||||
private ModelHumanoid model;
|
||||
|
||||
public LayerExtra(List<ModelRenderer> body, List<ModelRenderer> head, List<ModelRenderer> larm, List<ModelRenderer> rarm,
|
||||
List<ModelRenderer> wing, List<ModelRenderer> halo)
|
||||
{
|
||||
this.body = body;
|
||||
this.head = head;
|
||||
this.larm = larm;
|
||||
this.rarm = rarm;
|
||||
this.wing = wing;
|
||||
this.halo = halo;
|
||||
}
|
||||
|
||||
public void setModel(ModelHumanoid model) {
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
public void discard() {
|
||||
for(ModelRenderer model : this.body)
|
||||
model.deleteDisplayList();
|
||||
for(ModelRenderer model : this.head)
|
||||
model.deleteDisplayList();
|
||||
for(ModelRenderer model : this.larm)
|
||||
model.deleteDisplayList();
|
||||
for(ModelRenderer model : this.rarm)
|
||||
model.deleteDisplayList();
|
||||
for(ModelRenderer model : this.wing)
|
||||
model.deleteDisplayList();
|
||||
for(ModelRenderer model : this.halo)
|
||||
model.deleteDisplayList();
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityNPC entity, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
EntityNPC extended = entity;
|
||||
// if (!entity.isInvisible())
|
||||
// {
|
||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Game.getGame().getTextureManager().bindTexture(extended.getLocationSkin());
|
||||
WCF.glPushMatrix();
|
||||
|
||||
if (entity.isSneakingVisually())
|
||||
{
|
||||
WCF.glTranslatef(0.0F, /* entity.isChild() ? 0.0F : */ 0.2F, 0.0F);
|
||||
}
|
||||
|
||||
// if (entity.isChild())
|
||||
// {
|
||||
// float f = 2.0F;
|
||||
// float f1 = 1.4F;
|
||||
// SKC.glScalef(1.0F / f, 1.0F / f, 1.0F / f);
|
||||
// SKC.glTranslatef(0.0F, 24.0F * scale, 0.0F);
|
||||
// }
|
||||
|
||||
WCF.glPushMatrix();
|
||||
this.model.bipedBody.postRender(0.0625F);
|
||||
for(ModelRenderer model : this.wing) {
|
||||
if(extended.hasDualWings()) {
|
||||
WCF.glPushMatrix();
|
||||
WCF.glRotatef(model.rotateAngleY < 0.0f ? -10.0f : 10.0f, 0.0f, 1.0f, 0.0f);
|
||||
WCF.glTranslatef(0.0f, 0.125f, -0.0625f);
|
||||
model.render(0.0625F);
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPushMatrix();
|
||||
WCF.glRotatef(model.rotateAngleY < 0.0f ? 10.0f : -10.0f, 0.0f, 1.0f, 0.0f);
|
||||
WCF.glTranslatef(model.rotateAngleY < 0.0f ? 0.0625f : -0.0625f, -0.125f, 0.0f);
|
||||
model.render(0.0625F);
|
||||
WCF.glPopMatrix();
|
||||
}
|
||||
else {
|
||||
model.render(0.0625F);
|
||||
}
|
||||
}
|
||||
for(ModelRenderer model : this.body) {
|
||||
model.render(0.0625F);
|
||||
}
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPushMatrix();
|
||||
this.model.bipedLeftArm.postRender(0.0625F);
|
||||
this.model.slimLeftArm.postRender(0.0625F, -1.0f, 0.0f, 0.0f);
|
||||
for(ModelRenderer model : this.larm) {
|
||||
model.render(0.0625F);
|
||||
}
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPushMatrix();
|
||||
this.model.bipedRightArm.postRender(0.0625F);
|
||||
this.model.slimRightArm.postRender(0.0625F, 1.0f, 0.0f, 0.0f);
|
||||
for(ModelRenderer model : this.rarm) {
|
||||
model.render(0.0625F);
|
||||
}
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPushMatrix();
|
||||
this.model.bipedHead.postRender(0.0625F);
|
||||
for(ModelRenderer model : this.head) {
|
||||
model.render(0.0625F);
|
||||
}
|
||||
for(ModelRenderer model : this.halo) {
|
||||
WCF.glPushMatrix();
|
||||
WCF.glRotatef((float)(entity.ticksExisted % (360 * 4)) * 0.25f, 0.0f, 1.0f, 0.0f);
|
||||
model.render(0.0625F);
|
||||
WCF.glPopMatrix();
|
||||
}
|
||||
WCF.glPopMatrix();
|
||||
|
||||
WCF.glPopMatrix();
|
||||
// }
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public static ModelRenderer addLayer(List<ModelRenderer> models, int[] texture, int w, int h, int tx, int ty, int tw, int th,
|
||||
float xs, float ys, float x, float y, float z, float xr, float yr, float zr) {
|
||||
List<ModelBox> elems = ModelGenerator.bakeModel(texture, tx, ty, w, h, xs, ys, 0.0f, tw, th, 1);
|
||||
if(!elems.isEmpty()) {
|
||||
ModelRenderer model = new ModelRenderer();
|
||||
model.addBoxes(elems);
|
||||
model.setRotationPoint(x, y, z);
|
||||
model.rotateAngleX = xr / (180F / (float)Math.PI);
|
||||
model.rotateAngleY = yr / (180F / (float)Math.PI);
|
||||
model.rotateAngleZ = zr / (180F / (float)Math.PI);
|
||||
models.add(model);
|
||||
return model;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static LayerExtra getLayer(int[] texture, int w, int h, ModelType model) {
|
||||
if(w < 64 || h < 20 || (model != ModelType.HUMANOID && model != ModelType.ARACHNOID && model != ModelType.DWARF &&
|
||||
model != ModelType.HALFLING))
|
||||
return null;
|
||||
List<ModelRenderer> body = Lists.newArrayList();
|
||||
List<ModelRenderer> head = Lists.newArrayList();
|
||||
List<ModelRenderer> larm = Lists.newArrayList();
|
||||
List<ModelRenderer> rarm = Lists.newArrayList();
|
||||
List<ModelRenderer> wing = Lists.newArrayList();
|
||||
List<ModelRenderer> halo = Lists.newArrayList();
|
||||
if(h >= 64) {
|
||||
addLayer(wing, texture, w, h, 56, 32, 8, 16, 0.0f, 0.0f, 3.5f, -4.0f, 2.0f, 0.0f, -25.0f, 0.0f);
|
||||
addLayer(wing, texture, w, h, 56, 16, 8, 16, -8.0f, 0.0f, -3.5f, -4.0f, 2.0f, 0.0f, 25.0f, 0.0f);
|
||||
}
|
||||
addLayer(head, texture, w, h, 56, 0, 8, 8, 0.0f, 0.0f, 2.0f, -14.0f, -2.0f, 10.0f, 15.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 0, 0, 8, 8, -8.0f, 0.0f, -2.0f, -14.0f, -2.0f, 10.0f, -15.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 24, 0, 8, 8, -4.0f, 0.0f, 0.0f, -16.0f, -2.5f, 0.0f, 0.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 32, 0, 8, 8, -4.0f, 0.0f, 0.0f, -16.0f, 2.5f, 0.0f, 180.0f, 0.0f);
|
||||
if(h >= 64) {
|
||||
addLayer(head, texture, w, h, 12, 16, 8, 4, -4.0f, 0.0f, 0.0f, -12.0f, -5.0f, 0.0f, 0.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 36, 16, 8, 4, -4.0f, 0.0f, 0.0f, -12.0f, 5.0f, 0.0f, 180.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 12, 32, 8, 4, -4.0f, 0.0f, -5.0f, -12.0f, 0.0f, 0.0f, 90.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 36, 32, 8, 4, -4.0f, 0.0f, 5.0f, -12.0f, 0.0f, 0.0f, -90.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 0, 48, 4, 4, -2.0f, 0.0f, 0.0f, -9.0f, 4.95f, 0.0f, 180.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 60, 48, 4, 4, -2.0f, 0.0f, 0.0f, -9.0f, 5.95f, 0.0f, 180.0f, 0.0f);
|
||||
addLayer(halo, texture, w, h, 12, 48, 8, 1, -4.0f, 0.0f, 0.0f, -18.0f, -5.0f, 0.0f, 0.0f, 0.0f);
|
||||
addLayer(halo, texture, w, h, 12, 49, 8, 1, -4.0f, 0.0f, 0.0f, -18.0f, 5.0f, 0.0f, 180.0f, 0.0f);
|
||||
addLayer(halo, texture, w, h, 12, 50, 8, 1, -4.0f, 0.0f, -5.0f, -18.0f, 0.0f, 0.0f, 90.0f, 0.0f);
|
||||
addLayer(halo, texture, w, h, 12, 51, 8, 1, -4.0f, 0.0f, 5.0f, -18.0f, 0.0f, 0.0f, -90.0f, 0.0f);
|
||||
}
|
||||
addLayer(head, texture, w, h, h >= 64 ? 44 : 36, h >= 64 ? 48 : 16, 8, 4, 0.0f, 0.0f, 0.0f, -8.0f, -4.0f, 0.0f, 30.0f, -55.0f);
|
||||
addLayer(head, texture, w, h, h >= 64 ? 28 : 12, h >= 64 ? 48 : 16, 8, 4, -8.0f, 0.0f, 0.0f, -8.0f, -4.0f, 0.0f, -30.0f, 55.0f);
|
||||
addLayer(head, texture, w, h, 0, 16, 4, 4, -2.0f, 0.0f, -6.5f, -7.0f, 1.5f, 15.0f, 65.0f, 0.0f);
|
||||
addLayer(head, texture, w, h, 52, 16, 4, 4, -2.0f, 0.0f, 6.5f, -7.0f, 1.5f, 15.0f, -65.0f, 0.0f);
|
||||
addLayer(larm, texture, w, h, h >= 64 ? 52 : 60, h >= 64 ? 32 : 16, 4, 4, -2.0f, 0.0f, 2.0f, 9.5f, 0.0f, -25.0f, 95.0f, 0.0f);
|
||||
addLayer(rarm, texture, w, h, h >= 64 ? 0 : 56, h >= 64 ? 32 : 16, 4, 4, -2.0f, 0.0f, -2.0f, 9.5f, 0.0f, -25.0f, -95.0f, 0.0f);
|
||||
return (body.isEmpty() && head.isEmpty() && larm.isEmpty() && rarm.isEmpty() && wing.isEmpty() && halo.isEmpty()) ? null : new LayerExtra(body, head, larm, rarm, wing, halo);
|
||||
}
|
||||
}
|
80
java/src/game/renderer/layers/LayerHeldItem.java
Executable file
80
java/src/game/renderer/layers/LayerHeldItem.java
Executable file
|
@ -0,0 +1,80 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.Game;
|
||||
import game.WCF;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.entity.types.EntityLiving;
|
||||
import game.init.Items;
|
||||
import game.item.Item;
|
||||
import game.item.ItemBlock;
|
||||
import game.item.ItemStack;
|
||||
import game.renderer.blockmodel.Transforms;
|
||||
import game.renderer.entity.RendererLivingEntity;
|
||||
import game.renderer.model.ModelBiped;
|
||||
|
||||
public class LayerHeldItem implements LayerRenderer<EntityLiving>
|
||||
{
|
||||
private final RendererLivingEntity<?> livingEntityRenderer;
|
||||
private final float xshift;
|
||||
private final float yshift;
|
||||
|
||||
public LayerHeldItem(RendererLivingEntity<?> livingEntityRendererIn, float xshift, float yshift)
|
||||
{
|
||||
this.livingEntityRenderer = livingEntityRendererIn;
|
||||
this.xshift = xshift * 0.0625F; // -0.0625F
|
||||
this.yshift = yshift * 0.0625F; // 0.4375F
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityLiving entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
ItemStack itemstack = entitylivingbaseIn.getHeldItem();
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
WCF.glPushMatrix();
|
||||
|
||||
// if (this.livingEntityRenderer.getMainModel().isChild)
|
||||
// {
|
||||
// float f = 0.5F;
|
||||
// SKC.glTranslatef(0.0F, 0.625F, 0.0F);
|
||||
// if(this.rotate) {
|
||||
// SKC.glRotatef(-20.0F, -1.0F, 0.0F, 0.0F);
|
||||
// }
|
||||
// SKC.glScalef(f, f, f);
|
||||
// }
|
||||
|
||||
((ModelBiped)this.livingEntityRenderer.getMainModel()).postRenderArm(0.0625F);
|
||||
WCF.glTranslatef(this.xshift, this.yshift, 0.0625F);
|
||||
|
||||
if (entitylivingbaseIn.isPlayer() && ((EntityNPC)entitylivingbaseIn).fishEntity != null)
|
||||
{
|
||||
itemstack = new ItemStack(Items.fishing_rod, 0);
|
||||
}
|
||||
|
||||
Item item = itemstack.getItem();
|
||||
Game gm = Game.getGame();
|
||||
|
||||
if (item instanceof ItemBlock && item.getBlock().getRenderType() == 2)
|
||||
{
|
||||
WCF.glTranslatef(0.0F, 0.1875F, -0.3125F);
|
||||
WCF.glRotatef(20.0F, 1.0F, 0.0F, 0.0F);
|
||||
WCF.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
|
||||
float f1 = 0.375F;
|
||||
WCF.glScalef(-f1, -f1, f1);
|
||||
}
|
||||
|
||||
if (entitylivingbaseIn.isSneakingVisually())
|
||||
{
|
||||
WCF.glTranslatef(0.0F, 0.203125F, 0.0F);
|
||||
}
|
||||
|
||||
gm.getItemRenderer().renderItem(entitylivingbaseIn, itemstack, Transforms.Camera.THIRD_PERSON);
|
||||
WCF.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
62
java/src/game/renderer/layers/LayerMooshroomMushroom.java
Executable file
62
java/src/game/renderer/layers/LayerMooshroomMushroom.java
Executable file
|
@ -0,0 +1,62 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.Game;
|
||||
import game.WCF;
|
||||
import game.entity.animal.EntityMooshroom;
|
||||
import game.init.Blocks;
|
||||
import game.renderer.BlockRenderer;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderMooshroom;
|
||||
import game.renderer.model.ModelQuadruped;
|
||||
import game.renderer.texture.TextureMap;
|
||||
|
||||
public class LayerMooshroomMushroom implements LayerRenderer<EntityMooshroom>
|
||||
{
|
||||
private final RenderMooshroom mooshroomRenderer;
|
||||
|
||||
public LayerMooshroomMushroom(RenderMooshroom mooshroomRendererIn)
|
||||
{
|
||||
this.mooshroomRenderer = mooshroomRendererIn;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityMooshroom entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if (!entitylivingbaseIn.isChild()) // && !entitylivingbaseIn.isInvisible())
|
||||
{
|
||||
BlockRenderer blockrendererdispatcher = Game.getGame().getBlockRendererDispatcher();
|
||||
this.mooshroomRenderer.bindTexture(TextureMap.locationBlocksTexture);
|
||||
GlState.enableCull();
|
||||
GlState.cullFace(1028);
|
||||
WCF.glPushMatrix();
|
||||
WCF.glScalef(1.0F, -1.0F, 1.0F);
|
||||
WCF.glTranslatef(0.2F, 0.35F, 0.5F);
|
||||
WCF.glRotatef(42.0F, 0.0F, 1.0F, 0.0F);
|
||||
WCF.glPushMatrix();
|
||||
WCF.glTranslatef(-0.5F, -0.5F, 0.5F);
|
||||
blockrendererdispatcher.renderBlockBrightness(Blocks.red_mushroom.getState(), 1.0F);
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPushMatrix();
|
||||
WCF.glTranslatef(0.1F, 0.0F, -0.6F);
|
||||
WCF.glRotatef(42.0F, 0.0F, 1.0F, 0.0F);
|
||||
WCF.glTranslatef(-0.5F, -0.5F, 0.5F);
|
||||
blockrendererdispatcher.renderBlockBrightness(Blocks.red_mushroom.getState(), 1.0F);
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPopMatrix();
|
||||
WCF.glPushMatrix();
|
||||
((ModelQuadruped)this.mooshroomRenderer.getMainModel()).head.postRender(0.0625F);
|
||||
WCF.glScalef(1.0F, -1.0F, 1.0F);
|
||||
WCF.glTranslatef(0.0F, 0.7F, -0.2F);
|
||||
WCF.glRotatef(12.0F, 0.0F, 1.0F, 0.0F);
|
||||
WCF.glTranslatef(-0.5F, -0.5F, 0.5F);
|
||||
blockrendererdispatcher.renderBlockBrightness(Blocks.red_mushroom.getState(), 1.0F);
|
||||
WCF.glPopMatrix();
|
||||
GlState.cullFace(1029);
|
||||
GlState.disableCull();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
72
java/src/game/renderer/layers/LayerPowerRods.java
Executable file
72
java/src/game/renderer/layers/LayerPowerRods.java
Executable file
|
@ -0,0 +1,72 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.ExtMath;
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderHumanoid;
|
||||
import game.renderer.model.ModelRenderer;
|
||||
|
||||
public class LayerPowerRods implements LayerRenderer<EntityNPC>
|
||||
{
|
||||
private static final String ROD_TEXTURE = "textures/entity/power_rod.png";
|
||||
|
||||
private final RenderHumanoid renderer;
|
||||
private ModelRenderer powerRod;
|
||||
|
||||
public LayerPowerRods(RenderHumanoid npcRendererIn)
|
||||
{
|
||||
this.renderer = npcRendererIn;
|
||||
this.powerRod = new ModelRenderer(0, 0, 16, 16);
|
||||
this.powerRod.addBox(0.0F, 0.0F, 0.0F, 2, 6, 2);
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityNPC entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float time, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if(entitylivingbaseIn.hasPowerRods()) { // && !entitylivingbaseIn.isInvisible()) {
|
||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.renderer.bindTexture(ROD_TEXTURE);
|
||||
// SKC.glPushMatrix();
|
||||
// SKC.glTranslatef(0.0F, 0.0F, 0.125F);
|
||||
// SKC.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
|
||||
// this.renderer.getMainModel().renderRods(0.0625F, time);
|
||||
float f = time * (float)Math.PI * -0.1F;
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
this.powerRod.rotationPointY = 0.0F + ExtMath.cos(((float)(i * 8) + time) * 0.25F);
|
||||
this.powerRod.rotationPointX = ExtMath.cos(f) * 14.0F;
|
||||
this.powerRod.rotationPointZ = ExtMath.sin(f) * 14.0F;
|
||||
this.powerRod.render(0.0625F);
|
||||
++f;
|
||||
}
|
||||
|
||||
f = 0.47123894F + time * (float)Math.PI * 0.05F;
|
||||
|
||||
for (int k = 4; k < 8; ++k)
|
||||
{
|
||||
this.powerRod.rotationPointY = 12.0f + ExtMath.cos(((float)k * 1.5F + time) * 0.5F);
|
||||
this.powerRod.rotationPointX = ExtMath.cos(f) * 8.0F;
|
||||
this.powerRod.rotationPointZ = ExtMath.sin(f) * 8.0F;
|
||||
this.powerRod.render(0.0625F);
|
||||
++f;
|
||||
}
|
||||
|
||||
f = ((float)Math.PI / 4F) + time * (float)Math.PI * 0.03F;
|
||||
|
||||
for (int j = 8; j < 16; ++j)
|
||||
{
|
||||
this.powerRod.rotationPointY = -18.0f + ExtMath.cos(((float)(j * 4) + time) * 0.25F);
|
||||
this.powerRod.rotationPointX = ExtMath.cos(f) * 11.0F;
|
||||
this.powerRod.rotationPointZ = ExtMath.sin(f) * 11.0F;
|
||||
this.powerRod.render(0.0625F);
|
||||
f += Math.PI / 4F;
|
||||
}
|
||||
// SKC.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
10
java/src/game/renderer/layers/LayerRenderer.java
Executable file
10
java/src/game/renderer/layers/LayerRenderer.java
Executable file
|
@ -0,0 +1,10 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.entity.types.EntityLiving;
|
||||
|
||||
public interface LayerRenderer<E extends EntityLiving>
|
||||
{
|
||||
void doRenderLayer(E entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale);
|
||||
|
||||
boolean shouldCombineTextures();
|
||||
}
|
33
java/src/game/renderer/layers/LayerSaddle.java
Executable file
33
java/src/game/renderer/layers/LayerSaddle.java
Executable file
|
@ -0,0 +1,33 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.entity.animal.EntityPig;
|
||||
import game.renderer.entity.RenderPig;
|
||||
import game.renderer.model.ModelPig;
|
||||
|
||||
|
||||
public class LayerSaddle implements LayerRenderer<EntityPig>
|
||||
{
|
||||
private static final String TEXTURE = "textures/entity/pig_saddle.png";
|
||||
private final RenderPig pigRenderer;
|
||||
private final ModelPig pigModel = new ModelPig(0.5F);
|
||||
|
||||
public LayerSaddle(RenderPig pigRendererIn)
|
||||
{
|
||||
this.pigRenderer = pigRendererIn;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityPig entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if (entitylivingbaseIn.getSaddled())
|
||||
{
|
||||
this.pigRenderer.bindTexture(TEXTURE);
|
||||
this.pigModel.setModelAttributes(this.pigRenderer.getMainModel());
|
||||
this.pigModel.render(entitylivingbaseIn, p_177141_2_, p_177141_3_, p_177141_5_, p_177141_6_, p_177141_7_, scale);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
55
java/src/game/renderer/layers/LayerSheepWool.java
Executable file
55
java/src/game/renderer/layers/LayerSheepWool.java
Executable file
|
@ -0,0 +1,55 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.entity.animal.EntitySheep;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderSheep;
|
||||
import game.renderer.model.ModelSheep1;
|
||||
|
||||
|
||||
public class LayerSheepWool implements LayerRenderer<EntitySheep>
|
||||
{
|
||||
private static final String TEXTURE = "textures/entity/sheep_fur.png";
|
||||
private final RenderSheep sheepRenderer;
|
||||
private final ModelSheep1 sheepModel = new ModelSheep1();
|
||||
|
||||
public LayerSheepWool(RenderSheep sheepRendererIn)
|
||||
{
|
||||
this.sheepRenderer = sheepRendererIn;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntitySheep entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if (!entitylivingbaseIn.getSheared()) // && !entitylivingbaseIn.isInvisible())
|
||||
{
|
||||
this.sheepRenderer.bindTexture(TEXTURE);
|
||||
|
||||
if (entitylivingbaseIn.hasCustomName() && ("Grell".equalsIgnoreCase(entitylivingbaseIn.getCustomNameTag())
|
||||
|| "Grelle".equalsIgnoreCase(entitylivingbaseIn.getCustomNameTag())))
|
||||
{
|
||||
// int i1 = 25;
|
||||
// int i = entitylivingbaseIn.ticksExisted / 25 + entitylivingbaseIn.getId();
|
||||
// int j = EnumDyeColor.values().length;
|
||||
// int k = i % j;
|
||||
// int l = (i + 1) % j;
|
||||
// float f = ((float)(entitylivingbaseIn.ticksExisted % 25) + partialTicks) / 25.0F;
|
||||
// float[] afloat1 = EntitySheep.getDyeRgb(EnumDyeColor.byMetadata(k));
|
||||
// float[] afloat2 = EntitySheep.getDyeRgb(EnumDyeColor.byMetadata(l));
|
||||
GlState.color(1.0f, 0.0f, 0.0f, 1.0F);
|
||||
}
|
||||
else
|
||||
{
|
||||
float[] afloat = EntitySheep.getDyeRgb(entitylivingbaseIn.getFleeceColor());
|
||||
GlState.color(afloat[0], afloat[1], afloat[2], 1.0F);
|
||||
}
|
||||
|
||||
this.sheepModel.setModelAttributes(this.sheepRenderer.getMainModel());
|
||||
this.sheepModel.setLivingAnimations(entitylivingbaseIn, p_177141_2_, p_177141_3_, partialTicks);
|
||||
this.sheepModel.render(entitylivingbaseIn, p_177141_2_, p_177141_3_, p_177141_5_, p_177141_6_, p_177141_7_, scale);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
38
java/src/game/renderer/layers/LayerSlimeGel.java
Executable file
38
java/src/game/renderer/layers/LayerSlimeGel.java
Executable file
|
@ -0,0 +1,38 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.entity.npc.EntityNPC;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderSlime;
|
||||
import game.renderer.model.ModelBase;
|
||||
import game.renderer.model.ModelSlime;
|
||||
|
||||
public class LayerSlimeGel implements LayerRenderer<EntityNPC>
|
||||
{
|
||||
private final RenderSlime slimeRenderer;
|
||||
private final ModelBase slimeModel = new ModelSlime(0);
|
||||
|
||||
public LayerSlimeGel(RenderSlime slimeRendererIn)
|
||||
{
|
||||
this.slimeRenderer = slimeRendererIn;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityNPC entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
// if (!entitylivingbaseIn.isInvisible())
|
||||
// {
|
||||
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlState.enableNormalize();
|
||||
GlState.enableBlend();
|
||||
GlState.blendFunc(770, 771);
|
||||
this.slimeModel.setModelAttributes(this.slimeRenderer.getMainModel());
|
||||
this.slimeModel.render(entitylivingbaseIn, p_177141_2_, p_177141_3_, p_177141_5_, p_177141_6_, p_177141_7_, scale);
|
||||
GlState.disableBlend();
|
||||
GlState.disableNormalize();
|
||||
// }
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
36
java/src/game/renderer/layers/LayerWolfCollar.java
Executable file
36
java/src/game/renderer/layers/LayerWolfCollar.java
Executable file
|
@ -0,0 +1,36 @@
|
|||
package game.renderer.layers;
|
||||
|
||||
import game.color.DyeColor;
|
||||
import game.entity.animal.EntitySheep;
|
||||
import game.entity.animal.EntityWolf;
|
||||
import game.renderer.GlState;
|
||||
import game.renderer.entity.RenderWolf;
|
||||
|
||||
|
||||
public class LayerWolfCollar implements LayerRenderer<EntityWolf>
|
||||
{
|
||||
private static final String WOLF_COLLAR = "textures/entity/wolf_collar.png";
|
||||
private final RenderWolf wolfRenderer;
|
||||
|
||||
public LayerWolfCollar(RenderWolf wolfRendererIn)
|
||||
{
|
||||
this.wolfRenderer = wolfRendererIn;
|
||||
}
|
||||
|
||||
public void doRenderLayer(EntityWolf entitylivingbaseIn, float p_177141_2_, float p_177141_3_, float partialTicks, float p_177141_5_, float p_177141_6_, float p_177141_7_, float scale)
|
||||
{
|
||||
if (entitylivingbaseIn.isTamed()) // && !entitylivingbaseIn.isInvisible())
|
||||
{
|
||||
this.wolfRenderer.bindTexture(WOLF_COLLAR);
|
||||
DyeColor enumdyecolor = DyeColor.byMetadata(entitylivingbaseIn.getCollarColor().getMetadata());
|
||||
float[] afloat = EntitySheep.getDyeRgb(enumdyecolor);
|
||||
GlState.color(afloat[0], afloat[1], afloat[2], 1.0F);
|
||||
this.wolfRenderer.getMainModel().render(entitylivingbaseIn, p_177141_2_, p_177141_3_, p_177141_5_, p_177141_6_, p_177141_7_, scale);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldCombineTextures()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue