Skip to content

Commit

Permalink
popom model
Browse files Browse the repository at this point in the history
  • Loading branch information
MBatt1 committed Nov 19, 2024
1 parent 2b815ce commit 24039c0
Show file tree
Hide file tree
Showing 8 changed files with 163 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class ParadiseLostModelLayers {
public static final EntityModelLayer ENVOY_OUTER_ARMOR = register("envoy", "outer_armor", OUTER_ARMOR_MODEL_DATA);
public static final EntityModelLayer MOA = register("moa", "main", MoaModel.getTexturedModelData());
public static final EntityModelLayer PHOENIX_ARMOR = register("phoenix_armor", "main", PhoenixArmorModel.getTexturedModelData());
public static final EntityModelLayer POPOM = register("popom", "main", EnvoyEntityModel.getTexturedModelData());
public static final EntityModelLayer POPOM = register("popom", "main", PopomEntityModel.getTexturedModelData());


public static EntityModelLayer register(Identifier id, String layer, TexturedModelData data) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package net.id.paradiselost.client.model.entity;

import com.google.common.collect.ImmutableList;
import net.id.paradiselost.entities.passive.PopomEntity;
import net.minecraft.client.model.ModelData;
import net.minecraft.client.model.ModelPart;
import net.minecraft.client.model.ModelPartBuilder;
import net.minecraft.client.model.ModelPartData;
import net.minecraft.client.model.ModelTransform;
import net.minecraft.client.model.TexturedModelData;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.entity.model.AnimalModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.MathHelper;

public class PopomEntityModel<T extends PopomEntity> extends AnimalModel<T> {

public int furSize = 0;

private final ModelPart body0;
private final ModelPart body1;
private final ModelPart body2;
private final ModelPart body3;
private final ModelPart head;
private final ModelPart frleg;
private final ModelPart flleg;
private final ModelPart brleg;
private final ModelPart blleg;

public PopomEntityModel(ModelPart root) {
super(true, 25.0F, 2.0F, 3.0F, 3.0F, 48.0F);
this.body0 = root.getChild("body0");
this.body1 = root.getChild("body1");
this.body2 = root.getChild("body2");
this.body3 = root.getChild("body3");
this.head = root.getChild("head");
this.frleg = root.getChild("frleg");
this.flleg = root.getChild("flleg");
this.brleg = root.getChild("brleg");
this.blleg = root.getChild("blleg");
}

public static TexturedModelData getTexturedModelData() {
ModelData ModelData = new ModelData();
ModelPartData root = ModelData.getRoot();

ModelPartData body0 = root.addChild("body0", ModelPartBuilder.create().uv(0, 78).cuboid(-5.0F, -9.0F, -8.0F, 10.0F, 6.0F, 15.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F));

ModelPartData body1 = root.addChild("body1", ModelPartBuilder.create().uv(0, 54).cuboid(-5.5F, -11.0F, -8.0F, 11.0F, 8.0F, 16.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F));

ModelPartData body2 = root.addChild("body2", ModelPartBuilder.create().uv(0, 28).cuboid(-6.0F, -12.0F, -8.0F, 12.0F, 9.0F, 17.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F));

ModelPartData body3 = root.addChild("body3", ModelPartBuilder.create().uv(0, 0).cuboid(-7.0F, -13.0F, -8.0F, 14.0F, 10.0F, 18.0F), ModelTransform.pivot(0.0F, 24.0F, 0.0F));

ModelPartData head = root.addChild("head", ModelPartBuilder.create().uv(38, 54).cuboid(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 4.0F)
.uv(38, 62).cuboid(-3.0F, -5.0F, -5.0F, 6.0F, 3.0F, 3.0F), ModelTransform.pivot(0.0F, 19.0F, -8.0F));

ModelPartData frleg = root.addChild("frleg", ModelPartBuilder.create().uv(0, 116).cuboid(-2.99F, 0.0F, -1.0F, 3.0F, 3.0F, 3.0F), ModelTransform.pivot(-2.0F, 21.0F, -5.0F));

ModelPartData flleg = root.addChild("flleg", ModelPartBuilder.create().uv(0, 122).cuboid(-0.01F, 0.0F, -1.0F, 3.0F, 3.0F, 3.0F), ModelTransform.pivot(2.0F, 21.0F, -5.0F));

ModelPartData brleg = root.addChild("brleg", ModelPartBuilder.create().uv(12, 116).cuboid(-2.99F, 0.0F, -1.0F, 3.0F, 3.0F, 3.0F), ModelTransform.pivot(-2.0F, 21.0F, 4.0F));

ModelPartData blleg = root.addChild("blleg", ModelPartBuilder.create().uv(12, 122).cuboid(-0.01F, 0.0F, -1.0F, 3.0F, 3.0F, 3.0F), ModelTransform.pivot(2.0F, 21.0F, 4.0F));

return TexturedModelData.of(ModelData, 64, 128);
}

@Override
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) {
super.render(matrices, vertices, light, overlay, color);
if (this.child) {
matrices.push();
float f = 0.5F;
matrices.scale(f, f, f);
matrices.translate(0.0F, 1.6F, 0.0F);
this.getFurs()[2].render(matrices, vertices, light, overlay, color);
matrices.pop();
} else {
this.getFurs()[furSize].render(matrices, vertices, light, overlay, color);
}
}

@Override
protected Iterable<ModelPart> getHeadParts() {
return ImmutableList.of(this.head);
}

@Override
protected Iterable<ModelPart> getBodyParts() {
return ImmutableList.of(this.frleg, this.flleg, this.brleg, this.blleg);
}

protected ModelPart[] getFurs() {
return new ModelPart[]{this.body0, this.body1, this.body2, this.body3};
}

@Override
public void setAngles(PopomEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
this.head.pitch = headPitch * (float) (Math.PI / 180.0);
this.head.yaw = headYaw * (float) (Math.PI / 180.0);
this.brleg.pitch = MathHelper.cos(limbAngle * 0.6662F) * 1.4F * limbDistance;
this.blleg.pitch = MathHelper.cos(limbAngle * 0.6662F + (float) Math.PI) * 1.4F * limbDistance;
this.frleg.pitch = MathHelper.cos(limbAngle * 0.6662F + (float) Math.PI) * 1.4F * limbDistance;
this.flleg.pitch = MathHelper.cos(limbAngle * 0.6662F) * 1.4F * limbDistance;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,30 @@
import net.fabricmc.api.Environment;
import net.id.paradiselost.ParadiseLost;
import net.id.paradiselost.client.model.ParadiseLostModelLayers;
import net.id.paradiselost.client.model.entity.PopomEntityModel;
import net.id.paradiselost.entities.passive.PopomEntity;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.render.entity.PigEntityRenderer;
import net.id.paradiselost.client.rendering.entity.passive.PopomEntityRenderer;
import net.minecraft.entity.passive.PigEntity;
import net.minecraft.client.render.entity.MobEntityRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;

@Environment(EnvType.CLIENT)
public class PopomEntityRenderer extends PigEntityRenderer {
public class PopomEntityRenderer extends MobEntityRenderer<PopomEntity, PopomEntityModel<PopomEntity>> {
private static final Identifier TEXTURE = ParadiseLost.locate("textures/entity/popom/popom.png");

public PopomEntityRenderer(EntityRendererFactory.Context renderManager) {
super(renderManager);
super(renderManager, new PopomEntityModel<>(renderManager.getPart(ParadiseLostModelLayers.POPOM)), 0.7F);
}

public Identifier getTexture(PigEntity entity) {
public void render(PopomEntity popomEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) {
matrixStack.push();
this.model.furSize = popomEntity.getFurSize();
matrixStack.pop();
super.render(popomEntity, f, g, matrixStack, vertexConsumerProvider, i);
}

public Identifier getTexture(PopomEntity entity) {
return TEXTURE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class ParadiseLostEntityTypes {
public static final EntityType<MoaEntity> MOA = add("moa", of(MoaEntity::new, CREATURE, changing(0.8F, 1.9F), 5),
attributes(MoaEntity::createMoaAttributes), spawnRestrictions(ParadiseLostAnimalEntity::isValidNaturalParadiseLostSpawn));

public static final EntityType<PopomEntity> POPOM = add("popom", of(PopomEntity::new, CREATURE, changing(0.6F, 1.0F), 5),
public static final EntityType<PopomEntity> POPOM = add("popom", of(PopomEntity::new, CREATURE, changing(1.1F, 1.0F), 5),
attributes(PopomEntity::createPopomAttributes), spawnRestrictions(PopomEntity::canMobSpawn));

// projectile
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
package net.id.paradiselost.entities.passive;

import net.id.paradiselost.entities.hostile.EnvoyEntity;
import net.id.paradiselost.util.ParadiseLostSoundEvents;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.attribute.DefaultAttributeContainer;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.data.DataTracker;
import net.minecraft.entity.data.TrackedData;
import net.minecraft.entity.data.TrackedDataHandlerRegistry;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.entity.passive.PassiveEntity;
import net.minecraft.entity.passive.PigEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.sound.SoundEvent;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;

public class PopomEntity extends PigEntity {
public class PopomEntity extends AnimalEntity {

private static final TrackedData<Integer> FUR_SIZE;

public PopomEntity(EntityType<? extends PopomEntity> entityType, World world) {
super(entityType, world);
}

protected void initDataTracker(DataTracker.Builder builder) {
super.initDataTracker(builder);
builder.add(FUR_SIZE, 0);
}

// Custom sounds for Popom
@Override
protected SoundEvent getAmbientSound() {
Expand All @@ -33,19 +50,38 @@ protected SoundEvent getDeathSound() {
// Define attributes for Popom
public static DefaultAttributeContainer.Builder createPopomAttributes() {
return createMobAttributes()
.add(EntityAttributes.GENERIC_MAX_HEALTH, 20.0D)
.add(EntityAttributes.GENERIC_MAX_HEALTH, 10.0D)
.add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.25D);
}

@Nullable
@Override
public PassiveEntity createChild(ServerWorld world, PassiveEntity entity) {
return null;
}

@Override
public void writeCustomDataToNbt(NbtCompound compound) {
super.writeCustomDataToNbt(compound);
// Any custom data you want to save
compound.putInt("furSize", this.dataTracker.get(FUR_SIZE));
}

@Override
public void readCustomDataFromNbt(NbtCompound compound) {
super.readCustomDataFromNbt(compound);
// Any custom data you want to load
this.dataTracker.set(FUR_SIZE, compound.getInt("furSize"));
}

@Override
public boolean isBreedingItem(ItemStack stack) {
return stack.isIn(ItemTags.FLOWERS);
}

public int getFurSize() {
return this.dataTracker.get(FUR_SIZE);
}

static {
FUR_SIZE = DataTracker.registerData(PopomEntity.class, TrackedDataHandlerRegistry.INTEGER);
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 24039c0

Please sign in to comment.