Skip to content

Commit

Permalink
Add MoonBlessed Creeper, Spore
Browse files Browse the repository at this point in the history
  • Loading branch information
Spusik committed Sep 19, 2024
1 parent d3b3e2c commit 35c90ce
Show file tree
Hide file tree
Showing 12 changed files with 255 additions and 201 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
import ru.pinkgoosik.hiddenrealm.block.TradingPedestalBlock;
import ru.pinkgoosik.hiddenrealm.blockentity.TradingPedestalBlockEntity;
import ru.pinkgoosik.hiddenrealm.client.model.ShopkeeperModel;
import ru.pinkgoosik.hiddenrealm.client.model.TestLunarCreeperModel;
import ru.pinkgoosik.hiddenrealm.client.model.MoonblessedCreeperModel;
import ru.pinkgoosik.hiddenrealm.client.render.LunarCoinEntityRenderer;
import ru.pinkgoosik.hiddenrealm.client.render.TestLunarCreeperRenderer;
import ru.pinkgoosik.hiddenrealm.client.render.MoonblessedCreeperRenderer;
import ru.pinkgoosik.hiddenrealm.client.render.TradingPedestalRenderer;
import ru.pinkgoosik.hiddenrealm.extension.LunarCoinExtension;
import ru.pinkgoosik.hiddenrealm.registry.HiddenRealmBlockEntities;
Expand All @@ -37,14 +37,14 @@
public class HiddenRealmClient implements ClientModInitializer {

public static final EntityModelLayer SHOPKEEPER_LAYER = new EntityModelLayer(HiddenRealmMod.id("shopkeeper"), "main");
public static final EntityModelLayer TESTLUNARCREEPER_LAYER = new EntityModelLayer(HiddenRealmMod.id("lunar_creeper"), "main");
public static final EntityModelLayer MOONBLESSED_CREEPER_LAYER = new EntityModelLayer(HiddenRealmMod.id("moonblessed_creeper"), "main");

@Override
public void onInitializeClient() {

EntityRendererRegistry.register(HiddenRealmEntities.TEST_LUNAR_CREEPER, TestLunarCreeperRenderer::new);
EntityRendererRegistry.register(HiddenRealmEntities.MOONBLESSED_CREEPER, MoonblessedCreeperRenderer::new);

EntityModelLayerRegistry.registerModelLayer(TESTLUNARCREEPER_LAYER, TestLunarCreeperModel::getTexturedModelData);
EntityModelLayerRegistry.registerModelLayer(MOONBLESSED_CREEPER_LAYER, MoonblessedCreeperModel::getTexturedModelData);

EntityRendererRegistry.register(HiddenRealmEntities.SHOPKEEPER, (context) -> new MobEntityRenderer(context, new ShopkeeperModel(context.getPart(SHOPKEEPER_LAYER)), 0.5f) {
@Override
Expand All @@ -55,6 +55,7 @@ public Identifier getTexture(Entity entity) {

EntityRendererRegistry.register(HiddenRealmEntities.LUNAR_COIN, (context) -> new LunarCoinEntityRenderer(context) {});
EntityRendererRegistry.register(HiddenRealmEntities.FIRE_TRAIL, (context) -> new EmptyEntityRenderer<>(context) {});
EntityRendererRegistry.register(HiddenRealmEntities.SPORE, (context) -> new EmptyEntityRenderer<>(context) {});

EntityModelLayerRegistry.registerModelLayer(SHOPKEEPER_LAYER, ShopkeeperModel::getTexturedModelData);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,19 @@

import net.minecraft.client.model.*;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;

public class TestLunarCreeperModel <T extends Entity> extends SinglePartEntityModel<T> {
public class MoonblessedCreeperModel<T extends Entity> extends SinglePartEntityModel<T> {
private final ModelPart root;
private final ModelPart head;
private final ModelPart right_front_leg;
private final ModelPart left_front_leg;
private final ModelPart right_hind_leg;
private final ModelPart left_hind_leg;
private final ModelPart body;
public TestLunarCreeperModel(ModelPart root) {
public MoonblessedCreeperModel(ModelPart root) {
super(RenderLayer::getEntityTranslucent);
this.root = root;
this.head = root.getChild("head");
Expand All @@ -35,8 +33,6 @@ public static TexturedModelData getTexturedModelData() {
ModelPartData modelPartData = modelData.getRoot();
ModelPartData head = modelPartData.addChild("head", ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 6F, 0.0F));

ModelPartData cube_r1 = head.addChild("cube_r1", ModelPartBuilder.create().uv(25, 26).cuboid(-1.0F, -1.0F, -0.5F, 2.0F, 2.0F, 4.0F, new Dilation(0.0F)), ModelTransform.of(-2.5F, -9.3833F, -4.6286F, -1.0138F, 0.028F, -0.6977F));

ModelPartData right_front_leg = modelPartData.addChild("right_front_leg", ModelPartBuilder.create().uv(0, 16).cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 6.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(-2.0F, 18.0F, -4.0F));

ModelPartData left_front_leg = modelPartData.addChild("left_front_leg", ModelPartBuilder.create().uv(0, 16).cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 6.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(2.0F, 18.0F, -4.0F));
Expand All @@ -45,19 +41,8 @@ public static TexturedModelData getTexturedModelData() {

ModelPartData left_hind_leg = modelPartData.addChild("left_hind_leg", ModelPartBuilder.create().uv(0, 16).cuboid(-2.0F, 0.0F, -2.0F, 4.0F, 6.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(2.0F, 18.0F, 4.0F));



ModelPartData body = modelPartData.addChild("body", ModelPartBuilder.create().uv(16, 16).cuboid(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, new Dilation(0.0F)), ModelTransform.pivot(0.0F, 6F, 0.0F));

ModelPartData cube_r2 = body.addChild("cube_r2", ModelPartBuilder.create().uv(22, 23).cuboid(-1.0F, -1.0F, -3.5F, 2.0F, 2.0F, 7.0F, new Dilation(0.0F)), ModelTransform.of(-5.6875F, 4.3407F, -2.3136F, 0.6839F, -0.9006F, 3.0079F));

ModelPartData cube_r3 = body.addChild("cube_r3", ModelPartBuilder.create().uv(22, 23).cuboid(-1.0F, -1.0F, -3.5F, 2.0F, 2.0F, 7.0F, new Dilation(0.0F)), ModelTransform.of(3.3125F, 4.3407F, -3.3136F, 2.5324F, -0.5392F, 2.2474F));

ModelPartData cube_r4 = body.addChild("cube_r4", ModelPartBuilder.create().uv(22, 23).cuboid(-1.0F, -1.0F, -3.5F, 2.0F, 2.0F, 7.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, 7.8407F, 4.6864F, 0.4363F, 0.0F, 0.0F));

ModelPartData cube_r5 = body.addChild("cube_r5", ModelPartBuilder.create().uv(22, 23).cuboid(-1.0F, -2.0F, -10.0F, 2.0F, 2.0F, 7.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, -1.0F, 11.0F, 0.4363F, 0.0F, 0.0F));

ModelPartData cube_r6 = body.addChild("cube_r6", ModelPartBuilder.create().uv(22, 23).cuboid(-1.0F, -2.0F, -10.0F, 2.0F, 2.0F, 7.0F, new Dilation(0.0F)), ModelTransform.of(0.0F, 2.5F, 11.0F, 0.4363F, 0.0F, 0.0F));
return TexturedModelData.of(modelData, 64, 32);
}
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ public void render(LunarCoinEntity entity, float yaw, float tickDelta, MatrixSta

BakedModel bakedModel = this.itemRenderer.getModel(itemStack, entity.getWorld(),null, entity.getId());

float j = MathHelper.sin(((float)entity.age + tickDelta) / 10.0F + uniqueOffset) * 0.1F + 0.1F;
float k = bakedModel.getTransformation().getTransformation(ModelTransformationMode.GROUND).scale.y();
matrixStack.translate(0.0F, j + 0.25F * k, 0.0F);
float l = ((float)entity.age + tickDelta) / 20.0F + this.uniqueOffset;
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation(l));
float height = MathHelper.sin(((float)entity.age + tickDelta) / 10.0F + uniqueOffset) * 0.1F + 0.1F;
float heightModel = bakedModel.getTransformation().getTransformation(ModelTransformationMode.GROUND).scale.y();
matrixStack.translate(0.0F, height + 0.25F * heightModel, 0.0F);
float rotation = ((float)entity.age + tickDelta) / 20.0F + this.uniqueOffset;
matrixStack.multiply(RotationAxis.POSITIVE_Y.rotation(rotation));
matrixStack.scale(1.5f,1.5f,1.5f);
this.itemRenderer.renderItem(itemStack, ModelTransformationMode.GROUND, false, matrixStack, vertexConsumers, light, 0, bakedModel);
matrixStack.pop();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package ru.pinkgoosik.hiddenrealm.client.render;

import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.render.entity.MobEntityRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import ru.pinkgoosik.hiddenrealm.HiddenRealmMod;
import ru.pinkgoosik.hiddenrealm.client.HiddenRealmClient;
import ru.pinkgoosik.hiddenrealm.client.model.MoonblessedCreeperModel;
import ru.pinkgoosik.hiddenrealm.entity.MoonblessedCreeperEntity;

public class MoonblessedCreeperRenderer extends MobEntityRenderer<MoonblessedCreeperEntity, MoonblessedCreeperModel<MoonblessedCreeperEntity>> {
private static final Identifier TEXTURE = Identifier.of(HiddenRealmMod.MOD_ID,"textures/entity/moonblessed_creeper.png");



public MoonblessedCreeperRenderer(EntityRendererFactory.Context context) {
super(context, new MoonblessedCreeperModel(context.getPart(HiddenRealmClient.MOONBLESSED_CREEPER_LAYER)), 0.5F);
}

protected void scale(MoonblessedCreeperEntity creeperEntity, MatrixStack matrixStack, float f) {
float fuseTime = creeperEntity.getClientFuseTime(f);
float scale = 1.0F + MathHelper.sin(fuseTime * 100.0F) * fuseTime * 0.01F;
fuseTime = MathHelper.clamp(fuseTime, 0.0F, 1.0F);
fuseTime *= fuseTime;
fuseTime *= fuseTime;
float scaleXZ = (1.0F + fuseTime * 0.4F) * scale;
float scaleY = (1.0F + fuseTime * 0.1F) / scale;
matrixStack.scale(scaleXZ, scaleY, scaleXZ);
}

@Override
public void render(MoonblessedCreeperEntity livingEntity, float f, float g, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i) {

super.render(livingEntity, f, g, matrixStack, vertexConsumerProvider, i);
}

protected float getAnimationCounter(MoonblessedCreeperEntity creeperEntity, float f) {
float fuseTime = creeperEntity.getClientFuseTime(f);
return (int)(fuseTime * 10.0F) % 2 == 0 ? 0.0F : MathHelper.clamp(fuseTime, 0.5F, 1.0F);
}

public Identifier getTexture(MoonblessedCreeperEntity creeperEntity) {
return TEXTURE;
}

}

This file was deleted.

Loading

0 comments on commit 35c90ce

Please sign in to comment.