Jump to content

Recommended Posts

Posted

So, I'm having issues on understanding how to register attributes for my entity.

Here's the error: https://pastebin.com/8YGzE6L4

Entity Class:

Spoiler

package com.pickleface.oceanscompund.entities.passive.fish;

import com.pickleface.oceanscompund.util.ItemsInit;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.ai.attributes.AttributeModifierMap;
import net.minecraft.entity.ai.attributes.Attributes;
import net.minecraft.entity.passive.fish.AbstractGroupFishEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.SoundEvents;
import net.minecraft.world.World;


public class PiranhaEntity extends AbstractGroupFishEntity {
    public PiranhaEntity(EntityType<? extends PiranhaEntity> p_i49856_1_, World p_i49856_2_) {
        super(p_i49856_1_, p_i49856_2_);
    }

    @Override
    protected ItemStack getBucketItemStack() {
        return new ItemStack(ItemsInit.PIRANHA_BUCKET.get());
    }

    @Override
    protected SoundEvent getAmbientSound() {
        return SoundEvents.COD_AMBIENT;
    }

    @Override
    protected SoundEvent getDeathSound() {
        return SoundEvents.COD_DEATH;
    }

    @Override
    protected SoundEvent getHurtSound(DamageSource p_184601_1_) {
        return SoundEvents.COD_HURT;
    }

    @Override
    protected SoundEvent getFlopSound() {
        return SoundEvents.COD_FLOP;
    }

    @Override
    public int getMaxSchoolSize() {
        return 3;
    }

    @Override
    protected void registerGoals() {
        super.registerGoals();
    }

    public static AttributeModifierMap.MutableAttribute setAttributes() {
        return MobEntity.createMobAttributes()
                .add(Attributes.MAX_HEALTH, 100.0D)
                .add(Attributes.MOVEMENT_SPEED, 0.25D)
                .add(Attributes.FOLLOW_RANGE, 16.0D)
                .add(Attributes.ATTACK_KNOCKBACK);
    }


    @Override
    public void tick() {
        super.tick();
    }
}

 

Registry and EntityAttributeCreationEvent:

Spoiler

package com.pickleface.oceanscompund.util;

import com.pickleface.oceanscompund.OceansCompound;
import com.pickleface.oceanscompund.entities.passive.fish.PiranhaEntity;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.ai.attributes.Attributes;
import net.minecraft.entity.passive.fish.CodEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
import net.minecraftforge.event.entity.EntityAttributeModificationEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.RegistryObject;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;

public class EntitiesInit {
    public static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, OceansCompound.MOD_ID);

    public static final RegistryObject<EntityType<PiranhaEntity>> PIRANHA = ENTITIES.register("piranha", () ->
            EntityType.Builder.of(PiranhaEntity::new, EntityClassification.MONSTER)
                    .sized(EntityType.COD.getWidth(), EntityType.COD.getHeight())
                    .clientTrackingRange(4)
            .build(new ResourceLocation(OceansCompound.MOD_ID, "piranha").toString())
    );

    @Mod.EventBusSubscriber(modid = OceansCompound.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
    public class EntityHandler {
        @SubscribeEvent
        public void entityAddAttributes(final EntityAttributeCreationEvent event) {
            event.put(PIRANHA.get(), PiranhaEntity.setAttributes().add(Attributes.MAX_HEALTH, 5).build());
        }
    }
}

 

And heres the model:

Spoiler

package com.pickleface.oceanscompund.client.renderer.entity.model;

import com.google.common.collect.ImmutableList;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.entity.model.SegmentedModel;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@OnlyIn(Dist.CLIENT)
public class PiranhaModel<T extends Entity> extends SegmentedModel<T> {
    private final ModelRenderer head;
    private final ModelRenderer body;
    private final ModelRenderer fin_r1;
    private final ModelRenderer fin_r2;
    private final ModelRenderer backfin_r1;

    public PiranhaModel() {
       this.texWidth = 64;
       this.texHeight = 64;

        this.head = new ModelRenderer(this);
        this.head.setPos(0.0F, 24.0F, 0.0F);
        this.head.texOffs(0, 9).addBox(-3.0F, -2.0F, -7.0F, 7.0F, 2.0F, 7.0F, 0.0F, false);
        this.head.texOffs(0, 18).addBox(-2.0F, -8.0F, -6.0F, 5.0F, 6.0F, 6.0F, 0.0F, false);
        this.head.texOffs(0, 0).addBox(-3.0F, -4.0F, -7.0F, 7.0F, 2.0F, 7.0F, 0.0F, false);

        this.body = new ModelRenderer(this);
        this.body.setPos(0.0F, 24.0F, 0.0F);
        this.body.texOffs(22, 18).addBox(-2.0F, -7.0F, 0.0F, 5.0F, 6.0F, 3.0F, 0.0F, false);
        this.body.texOffs(24, 5).addBox(-1.0F, -6.1F, 2.0F, 3.0F, 5.0F, 4.0F, 0.0F, false);
        this.body.texOffs(8, 30).addBox(0.0F, -5.0F, 5.0F, 1.0F, 4.0F, 3.0F, 0.0F, false);
        this.body.texOffs(0, 26).addBox(0.6F, -7.0F, 8.0F, 0.0F, 7.0F, 4.0F, 0.0F, false);

        this.backfin_r1 = new ModelRenderer(this);
        this.backfin_r1.setPos(0.6F, -9.5F, 4.5F);
        this.setRotationAngle(backfin_r1, 1.5708F, 0.0F, 0.0F);
        this.backfin_r1.texOffs(22, 23).addBox(0.0F, -4.5F, -4.5F, 0.0F, 7.0F, 4.0F, 0.0F, false);

        this.fin_r1 = new ModelRenderer(this);
        this.fin_r1.setPos(3.6616F, -4.303F, 4.4246F);
        this.setRotationAngle(fin_r1, -0.6109F, 0.0F, 1.0472F);
        this.fin_r1.texOffs(21, 0).addBox(-3.1F, -0.4F, -3.1F, 3.0F, 4.0F, 1.0F, 0.0F, false);

        this.fin_r2 = new ModelRenderer(this);
        this.fin_r2.setPos(-3.6616F, -4.303F, 4.4246F);
        this.setRotationAngle(fin_r2, -0.6109F, 0.0F, -1.0472F);
        this.fin_r2.texOffs(29, 0).addBox(0.5F, 0.3F, -2.7F, 3.0F, 4.0F, 1.0F, 0.0F, false);
    }

    @Override
    public void setupAnim(T p_225597_1_, float p_225597_2_, float p_225597_3_, float p_225597_4_, float p_225597_5_, float p_225597_6_) {
        float f = 1.0F;
        if (!p_225597_1_.isInWater()) {
            f = 1.5F;
        }

        this.fin_r1.xRot = -f * 0.45F * MathHelper.sin(0.6F * p_225597_4_);
        this.fin_r2.xRot = f * 0.45F * MathHelper.sin(0.6F * p_225597_4_);
    }

    @Override
    public Iterable<ModelRenderer> parts() {
        return ImmutableList.of(this.body, this.head, this.fin_r1, this.fin_r2, this.backfin_r1);
    }

    @Override
    public void renderToBuffer(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){
        head.render(matrixStack, buffer, packedLight, packedOverlay);
        body.render(matrixStack, buffer, packedLight, packedOverlay);
    }


    public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
        modelRenderer.xRot = x;
        modelRenderer.yRot = y;
        modelRenderer.zRot = z;
    }
}

 

Any help is appreciated, thanks.

Have some lorem ispum.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.