Skip to content

Commit

Permalink
1.15.1 port
Browse files Browse the repository at this point in the history
  • Loading branch information
Lemonszz committed Dec 22, 2019
1 parent 475aaa3 commit c410d3f
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 92 deletions.
17 changes: 8 additions & 9 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ org.gradle.jvmargs=-Xmx1G

# Fabric Properties
# check these on https://fabricmc.net/use
minecraft_version=1.14.4
yarn_mappings=1.14.4+build.14
loader_version=0.6.3+build.167
minecraft_version=1.15.1
yarn_mappings=1.15.1+build.6
loader_version=0.7.2+build.175

#Fabric api
fabric_version=0.4.25+build.282-1.15

# Mod Properties
mod_version = fabric-1.14.0-1.0.0
mod_version = fabric-1.15.0-1.0.0
maven_group = party.lemons
archives_base_name = villager-hats

# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric
fabric_version=0.4.1+build.245-1.14
archives_base_name = villager-hats
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package party.lemons.villagerhats.client;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.feature.FeatureRenderer;
import net.minecraft.client.render.entity.feature.FeatureRendererContext;
import net.minecraft.client.render.entity.model.EntityModel;
import net.minecraft.client.render.entity.model.VillagerResemblingModel;
import net.minecraft.client.render.entity.model.ModelWithHead;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Identifier;
Expand All @@ -18,36 +22,39 @@ public PlayerVillagerHatRenderLayer(FeatureRendererContext<T, M> render)
super(render);
}

private Identifier findTexture(String string_1, Identifier identifier_1) {
return new Identifier(identifier_1.getNamespace(), "textures/entity/villager/"+ string_1 + "/" + identifier_1.getPath() + ".png");
}

@Override
public void render(T living, float x, float y, float z, float float_4, float float_5, float float_6, float delta)
public void render(MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, T entity, float limbAngle, float limbDistance, float tickDelta, float customAngle, float headYaw, float headPitch)
{
if(!living.getEquippedStack(EquipmentSlot.HEAD).isEmpty() && living.getEquippedStack(EquipmentSlot.HEAD).getItem() instanceof VillagerHatItem)
if(!entity.getEquippedStack(EquipmentSlot.HEAD).isEmpty() && entity.getEquippedStack(EquipmentSlot.HEAD).getItem() instanceof VillagerHatItem)
{
VillagerHatItem hat = (VillagerHatItem) living.getEquippedStack(EquipmentSlot.HEAD).getItem();
GlStateManager.scalef(1.01F, 1.01F, 1.01F);

if(living.isSneaking())
if(entity.isSneaking())
{
GlStateManager.translated(0, 0.250D, 0);
RenderSystem.translatef(0, 0.250F, 0);
}

VillagerHatModel<T> hatModel = new VillagerHatModel<>(0);
((ModelWithHead)this.getContextModel()).getHead().rotate(matrices);

this.bindTexture(this.findTexture("profession", Registry.VILLAGER_PROFESSION.getId(hat.getProfession())));
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(hatModel.getLayer(this.getTexture(entity)));
hatModel.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV, 1F, 1F, 1F, 1F);

hatModel.render(living, x, y, float_4, float_5, float_6, delta);
GlStateManager.translatef(0, 0, 0F);
GlStateManager.scalef(1F, 1F, 1F);
if(entity.isSneaking())
RenderSystem.translatef(0, -0.25F, 0F);
}
}

private Identifier findTexture(String string_1, Identifier identifier_1) {
return new Identifier(identifier_1.getNamespace(), "textures/entity/villager/"+ string_1 + "/" + identifier_1.getPath() + ".png");
}

@Override
public boolean hasHurtOverlay()
protected Identifier getTexture(T entity)
{
return false;
if(!entity.getEquippedStack(EquipmentSlot.HEAD).isEmpty() && entity.getEquippedStack(EquipmentSlot.HEAD).getItem() instanceof VillagerHatItem)
{
VillagerHatItem hat = (VillagerHatItem) entity.getEquippedStack(EquipmentSlot.HEAD).getItem();
return this.findTexture("profession", Registry.VILLAGER_PROFESSION.getId(hat.getProfession()));
}
return super.getTexture(entity);
}
}
Original file line number Diff line number Diff line change
@@ -1,34 +1,36 @@
package party.lemons.villagerhats.client;

import net.minecraft.client.model.Cuboid;
import net.minecraft.client.model.ModelPart;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.entity.model.EntityModel;
import net.minecraft.client.render.entity.model.ModelWithHat;
import net.minecraft.client.render.entity.model.ModelWithHead;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.entity.passive.AbstractTraderEntity;
import net.minecraft.util.math.MathHelper;

