Skip to content

Commit

Permalink
add Moonblessed Zombie, Skeleton
Browse files Browse the repository at this point in the history
  • Loading branch information
Spusik committed Sep 24, 2024
1 parent 1e3d228 commit 7d38512
Show file tree
Hide file tree
Showing 16 changed files with 423 additions and 82 deletions.
8 changes: 7 additions & 1 deletion src/main/java/ru/pinkgoosik/hiddenrealm/HiddenRealmMod.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package ru.pinkgoosik.hiddenrealm;

import net.fabricmc.api.ModInitializer;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.sound.SoundEvent;
import net.minecraft.util.Identifier;
import net.minecraft.world.World;
import org.slf4j.Logger;
Expand All @@ -15,11 +18,14 @@
public class HiddenRealmMod implements ModInitializer {
public static final String MOD_ID = "hiddenrealm";
public static final Logger LOGGER = LoggerFactory.getLogger("Hidden Realm");

public static final SoundEvent ENTITY_CREEPER_PRIMED = Registry.register(Registries.SOUND_EVENT, Identifier.of(MOD_ID, "moonblessed_creeper_primed"),
SoundEvent.of(Identifier.of(MOD_ID, "moonblessed_creeper_primed")));
public static final RegistryKey<World> SILENT_BAZAAR = RegistryKey.of(RegistryKeys.WORLD, id("silent_bazaar"));

@Override
public void onInitialize() {


HiddenRealmCommands.init();
HiddenRealmEvents.init();
HiddenRealmItems.init();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
import net.minecraft.client.render.entity.BipedEntityRenderer;
import net.minecraft.client.render.entity.EmptyEntityRenderer;
import net.minecraft.client.render.entity.MobEntityRenderer;
import net.minecraft.client.render.entity.model.EntityModelLayer;
import net.minecraft.client.render.entity.model.SkeletonEntityModel;
import net.minecraft.entity.Entity;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
Expand All @@ -24,10 +26,12 @@
import ru.pinkgoosik.hiddenrealm.block.RefresherBlock;
import ru.pinkgoosik.hiddenrealm.block.TradingPedestalBlock;
import ru.pinkgoosik.hiddenrealm.blockentity.TradingPedestalBlockEntity;
import ru.pinkgoosik.hiddenrealm.client.model.MoonblessedZombieModel;
import ru.pinkgoosik.hiddenrealm.client.model.ShopkeeperModel;
import ru.pinkgoosik.hiddenrealm.client.model.MoonblessedCreeperModel;
import ru.pinkgoosik.hiddenrealm.client.render.LunarCoinEntityRenderer;
import ru.pinkgoosik.hiddenrealm.client.render.MoonblessedCreeperRenderer;
import ru.pinkgoosik.hiddenrealm.client.render.MoonblessedZombieRenderer;
import ru.pinkgoosik.hiddenrealm.client.render.TradingPedestalRenderer;
import ru.pinkgoosik.hiddenrealm.extension.LunarCoinExtension;
import ru.pinkgoosik.hiddenrealm.registry.HiddenRealmBlockEntities;
Expand All @@ -37,27 +41,40 @@
public class HiddenRealmClient implements ClientModInitializer {

public static final EntityModelLayer SHOPKEEPER_LAYER = new EntityModelLayer(HiddenRealmMod.id("shopkeeper"), "main");
public static final EntityModelLayer MOONBLESSED_ZOMBIE_LAYER = new EntityModelLayer(HiddenRealmMod.id("moonblessed_zombie"), "main");
public static final EntityModelLayer MOONBLESSED_CREEPER_LAYER = new EntityModelLayer(HiddenRealmMod.id("moonblessed_creeper"), "main");
public static final EntityModelLayer MOONBLESSED_SKELETON_LAYER = new EntityModelLayer(HiddenRealmMod.id("moonblessed_skeleton"), "main");

@Override
public void onInitializeClient() {

EntityRendererRegistry.register(HiddenRealmEntities.MOONBLESSED_CREEPER, MoonblessedCreeperRenderer::new);
EntityRendererRegistry.register(HiddenRealmEntities.MOONBLESSED_ZOMBIE, MoonblessedZombieRenderer::new);

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

EntityRendererRegistry.register(HiddenRealmEntities.MOONBLESSED_SKELETON, (context) -> new BipedEntityRenderer(context, new SkeletonEntityModel(context.getPart(MOONBLESSED_SKELETON_LAYER)), 0.5f) {
@Override
public Identifier getTexture(Entity entity) {
return HiddenRealmMod.id("textures/entity/moonblessed_skeleton.png");
}
});

EntityRendererRegistry.register(HiddenRealmEntities.SHOPKEEPER, (context) -> new MobEntityRenderer(context, new ShopkeeperModel(context.getPart(SHOPKEEPER_LAYER)), 0.5f) {
@Override
public Identifier getTexture(Entity entity) {
return HiddenRealmMod.id("textures/entity/shopkeeper.png");
}
});


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);
EntityModelLayerRegistry.registerModelLayer(MOONBLESSED_ZOMBIE_LAYER, MoonblessedZombieModel::getTexturedModelData);
EntityModelLayerRegistry.registerModelLayer(MOONBLESSED_SKELETON_LAYER, SkeletonEntityModel::getTexturedModelData);

BlockEntityRendererFactories.register(HiddenRealmBlockEntities.TRADING_PEDESTAL, ctx -> new TradingPedestalRenderer<>());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import ru.pinkgoosik.hiddenrealm.entity.MoonblessedCreeperEntity;

public class MoonblessedCreeperModel<T extends Entity> extends SinglePartEntityModel<T> {
public class MoonblessedCreeperModel extends SinglePartEntityModel<MoonblessedCreeperEntity> {
private final ModelPart root;
private final ModelPart head;
private final ModelPart right_front_leg;
Expand Down Expand Up @@ -45,7 +46,7 @@ public static TexturedModelData getTexturedModelData() {

return TexturedModelData.of(modelData, 64, 32);
}
public void setAngles(T entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
public void setAngles(MoonblessedCreeperEntity entity, float limbAngle, float limbDistance, float animationProgress, float headYaw, float headPitch) {
this.head.yaw = headYaw * 0.017453292F;
this.head.pitch = headPitch * 0.017453292F;
this.left_hind_leg.pitch = MathHelper.cos(limbAngle * 0.6662F) * 1.4F * limbDistance;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package ru.pinkgoosik.hiddenrealm.client.model;

import net.minecraft.client.model.*;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.entity.model.BipedEntityModel;
import net.minecraft.client.render.entity.model.CrossbowPosing;
import net.minecraft.client.util.math.MatrixStack;
import ru.pinkgoosik.hiddenrealm.entity.MoonblessedZombieEntity;

public class MoonblessedZombieModel extends BipedEntityModel<MoonblessedZombieEntity> {

private final ModelPart headwear;
private final ModelPart body_wear;

public MoonblessedZombieModel(ModelPart root) {
super(root, RenderLayer::getEntityTranslucent);
this.headwear = root.getChild("headwear");
this.body_wear = root.getChild("body_wear");
}
public static TexturedModelData getTexturedModelData() {
ModelData modelData = BipedEntityModel.getModelData(Dilation.NONE,0);
ModelPartData modelPartData = modelData.getRoot();
modelPartData.addChild("headwear", ModelPartBuilder.create().uv(32, 0).cuboid(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new Dilation(0.5F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F));

modelPartData.addChild("body_wear", ModelPartBuilder.create().uv(12, 44).cuboid(-4.0F, 0.0F, -2.0F, 8.0F, 13.0F, 4.0F, new Dilation(0.5F)), ModelTransform.pivot(0.0F, 0.0F, 0.0F));

return TexturedModelData.of(modelData, 64, 64);
}

public void setAngles(MoonblessedZombieEntity moonblessedZombie, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
super.setAngles(moonblessedZombie, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch);
this.headwear.copyTransform(this.head);
this.body_wear.copyTransform(this.body);

CrossbowPosing.meleeAttack(this.leftArm, this.rightArm, this.isAttacking(moonblessedZombie), this.handSwingProgress, ageInTicks);
}

@Override
public void render(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color) {
super.render(matrices, vertices, light, overlay, color);
this.headwear.render(matrices,vertices,light,overlay,color);
this.body_wear.render(matrices,vertices,light,overlay,color);
}

public boolean isAttacking(MoonblessedZombieEntity zombieEntity) {
return zombieEntity.isAttacking();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import ru.pinkgoosik.hiddenrealm.client.model.MoonblessedCreeperModel;
import ru.pinkgoosik.hiddenrealm.entity.MoonblessedCreeperEntity;

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


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ru.pinkgoosik.hiddenrealm.client.render;

import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.render.entity.MobEntityRenderer;
import net.minecraft.util.Identifier;
import ru.pinkgoosik.hiddenrealm.HiddenRealmMod;
import ru.pinkgoosik.hiddenrealm.client.HiddenRealmClient;
import ru.pinkgoosik.hiddenrealm.client.model.MoonblessedZombieModel;
import ru.pinkgoosik.hiddenrealm.entity.MoonblessedZombieEntity;

public class MoonblessedZombieRenderer extends MobEntityRenderer<MoonblessedZombieEntity, MoonblessedZombieModel> {
private static final Identifier TEXTURE = Identifier.of(HiddenRealmMod.MOD_ID,"textures/entity/moonblessed_zombie.png");

public MoonblessedZombieRenderer(EntityRendererFactory.Context ctx) {
super(ctx, new MoonblessedZombieModel(ctx.getPart(HiddenRealmClient.MOONBLESSED_ZOMBIE_LAYER)), 0.5F);
}

public Identifier getTexture(MoonblessedZombieEntity abstractSkeletonEntity) {
return TEXTURE;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.MovementType;
import net.minecraft.entity.data.DataTracker;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import ru.pinkgoosik.hiddenrealm.extension.LunarCoinExtension;

Expand All @@ -31,6 +33,33 @@ protected void writeCustomDataToNbt(NbtCompound nbt) {
@Override
public void tick() {
super.tick();

if (this.getWorld().isClient) {
this.noClip = false;
} else {
this.noClip = !this.getWorld().isSpaceEmpty(this, this.getBoundingBox().contract(1.0E-7));
if (this.noClip) {
this.pushOutOfBlocks(this.getX(), (this.getBoundingBox().minY + this.getBoundingBox().maxY) / 2.0, this.getZ());
} else {
setVelocity(0, 0, 0);
}


if (!this.isOnGround() || this.getVelocity().horizontalLengthSquared() > 9.999999747378752E-6 || (this.age + this.getId()) % 4 == 0) {
this.move(MovementType.SELF, this.getVelocity());
float f = 0.98F;


this.setVelocity(this.getVelocity().multiply((double) f, 0.98, (double) f));
if (this.isOnGround()) {
Vec3d vec3d2 = this.getVelocity();
if (vec3d2.y < 0.0) {
this.setVelocity(vec3d2.multiply(1.0, -0.5, 1.0));
}
}
}
}

var list = this.getWorld().getNonSpectatingEntities(PlayerEntity.class,this.getBoundingBox());
if(!list.isEmpty()){
var player = list.get(this.getRandom().nextInt(list.size()));
Expand Down
Loading

0 comments on commit 7d38512

Please sign in to comment.