Posted May 23, 20214 yr 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.