public class VillagerHatModel<T extends Entity> extends EntityModel<T> implements ModelWithHead, ModelWithHat {
private Cuboid head;
private Cuboid headOverlay;
private Cuboid hat;
private ModelPart head;
private ModelPart headOverlay;
private ModelPart hat;

public VillagerHatModel(float scale) {
this(scale, 64, 64);
}

public VillagerHatModel(float scale, int u, int v) {
this.head = (new Cuboid(this)).setTextureSize(u, v);
this.head.setRotationPoint(0.0F, 0.0F, 0.0F);
this.head.setTextureOffset(0, 0).addBox(-4.0F, -10.0F, -4.0F, 8, 10, 8, scale);
this.headOverlay = (new Cuboid(this)).setTextureSize(u, v);
this.headOverlay.setRotationPoint(0.0F, 0.0F, 0.0F);
this.headOverlay.setTextureOffset(32, 0).addBox(-4.0F, -10.0F, -4.0F, 8, 10, 8, scale + 0.5F);
this.head = (new ModelPart(this)).setTextureSize(u, v);
this.head.setPivot(0.0F, 0.0F, 0.0F);
this.head.setTextureOffset(0, 0).addCuboid(-4.0F, -10.0F, -4.0F, 8, 10, 8, scale);
this.headOverlay = (new ModelPart(this)).setTextureSize(u, v);
this.headOverlay.setPivot(0.0F, 0.0F, 0.0F);
this.headOverlay.setTextureOffset(32, 0).addCuboid(-4.0F, -10.0F, -4.0F, 8, 10, 8, scale + 0.5F);
this.head.addChild(this.headOverlay);
this.hat = (new Cuboid(this)).setTextureSize(u, v);
this.hat.setRotationPoint(0.0F, 0.0F, 0.0F);
this.hat.setTextureOffset(30, 47).addBox(-8.0F, -8.0F, -6.0F, 16, 16, 1, scale);
this.hat = (new ModelPart(this)).setTextureSize(u, v);
this.hat.setPivot(0.0F, 0.0F, 0.0F);
this.hat.setTextureOffset(30, 47).addCuboid(-8.0F, -8.0F, -6.0F, 16, 16, 1, scale);
this.hat.pitch = -1.5707964F;
this.headOverlay.addChild(this.hat);
}
Expand All @@ -41,45 +43,18 @@ public void setHatVisible(boolean visible) {
}

@Override
public void render(T entity, float float_1, float float_2, float headRoll, float headYaw, float headPitch, float scale) {
this.setAngles(entity, float_1, float_2, headRoll, headYaw, headPitch, scale);
this.head.render(scale);
public ModelPart getHead() {
return head;
}

@Override
public void setAngles(T entity, float float_1, float float_2, float headRoll, float headYaw, float headPitch, float scale)
public void setAngles(T entity, float v, float headRoll, float headYaw, float headPitch, float scale)
{
boolean isRollingHead = false;
if (entity instanceof AbstractTraderEntity)
{
isRollingHead = ((AbstractTraderEntity)entity).getHeadRollingTimeLeft() > 0;
}

if (entity instanceof ArmorStandEntity)
{
ArmorStandEntity stand = (ArmorStandEntity) entity;
this.head.yaw = stand.getHeadRotation().getYaw() * 0.017453292F;
this.head.pitch = stand.getHeadRotation().getPitch() * 0.017453292F;
this.head.roll = stand.getHeadRotation().getRoll() * 0.017453292F;
} else
{
this.head.yaw = headYaw * 0.017453292F;
this.head.pitch = headPitch * 0.017453292F;
if (isRollingHead)
{
this.head.roll = 0.3F * MathHelper.sin(0.45F * headRoll);
this.head.pitch = 0.4F;
} else
{
this.head.roll = 0.0F;
}
}


}

@Override
public Cuboid getHead() {
return head;
public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha)
{
this.head.render(matrices, vertexConsumer, light, overlay, red, green, blue, alpha);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,15 @@
import party.lemons.villagerhats.client.PlayerVillagerHatRenderLayer;

@Mixin(ArmorStandEntityRenderer.class)
public class ArmorStandRenderMixin extends LivingEntityRenderer<ArmorStandEntity, ArmorStandEntityModel> {
public ArmorStandRenderMixin(EntityRenderDispatcher entityRenderDispatcher_1, ArmorStandEntityModel entityModel_1, float float_1)
public abstract class ArmorStandRenderMixin extends LivingEntityRenderer<ArmorStandEntity, ArmorStandEntityModel> {
public ArmorStandRenderMixin(EntityRenderDispatcher entityRenderDispatcher, ArmorStandEntityModel model, float shadowSize)
{
super(entityRenderDispatcher_1, entityModel_1, float_1);
super(entityRenderDispatcher, model, shadowSize);
}

@Inject(at = @At("RETURN"), method = "<init>")
public void onConstruct(EntityRenderDispatcher dispatcher, CallbackInfo info)
{
this.addFeature(new PlayerVillagerHatRenderLayer<>(this));
}

@Override
protected Identifier getTexture(ArmorStandEntity armorStandEntity)
{
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,16 @@
import party.lemons.villagerhats.client.PlayerVillagerHatRenderLayer;

@Mixin(PlayerEntityRenderer.class)
public class PlayerRenderMixin extends LivingEntityRenderer<AbstractClientPlayerEntity, PlayerEntityModel<AbstractClientPlayerEntity>>
public abstract class PlayerRenderMixin extends LivingEntityRenderer<AbstractClientPlayerEntity, PlayerEntityModel<AbstractClientPlayerEntity>>
{
public PlayerRenderMixin(EntityRenderDispatcher entityRenderDispatcher_1, PlayerEntityModel<AbstractClientPlayerEntity> entityModel_1, float float_1)
public PlayerRenderMixin(EntityRenderDispatcher entityRenderDispatcher, PlayerEntityModel<AbstractClientPlayerEntity> model, float shadow)
{
super(entityRenderDispatcher_1, entityModel_1, float_1);
super(entityRenderDispatcher, model, shadow);
}

@Inject(at = @At("RETURN"), method = "<init>(Lnet/minecraft/client/render/entity/EntityRenderDispatcher;Z)V")
public void onConstruct(EntityRenderDispatcher dispatcher, boolean smallarms, CallbackInfo info)
{
this.addFeature(new PlayerVillagerHatRenderLayer<>(this));
}

@Override
protected Identifier getTexture(AbstractClientPlayerEntity var1)
{
return null;
}
}

0 comments on commit c410d3f

Please sign in to comment.