Skip to content
Merged

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ private static void addVariantsToCategories(GatherVariantCategoriesEvent event)
event.addGendered(ChangedTransfurVariants.WHITE_LATEX_WOLF_FEMALE);
event.addGendered(ChangedTransfurVariants.WHITE_WOLF_MALE);
event.addGendered(ChangedTransfurVariants.WHITE_WOLF_FEMALE);
event.addGendered(ChangedTransfurVariants.LATEX_RABBIT_MALE);
event.addGendered(ChangedTransfurVariants.LATEX_RABBIT_FEMALE);
event.addGendered(ChangedTransfurVariants.LATEX_SQUID_DOG_MALE);
event.addGendered(ChangedTransfurVariants.LATEX_SQUID_DOG_FEMALE);
event.addGendered(ChangedTransfurVariants.LATEX_SNOW_LEOPARD_MALE);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package net.ltxprogrammer.changed.client.renderer;

import net.ltxprogrammer.changed.Changed;
import net.ltxprogrammer.changed.client.renderer.layers.CustomEyesLayer;
import net.ltxprogrammer.changed.client.renderer.layers.GasMaskLayer;
import net.ltxprogrammer.changed.client.renderer.layers.LatexParticlesLayer;
import net.ltxprogrammer.changed.client.renderer.layers.TransfurCapeLayer;
import net.ltxprogrammer.changed.client.renderer.model.LatexRabbitFemaleModel;
import net.ltxprogrammer.changed.client.renderer.model.armor.ArmorLatexFemaleWolfModel;
import net.ltxprogrammer.changed.entity.beast.LatexRabbitFemale;
import net.ltxprogrammer.changed.util.Color3;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.resources.ResourceLocation;

