Skip to content

Commit

Permalink
Fixed crash if arrow has no shooting entity set. Closes #335
Browse files Browse the repository at this point in the history
  • Loading branch information
RiskyKen committed Jul 27, 2020
1 parent 8070ac9 commit 8b06711
Showing 1 changed file with 21 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,32 @@

@SideOnly(Side.CLIENT)
public abstract class RenderSkinnedArrow<T extends EntityArrow> extends RenderArrow<T> {

private final SkinModelRenderHelper equipmentModelRenderer;

public RenderSkinnedArrow(RenderManager renderManager) {
super(renderManager);
this.equipmentModelRenderer = SkinModelRenderHelper.INSTANCE;
}

@Override
public void doRender(T entityArrow, double x, double y, double z, float yaw, float partialTickTime) {
IEntitySkinCapability skinCapability = EntitySkinCapability.get(entityArrow.shootingEntity);
boolean didRender = false;
if (skinCapability != null) {
for (int i = 0; i < skinCapability.getSlotCountForSkinType(SkinTypeRegistry.skinBow); i++) {
ISkinDescriptor skinDescriptor = skinCapability.getSkinDescriptor(SkinTypeRegistry.skinBow, i);
if (skinDescriptor != null) {
Skin skin = ClientSkinCache.INSTANCE.getSkin(skinDescriptor);
if (skin != null) {
SkinPart skinPart = skin.getPart("armourers:bow.arrow");
if (skinPart != null) {
ModRenderHelper.enableAlphaBlend();
renderArrowSkin(entityArrow, x, y, z, partialTickTime, skinPart, skinDescriptor.getSkinDye());
ModRenderHelper.disableAlphaBlend();
didRender = true;
if (entityArrow.shootingEntity != null) {
IEntitySkinCapability skinCapability = EntitySkinCapability.get(entityArrow.shootingEntity);
if (skinCapability != null) {
for (int i = 0; i < skinCapability.getSlotCountForSkinType(SkinTypeRegistry.skinBow); i++) {
ISkinDescriptor skinDescriptor = skinCapability.getSkinDescriptor(SkinTypeRegistry.skinBow, i);
if (skinDescriptor != null) {
Skin skin = ClientSkinCache.INSTANCE.getSkin(skinDescriptor);
if (skin != null) {
SkinPart skinPart = skin.getPart("armourers:bow.arrow");
if (skinPart != null) {
ModRenderHelper.enableAlphaBlend();
renderArrowSkin(entityArrow, x, y, z, partialTickTime, skinPart, skinDescriptor.getSkinDye());
ModRenderHelper.disableAlphaBlend();
didRender = true;
}
}
}
}
Expand All @@ -56,12 +58,12 @@ public void doRender(T entityArrow, double x, double y, double z, float yaw, flo
super.doRender(entityArrow, x, y, z, yaw, partialTickTime);
}
}

private void renderArrowSkin(EntityArrow entityArrow, double x, double y, double z, float partialTickTime, SkinPart skinPart, ISkinDye skinDye) {
float scale = 0.0625F;
GL11.glPushMatrix();
GL11.glTranslatef((float)x, (float)y, (float)z);
GL11.glTranslatef((float) x, (float) y, (float) z);

GL11.glRotatef(entityArrow.prevRotationYaw + (entityArrow.rotationYaw - entityArrow.prevRotationYaw) * partialTickTime - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(entityArrow.prevRotationPitch + (entityArrow.rotationPitch - entityArrow.prevRotationPitch) * partialTickTime, 0.0F, 0.0F, 1.0F);
GL11.glTranslatef(2.5F * scale, -0.5F * scale, -0.5F * scale);
Expand Down

0 comments on commit 8b06711

Please sign in to comment.