mirror of
https://github.com/MineLittlePony/MineLittlePony.git
synced 2024-11-30 07:57:59 +01:00
Pony snouts will no longer bust through player's skulls. ... That's likely less violent than it sounds.
This commit is contained in:
parent
7ddb747b28
commit
b14a6cb233
8 changed files with 46 additions and 2 deletions
|
@ -34,6 +34,7 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel {
|
||||||
public boolean isFlying;
|
public boolean isFlying;
|
||||||
public boolean isSleeping;
|
public boolean isSleeping;
|
||||||
public boolean isSwimming;
|
public boolean isSwimming;
|
||||||
|
public boolean headGear;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Associcated pony data.
|
* Associcated pony data.
|
||||||
|
@ -656,6 +657,11 @@ public abstract class AbstractPonyModel extends ModelPlayer implements IModel {
|
||||||
return rainboom;
|
return rainboom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasHeadGear() {
|
||||||
|
return headGear;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFlying() {
|
public boolean isFlying() {
|
||||||
return isFlying && canFly();
|
return isFlying && canFly();
|
||||||
|
|
|
@ -1,7 +1,18 @@
|
||||||
package com.minelittlepony.model.capabilities;
|
package com.minelittlepony.model.capabilities;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.client.model.ModelRenderer;
|
import net.minecraft.client.model.ModelRenderer;
|
||||||
|
|
||||||
public interface ICapitated {
|
public interface ICapitated {
|
||||||
|
/**
|
||||||
|
* Gets the head of this capitated object.
|
||||||
|
*/
|
||||||
ModelRenderer getHead();
|
ModelRenderer getHead();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if we're wearing any uconventional headgear (ie. a Pumpkin)
|
||||||
|
*/
|
||||||
|
boolean hasHeadGear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ public interface IModel extends ICapitated {
|
||||||
*/
|
*/
|
||||||
void transform(BodyPart part);
|
void transform(BodyPart part);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new pony armour to go with this model. Called on startup by a model wrapper.
|
* Returns a new pony armour to go with this model. Called on startup by a model wrapper.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -39,6 +39,11 @@ public class ModelPonyHead extends ModelHumanoidHead implements ICapitated {
|
||||||
return skeletonHead;
|
return skeletonHead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasHeadGear() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(Entity entity, float move, float swing, float ticks, float headYaw, float headPitch, float scale) {
|
public void render(Entity entity, float move, float swing, float ticks, float headYaw, float headPitch, float scale) {
|
||||||
snout.isHidden = metadata.getRace().isHuman();
|
snout.isHidden = metadata.getRace().isHuman();
|
||||||
|
@ -53,4 +58,5 @@ public class ModelPonyHead extends ModelHumanoidHead implements ICapitated {
|
||||||
horn.render(scale);
|
horn.render(scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,11 +17,15 @@ public class PonySnout {
|
||||||
private PlaneRenderer mare;
|
private PlaneRenderer mare;
|
||||||
private PlaneRenderer stallion;
|
private PlaneRenderer stallion;
|
||||||
|
|
||||||
|
private final ICapitated head;
|
||||||
|
|
||||||
public <T extends ModelBase & ICapitated> PonySnout(T pony) {
|
public <T extends ModelBase & ICapitated> PonySnout(T pony) {
|
||||||
this(pony, 0, 0, 0);
|
this(pony, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends ModelBase & ICapitated> PonySnout(T pony, int x, int y, int z) {
|
public <T extends ModelBase & ICapitated> PonySnout(T pony, int x, int y, int z) {
|
||||||
|
head = pony;
|
||||||
|
|
||||||
mare = new PlaneRenderer(pony).offset(HEAD_CENTRE_X + x, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z);
|
mare = new PlaneRenderer(pony).offset(HEAD_CENTRE_X + x, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z);
|
||||||
stallion = new PlaneRenderer(pony).offset(HEAD_CENTRE_X + x, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z);
|
stallion = new PlaneRenderer(pony).offset(HEAD_CENTRE_X + x, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z);
|
||||||
|
|
||||||
|
@ -55,7 +59,7 @@ public class PonySnout {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGender(PonyGender gender) {
|
public void setGender(PonyGender gender) {
|
||||||
boolean show = !isHidden && MineLittlePony.getConfig().snuzzles;
|
boolean show = !head.hasHeadGear() && !isHidden && MineLittlePony.getConfig().snuzzles;
|
||||||
|
|
||||||
mare.isHidden = !show || gender == PonyGender.STALLION;
|
mare.isHidden = !show || gender == PonyGender.STALLION;
|
||||||
stallion.isHidden = !show || gender == PonyGender.MARE;
|
stallion.isHidden = !show || gender == PonyGender.MARE;
|
||||||
|
|
|
@ -13,6 +13,10 @@ import net.minecraft.client.renderer.texture.ITextureObject;
|
||||||
import net.minecraft.client.renderer.texture.TextureUtil;
|
import net.minecraft.client.renderer.texture.TextureUtil;
|
||||||
import net.minecraft.client.resources.IResource;
|
import net.minecraft.client.resources.IResource;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemArmor;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
@ -112,6 +116,18 @@ public class Pony {
|
||||||
return entity.isInWater() && entity.getEntityWorld().getBlockState(new BlockPos(entity.getPositionEyes(1))).getMaterial() == Material.WATER;
|
return entity.isInWater() && entity.getEntityWorld().getBlockState(new BlockPos(entity.getPositionEyes(1))).getMaterial() == Material.WATER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isWearingHeadgear(EntityLivingBase entity) {
|
||||||
|
ItemStack stack = entity.getItemStackFromSlot(EntityEquipmentSlot.HEAD);
|
||||||
|
|
||||||
|
if (stack.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Item item = stack.getItem();
|
||||||
|
|
||||||
|
return !(item instanceof ItemArmor) || ((ItemArmor)item).getEquipmentSlot() != EntityEquipmentSlot.HEAD;
|
||||||
|
}
|
||||||
|
|
||||||
public ModelWrapper getModel(boolean ignorePony) {
|
public ModelWrapper getModel(boolean ignorePony) {
|
||||||
return getRace(ignorePony).getModel().getModel(smallArms);
|
return getRace(ignorePony).getModel().getModel(smallArms);
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,7 @@ public abstract class RenderPonyMob<T extends EntityLiving> extends RenderLiving
|
||||||
ponyModel.isSleeping = entity.isPlayerSleeping();
|
ponyModel.isSleeping = entity.isPlayerSleeping();
|
||||||
ponyModel.isFlying = pony.isPegasusFlying(entity);
|
ponyModel.isFlying = pony.isPegasusFlying(entity);
|
||||||
ponyModel.isSwimming = pony.isSwimming(entity);
|
ponyModel.isSwimming = pony.isSwimming(entity);
|
||||||
|
ponyModel.headGear = pony.isWearingHeadgear(entity);
|
||||||
|
|
||||||
super.preRenderCallback(entity, ticks);
|
super.preRenderCallback(entity, ticks);
|
||||||
shadowSize = getShadowScale();
|
shadowSize = getShadowScale();
|
||||||
|
|
|
@ -74,6 +74,7 @@ public abstract class RenderPonyBase extends RenderPlayer implements IRenderPony
|
||||||
ponyModel.isSleeping = player.isPlayerSleeping();
|
ponyModel.isSleeping = player.isPlayerSleeping();
|
||||||
ponyModel.isFlying = pony.isPegasusFlying(player);
|
ponyModel.isFlying = pony.isPegasusFlying(player);
|
||||||
ponyModel.isSwimming = pony.isSwimming(player);
|
ponyModel.isSwimming = pony.isSwimming(player);
|
||||||
|
ponyModel.headGear = pony.isWearingHeadgear(player);
|
||||||
|
|
||||||
super.preRenderCallback(player, ticks);
|
super.preRenderCallback(player, ticks);
|
||||||
shadowSize = getShadowScale();
|
shadowSize = getShadowScale();
|
||||||
|
|
Loading…
Reference in a new issue