public class LatexRabbitFemaleRenderer extends AdvancedHumanoidRenderer<LatexRabbitFemale, LatexRabbitFemaleModel> {
public static final ResourceLocation DEFAULT_SKIN_LOCATION = Changed.modResource("textures/latex_rabbit_female.png");

public LatexRabbitFemaleRenderer(EntityRendererProvider.Context context) {
super(context, new LatexRabbitFemaleModel(context.bakeLayer(LatexRabbitFemaleModel.LAYER_LOCATION)), ArmorLatexFemaleWolfModel.MODEL_SET, 0.5f);
this.addLayer(new LatexParticlesLayer<>(this, getModel()));
this.addLayer(TransfurCapeLayer.normalCape(this, context.getModelSet()));
this.addLayer(CustomEyesLayer.builder(this, context.getModelSet())
.withSclera(Color3.WHITE).withIris(Color3.fromInt(0x87e385)).build());
this.addLayer(GasMaskLayer.forSnouted(this, context.getModelSet()));
}

@Override
public ResourceLocation getTextureLocation(LatexRabbitFemale entity) {
return DEFAULT_SKIN_LOCATION;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package net.ltxprogrammer.changed.client.renderer;

import net.ltxprogrammer.changed.Changed;
import net.ltxprogrammer.changed.client.renderer.layers.CustomEyesLayer;
import net.ltxprogrammer.changed.client.renderer.layers.GasMaskLayer;
import net.ltxprogrammer.changed.client.renderer.layers.LatexParticlesLayer;
import net.ltxprogrammer.changed.client.renderer.layers.TransfurCapeLayer;
import net.ltxprogrammer.changed.client.renderer.model.LatexRabbitMaleModel;
import net.ltxprogrammer.changed.client.renderer.model.armor.ArmorLatexMaleWolfModel;
import net.ltxprogrammer.changed.entity.beast.LatexRabbitMale;
import net.ltxprogrammer.changed.util.Color3;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.resources.ResourceLocation;

public class LatexRabbitMaleRenderer extends AdvancedHumanoidRenderer<LatexRabbitMale, LatexRabbitMaleModel> {
public static final ResourceLocation DEFAULT_SKIN_LOCATION = Changed.modResource("textures/latex_rabbit_male.png");

public LatexRabbitMaleRenderer(EntityRendererProvider.Context context) {
super(context, new LatexRabbitMaleModel(context.bakeLayer(LatexRabbitMaleModel.LAYER_LOCATION)), ArmorLatexMaleWolfModel.MODEL_SET, 0.5f);
this.addLayer(new LatexParticlesLayer<>(this, getModel()));
this.addLayer(TransfurCapeLayer.normalCape(this, context.getModelSet()));
this.addLayer(CustomEyesLayer.builder(this, context.getModelSet())
.withSclera(Color3.WHITE).withIris(Color3.fromInt(0x87e385)).build());
this.addLayer(GasMaskLayer.forSnouted(this, context.getModelSet()));
}

@Override
public ResourceLocation getTextureLocation(LatexRabbitMale entity) {
return DEFAULT_SKIN_LOCATION;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
package net.ltxprogrammer.changed.client.renderer.model;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.ltxprogrammer.changed.Changed;
import net.ltxprogrammer.changed.client.renderer.animate.AnimatorPresets;
import net.ltxprogrammer.changed.client.renderer.animate.HumanoidAnimator;
import net.ltxprogrammer.changed.entity.beast.LatexRabbitFemale;
import net.minecraft.client.model.geom.ModelLayerLocation;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.client.model.geom.PartPose;
import net.minecraft.client.model.geom.builders.*;
import net.minecraft.world.entity.HumanoidArm;

import java.util.List;

public class LatexRabbitFemaleModel extends AdvancedHumanoidModel<LatexRabbitFemale> {
// This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor
public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(Changed.modResource("latex_rabbit_female"), "main");
private final ModelPart RightLeg;
private final ModelPart LeftLeg;
private final ModelPart RightArm;
private final ModelPart LeftArm;
private final ModelPart Head;
private final ModelPart Torso;
private final ModelPart Tail;
private final HumanoidAnimator<LatexRabbitFemale, LatexRabbitFemaleModel> animator;

public LatexRabbitFemaleModel(ModelPart root) {
super(root);
this.RightLeg = root.getChild("RightLeg");
this.LeftLeg = root.getChild("LeftLeg");
this.Head = root.getChild("Head");
this.Torso = root.getChild("Torso");
this.Tail = Torso.getChild("Tail");
this.RightArm = root.getChild("RightArm");
this.LeftArm = root.getChild("LeftArm");

var tailPrimary = Tail.getChild("TailPrimary");

var leftLowerLeg = LeftLeg.getChild("LeftLowerLeg");
var leftFoot = leftLowerLeg.getChild("LeftFoot");
var rightLowerLeg = RightLeg.getChild("RightLowerLeg");
var rightFoot = rightLowerLeg.getChild("RightFoot");

animator = HumanoidAnimator.of(this).hipOffset(-1.5f)
.addPreset(AnimatorPresets.deerLike(
Head, Head.getChild("LeftEar"), Head.getChild("RightEar"),
Torso, LeftArm, RightArm,
Tail, List.of(tailPrimary),
LeftLeg, leftLowerLeg, leftFoot, leftFoot.getChild("LeftPad"), RightLeg, rightLowerLeg, rightFoot, rightFoot.getChild("RightPad")));
}

public static LayerDefinition createBodyLayer() {
MeshDefinition meshdefinition = new MeshDefinition();
PartDefinition partdefinition = meshdefinition.getRoot();

PartDefinition RightLeg = partdefinition.addOrReplaceChild("RightLeg", CubeListBuilder.create(), PartPose.offset(-2.4F, 10.5F, 0.0F));

PartDefinition RightThigh_r1 = RightLeg.addOrReplaceChild("RightThigh_r1", CubeListBuilder.create().texOffs(16, 37).addBox(-1.9F, 0.0F, -2.0F, 4.0F, 7.0F, 4.0F, new CubeDeformation(0.1F)), PartPose.offsetAndRotation(-0.1F, 0.0F, 0.0F, -0.2182F, 0.0F, 0.0F));

PartDefinition RightLowerLeg = RightLeg.addOrReplaceChild("RightLowerLeg", CubeListBuilder.create(), PartPose.offset(-0.1F, 6.375F, -3.45F));

PartDefinition RightCalf_r1 = RightLowerLeg.addOrReplaceChild("RightCalf_r1", CubeListBuilder.create().texOffs(48, 42).addBox(-1.9F, -0.125F, -2.9F, 4.0F, 6.0F, 4.0F, CubeDeformation.NONE), PartPose.offsetAndRotation(0.0F, -2.125F, 1.95F, 0.8727F, 0.0F, 0.0F));

PartDefinition RightFoot = RightLowerLeg.addOrReplaceChild("RightFoot", CubeListBuilder.create(), PartPose.offset(0.0F, 0.8F, 7.175F));

PartDefinition RightArch_r1 = RightFoot.addOrReplaceChild("RightArch_r1", CubeListBuilder.create().texOffs(0, 53).addBox(-1.9F, -8.45F, -0.725F, 4.0F, 6.0F, 3.0F, new CubeDeformation(0.005F)), PartPose.offsetAndRotation(0.0F, 7.075F, -4.975F, -0.3491F, 0.0F, 0.0F));

PartDefinition RightPad = RightFoot.addOrReplaceChild("RightPad", CubeListBuilder.create().texOffs(48, 52).addBox(-1.9F, 0.0F, -2.5F, 4.0F, 2.0F, 5.0F, CubeDeformation.NONE), PartPose.offset(0.0F, 4.325F, -4.425F));

PartDefinition LeftLeg = partdefinition.addOrReplaceChild("LeftLeg", CubeListBuilder.create(), PartPose.offset(2.4F, 10.5F, 0.0F));

PartDefinition LeftThigh_r1 = LeftLeg.addOrReplaceChild("LeftThigh_r1", CubeListBuilder.create().texOffs(16, 48).addBox(-2.1F, 0.0F, -2.0F, 4.0F, 7.0F, 4.0F, new CubeDeformation(0.1F)), PartPose.offsetAndRotation(0.1F, 0.0F, 0.0F, -0.2182F, 0.0F, 0.0F));

PartDefinition LeftLowerLeg = LeftLeg.addOrReplaceChild("LeftLowerLeg", CubeListBuilder.create(), PartPose.offset(0.1F, 6.375F, -3.45F));

PartDefinition LeftCalf_r1 = LeftLowerLeg.addOrReplaceChild("LeftCalf_r1", CubeListBuilder.create().texOffs(32, 51).addBox(-2.1F, -0.125F, -2.9F, 4.0F, 6.0F, 4.0F, CubeDeformation.NONE), PartPose.offsetAndRotation(0.0F, -2.125F, 1.95F, 0.8727F, 0.0F, 0.0F));

PartDefinition LeftFoot = LeftLowerLeg.addOrReplaceChild("LeftFoot", CubeListBuilder.create(), PartPose.offset(0.0F, 0.8F, 7.175F));

PartDefinition LeftArch_r1 = LeftFoot.addOrReplaceChild("LeftArch_r1", CubeListBuilder.create().texOffs(56, 23).addBox(-2.1F, -8.45F, -0.725F, 4.0F, 6.0F, 3.0F, new CubeDeformation(0.005F)), PartPose.offsetAndRotation(0.0F, 7.075F, -4.975F, -0.3491F, 0.0F, 0.0F));

PartDefinition LeftPad = LeftFoot.addOrReplaceChild("LeftPad", CubeListBuilder.create().texOffs(56, 16).addBox(-2.1F, 0.0F, -2.5F, 4.0F, 2.0F, 5.0F, CubeDeformation.NONE), PartPose.offset(0.0F, 4.325F, -4.425F));

PartDefinition Head = partdefinition.addOrReplaceChild("Head", CubeListBuilder.create().texOffs(32, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, CubeDeformation.NONE)
.texOffs(64, 32).addBox(-1.5F, -1.0F, -5.0F, 3.0F, 1.0F, 1.0F, CubeDeformation.NONE)
.texOffs(0, 62).addBox(-2.0F, -3.0F, -5.5F, 4.0F, 2.0F, 2.0F, CubeDeformation.NONE), PartPose.offset(0.0F, 0.0F, 0.0F));

PartDefinition Nose_r1 = Head.addOrReplaceChild("Nose_r1", CubeListBuilder.create().texOffs(26, 59).addBox(-1.0F, -29.625F, -0.95F, 1.0F, 1.0F, 1.0F, CubeDeformation.NONE), PartPose.offsetAndRotation(0.5F, 26.0F, 0.5F, 0.1745F, 0.0F, 0.0F));

PartDefinition Hair = Head.addOrReplaceChild("Hair", CubeListBuilder.create().texOffs(0, 0).addBox(-4.0F, -33.0F, -4.0F, 8.0F, 11.0F, 8.0F, new CubeDeformation(0.2F))
.texOffs(0, 19).addBox(-4.0F, -33.0F, -4.0F, 8.0F, 10.0F, 8.0F, new CubeDeformation(0.35F)), PartPose.offset(0.0F, 25.0F, 0.0F));

PartDefinition RightEar = Head.addOrReplaceChild("RightEar", CubeListBuilder.create(), PartPose.offset(-1.1F, -7.3F, -1.4F));

PartDefinition RightEarPivot = RightEar.addOrReplaceChild("RightEarPivot", CubeListBuilder.create().texOffs(26, 61).addBox(-3.05F, 1.1F, -1.95F, 3.0F, 5.0F, 2.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(0.1F, 1.4F, -0.4F, 2.8885F, 0.7505F, -0.4538F));

PartDefinition RightEarSecondary = RightEarPivot.addOrReplaceChild("RightEarSecondary", CubeListBuilder.create().texOffs(56, 32).addBox(-0.55F, 4.0F, -0.95F, 2.0F, 1.0F, 2.0F, CubeDeformation.NONE)
.texOffs(64, 0).addBox(-1.55F, 0.0F, -0.95F, 3.0F, 4.0F, 2.0F, CubeDeformation.NONE), PartPose.offsetAndRotation(-1.5F, 6.1F, -1.0F, 0.2618F, 0.0F, 0.0F));

PartDefinition LeftEar = Head.addOrReplaceChild("LeftEar", CubeListBuilder.create(), PartPose.offset(1.1F, -7.3F, -1.4F));

PartDefinition LeftEarPivot = LeftEar.addOrReplaceChild("LeftEarPivot", CubeListBuilder.create().texOffs(36, 61).addBox(0.05F, 1.1F, -1.95F, 3.0F, 5.0F, 2.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(-0.1F, 1.4F, -0.4F, 2.8885F, -0.7505F, 0.4538F));

PartDefinition LeftEarSecondary = LeftEarPivot.addOrReplaceChild("LeftEarSecondary", CubeListBuilder.create().texOffs(64, 6).addBox(-1.45F, 0.0F, -0.95F, 3.0F, 4.0F, 2.0F, CubeDeformation.NONE)
.texOffs(64, 12).addBox(-1.45F, 4.0F, -0.95F, 2.0F, 1.0F, 2.0F, CubeDeformation.NONE), PartPose.offsetAndRotation(1.5F, 6.1F, -1.0F, 0.2618F, 0.0F, 0.0F));

PartDefinition Torso = partdefinition.addOrReplaceChild("Torso", CubeListBuilder.create().texOffs(32, 26).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 5.0F, 4.0F, CubeDeformation.NONE)
.texOffs(32, 16).addBox(-4.0F, 4.0F, -2.0F, 8.0F, 6.0F, 4.0F, new CubeDeformation(-0.3F))
.texOffs(48, 35).addBox(-4.0F, 8.6F, -2.0F, 8.0F, 3.0F, 4.0F, new CubeDeformation(0.1F)), PartPose.offset(0.0F, 0.0F, 0.0F));

PartDefinition Tail = Torso.addOrReplaceChild("Tail", CubeListBuilder.create(), PartPose.offset(0.0F, 10.0F, 0.0F));

PartDefinition TailPrimary = Tail.addOrReplaceChild("TailPrimary", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F));

PartDefinition Base_r1 = TailPrimary.addOrReplaceChild("Base_r1", CubeListBuilder.create().texOffs(14, 59).addBox(-1.5F, 0.1F, -0.6F, 3.0F, 4.0F, 3.0F, new CubeDeformation(0.2F)), PartPose.offsetAndRotation(0.0F, 1.3F, 1.1F, 1.9199F, 0.0F, 0.0F));

PartDefinition Plantoids = Torso.addOrReplaceChild("Plantoids", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, -2.0F));

PartDefinition RightPlantoid_r1 = Plantoids.addOrReplaceChild("RightPlantoid_r1", CubeListBuilder.create().texOffs(60, 59).addBox(-4.25F, -1.7F, -0.8F, 4.0F, 4.0F, 2.0F, new CubeDeformation(-0.03F))
.texOffs(48, 59).addBox(0.25F, -1.7F, -0.8F, 4.0F, 4.0F, 2.0F, new CubeDeformation(-0.03F)), PartPose.offsetAndRotation(0.0F, 2.0F, 0.0F, -0.2793F, 0.0F, 0.0F));

PartDefinition Center_r1 = Plantoids.addOrReplaceChild("Center_r1", CubeListBuilder.create().texOffs(64, 42).addBox(-0.5F, -1.3F, -0.1F, 1.0F, 3.0F, 1.0F, new CubeDeformation(0.2F)), PartPose.offsetAndRotation(0.0F, 2.0F, 0.0F, -0.192F, 0.0F, 0.0F));

PartDefinition RightArm = partdefinition.addOrReplaceChild("RightArm", CubeListBuilder.create().texOffs(0, 37).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, CubeDeformation.NONE), PartPose.offset(-5.0F, 2.0F, 0.0F));

PartDefinition LeftArm = partdefinition.addOrReplaceChild("LeftArm", CubeListBuilder.create().texOffs(32, 35).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, CubeDeformation.NONE), PartPose.offset(5.0F, 2.0F, 0.0F));

return LayerDefinition.create(meshdefinition, 96, 96);
}

public ModelPart getArm(HumanoidArm p_102852_) {
return p_102852_ == HumanoidArm.LEFT ? this.LeftArm : this.RightArm;
}

public ModelPart getLeg(HumanoidArm p_102852_) {
return p_102852_ == HumanoidArm.LEFT ? this.LeftLeg : this.RightLeg;
}

public ModelPart getHead() {
return this.Head;
}

public ModelPart getTorso() {
return Torso;
}

@Override
public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
RightLeg.render(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
LeftLeg.render(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
Head.render(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
Torso.render(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
RightArm.render(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
LeftArm.render(poseStack, buffer, packedLight, packedOverlay, red, green, blue, alpha);
}

@Override
public HumanoidAnimator<LatexRabbitFemale, LatexRabbitFemaleModel> getAnimator(LatexRabbitFemale entity) {
return animator;
}
}
Loading