-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
I extend LivingEntity, but MobEntity already extends LivingEntity, so I could just replace it right ?
-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
Good point
-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
Omg it spawns without crashing ๐ญ It shows the Name tho Like a nametag. I've read something about that today, I'll have to check my code to remove that I guess
-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
I noticed the stupid reason why it didn't resolve them Here's my new code, tho I don't know if I should personnalize it or leave it like that ? package com.pandaw.magical_macrocosm.entities; 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.player.PlayerEntity; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.ItemStack; import net.minecraft.network.datasync.DataParameter; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.util.*; import net.minecraft.world.World; import javax.annotation.Nullable; public class PixieEntity extends LivingEntity { private static final DataParameter<Byte> AI_FLAGS = EntityDataManager.createKey(MobEntity.class, DataSerializers.BYTE); private final NonNullList<ItemStack> inventoryHands = NonNullList.withSize(2, ItemStack.EMPTY); private final NonNullList<ItemStack> inventoryArmor = NonNullList.withSize(4, ItemStack.EMPTY); public boolean isLeftHanded() { return (this.dataManager.get(AI_FLAGS) & 2) != 0; } public PixieEntity(EntityType<? extends LivingEntity> type, World worldIn) { super(type, worldIn); } protected void registerGoals() { } public static AttributeModifierMap.MutableAttribute setAttribute() { return MobEntity.func_233666_p_() .createMutableAttribute(Attributes.MAX_HEALTH, 4.0f) .createMutableAttribute(Attributes.FLYING_SPEED, 10.0f); } @Override protected int getExperiencePoints(PlayerEntity player) { return 2; } protected SoundEvent getAmbientSound() { return SoundEvents.ENTITY_BEE_POLLINATE; } @Override protected SoundEvent getHurtSound(DamageSource damageSourceIn) { return SoundEvents.ENTITY_BEE_HURT; } @Nullable @Override protected SoundEvent getDeathSound() { return SoundEvents.ENTITY_BEE_DEATH; } /*@Override public Iterable<ItemStack> getArmorInventoryList() { return null; }*/ public Iterable<ItemStack> getArmorInventoryList() { return this.inventoryArmor; } /*@Override public ItemStack getItemStackFromSlot(EquipmentSlotType slotIn) { return null; }*/ public ItemStack getItemStackFromSlot(EquipmentSlotType slotIn) { switch(slotIn.getSlotType()) { case HAND: return this.inventoryHands.get(slotIn.getIndex()); case ARMOR: return this.inventoryArmor.get(slotIn.getIndex()); default: return ItemStack.EMPTY; } } /*@Override public void setItemStackToSlot(EquipmentSlotType slotIn, ItemStack stack) { }*/ public void setItemStackToSlot(EquipmentSlotType slotIn, ItemStack stack) { switch(slotIn.getSlotType()) { case HAND: this.inventoryHands.set(slotIn.getIndex(), stack); break; case ARMOR: this.inventoryArmor.set(slotIn.getIndex(), stack); } } /*@Override public HandSide getPrimaryHand() { return null; }*/ public HandSide getPrimaryHand() { return this.isLeftHanded() ? HandSide.LEFT : HandSide.RIGHT; } } I still don't know how to put goals tho.
-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
You mean like : public Iterable<ItemStack> getArmorInventoryList() { return this.inventoryArmor; } public ItemStack getItemStackFromSlot(EquipmentSlotType slotIn) { switch(slotIn.getSlotType()) { case HAND: return this.inventoryHands.get(slotIn.getIndex()); case ARMOR: return this.inventoryArmor.get(slotIn.getIndex()); default: return ItemStack.EMPTY; } } public void setItemStackToSlot(EquipmentSlotType slotIn, ItemStack stack) { switch(slotIn.getSlotType()) { case HAND: this.inventoryHands.set(slotIn.getIndex(), stack); break; case ARMOR: this.inventoryArmor.set(slotIn.getIndex(), stack); } } public HandSide getPrimaryHand() { return this.isLeftHanded() ? HandSide.LEFT : HandSide.RIGHT; } ? That's what happens when I say ; It cannot resolve inventoryArmor/Hands and isLeftHanded.
-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
I've checked several Entity classes and they either don't have those methods (Chicken, Sheep, Zombie etc), or don't implement them a way that would work here. I've looked the Player Entity and it has those methods but when I try to rewrite them the same way, I get errors. Honestly, I'm just lost. How should I implement them ? When I try to remove them, it says the class needs to be abstract or implement those abstract methods. I've tried to look on different forums and stuff, and I just can't find what to do. Also, I don't know where to put goals ? When I try the registerGoals() method, it doesnt show what should be put next (I've tried to do it as in the Entity classes I've looked at).
-
Create Entity in MC 1.16.5 (Entity/Model/Renderer)
Hi ! I've tried to create an entity, with its 3 classes, XEntity, XEntityModel, and XEntityRenderer. I've looked into the vanilla classes, and even though there are differences, I don't see anything that would be critical missing or something (to the best of my knowledge obviously). When I try to summon my entity, a crash occurs with the following crash report : ---- Minecraft Crash Report ---- // Shall we play a game? Time: 25/08/21 19:08 Description: Ticking entity java.lang.NullPointerException: Ticking entity at net.minecraft.util.math.shapes.EntitySelectionContext.<init>(EntitySelectionContext.java:41) ~[forge:?] {re:classloading} at net.minecraft.util.math.shapes.ISelectionContext.forEntity(ISelectionContext.java:15) ~[forge:?] {re:classloading} at net.minecraft.util.math.shapes.VoxelShapeSpliterator.<init>(VoxelShapeSpliterator.java:39) ~[forge:?] {re:classloading} at net.minecraft.world.ICollisionReader.func_241457_a_(ICollisionReader.java:77) ~[forge:?] {re:classloading} at net.minecraft.entity.Entity.isEntityInsideOpaqueBlock(Entity.java:1774) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.entity.LivingEntity.isEntityInsideOpaqueBlock(LivingEntity.java:3298) ~[forge:?] {re:classloading} at net.minecraft.entity.LivingEntity.baseTick(LivingEntity.java:307) ~[forge:?] {re:classloading} at net.minecraft.entity.Entity.tick(Entity.java:412) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.entity.LivingEntity.tick(LivingEntity.java:2260) ~[forge:?] {re:classloading} at net.minecraft.world.server.ServerWorld.updateEntity(ServerWorld.java:623) ~[forge:?] {re:classloading} at net.minecraft.world.World.guardEntityTick(World.java:601) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.server.ServerWorld.tick(ServerWorld.java:407) ~[forge:?] {re:classloading} at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:885) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:821) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:84) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:664) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.lambda$startServer$0(MinecraftServer.java:233) ~[forge:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:748) [?:1.8.0_281] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Server thread Stacktrace: at net.minecraft.util.math.shapes.EntitySelectionContext.<init>(EntitySelectionContext.java:41) ~[forge:?] {re:classloading} at net.minecraft.util.math.shapes.ISelectionContext.forEntity(ISelectionContext.java:15) ~[forge:?] {re:classloading} at net.minecraft.util.math.shapes.VoxelShapeSpliterator.<init>(VoxelShapeSpliterator.java:39) ~[forge:?] {re:classloading} at net.minecraft.world.ICollisionReader.func_241457_a_(ICollisionReader.java:77) ~[forge:?] {re:classloading} at net.minecraft.entity.Entity.isEntityInsideOpaqueBlock(Entity.java:1774) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.entity.LivingEntity.isEntityInsideOpaqueBlock(LivingEntity.java:3298) ~[forge:?] {re:classloading} at net.minecraft.entity.LivingEntity.baseTick(LivingEntity.java:307) ~[forge:?] {re:classloading} at net.minecraft.entity.Entity.tick(Entity.java:412) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.entity.LivingEntity.tick(LivingEntity.java:2260) ~[forge:?] {re:classloading} at net.minecraft.world.server.ServerWorld.updateEntity(ServerWorld.java:623) ~[forge:?] {re:classloading} -- Entity being ticked -- Details: Entity Type: magical_macrocosm:pixie (com.pandaw.magical_macrocosm.entities.PixieEntity) Entity ID: 61 Entity Name: Pixie Entity's Exact location: 177.83, 52.00, 317.39 Entity's Block location: World: (177,52,317), Chunk: (at 1,3,13 in 11,19; contains blocks 176,0,304 to 191,255,319), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Entity's Momentum: 0.00, 0.00, 0.00 Entity's Passengers: [] Entity's Vehicle: ~~ERROR~~ NullPointerException: null Stacktrace: at net.minecraft.world.World.guardEntityTick(World.java:601) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.world.server.ServerWorld.tick(ServerWorld.java:407) ~[forge:?] {re:classloading} -- Affected level -- Details: All players: 1 total; [ServerPlayerEntity['Dev'/19, l='ServerLevel[New World]', x=177.83, y=52.00, z=317.39]] Chunk stats: ServerChunkCache: 2025 Level dimension: minecraft:overworld Level spawn location: World: (180,51,344), Chunk: (at 4,3,8 in 11,21; contains blocks 176,0,336 to 191,255,351), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Level time: 152905 game time, 1304 day time Level name: New World Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) Known server brands: forge Level was modded: true Level storage version: 0x04ABD - Anvil Stacktrace: at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:885) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:821) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:84) ~[forge:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:664) ~[forge:?] {re:classloading,pl:accesstransformer:B} at net.minecraft.server.MinecraftServer.lambda$startServer$0(MinecraftServer.java:233) ~[forge:?] {re:classloading,pl:accesstransformer:B} at java.lang.Thread.run(Thread.java:748) [?:1.8.0_281] {} -- System Details -- Details: Minecraft Version: 1.16.5 Minecraft Version ID: 1.16.5 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_281, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 375448848 bytes (358 MB) / 1834483712 bytes (1749 MB) up to 3625975808 bytes (3458 MB) CPUs: 2 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 8.0.9+86+master.3cf110c ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /mixin-0.8.2.jar mixin PLUGINSERVICE /eventbus-4.0.0.jar eventbus PLUGINSERVICE /forge-1.16.5-36.0.42_mapped_snapshot_20210309-1.16.5-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.16.5-36.0.42_mapped_snapshot_20210309-1.16.5-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE /forge-1.16.5-36.0.42_mapped_snapshot_20210309-1.16.5-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.16.5-36.0.42_mapped_snapshot_20210309-1.16.5-launcher.jar runtimedistcleaner PLUGINSERVICE /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE /forge-1.16.5-36.0.42_mapped_snapshot_20210309-1.16.5-launcher.jar fml TRANSFORMATIONSERVICE FML: 36.0 Forge: net.minecraftforge:36.0.42 FML Language Providers: [email protected] minecraft@1 Mod List: client-extra.jar |Minecraft |minecraft |1.16.5 |DONE |a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f forge-1.16.5-36.0.42_mapped_snapshot_20210309-1.16|Forge |forge |36.0.42 |DONE |NOSIGNATURE main |Magical Macrocosm |magical_macrocosm |1.16.5-1.0.0 |DONE |NOSIGNATURE Crash Report UUID: 953b0279-462c-4e4f-bcb4-f34aeca3b9ec Player Count: 1 / 8; [ServerPlayerEntity['Dev'/19, l='ServerLevel[New World]', x=177.83, y=52.00, z=317.39]] Data Packs: vanilla, mod:forge, mod:magical_macrocosm Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'forge' Here is the relevant code : package com.pandaw.magical_macrocosm.entities; 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.player.PlayerEntity; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.ItemStack; import net.minecraft.util.HandSide; import net.minecraft.util.SoundEvent; import net.minecraft.util.SoundEvents; import net.minecraft.world.World; import javax.annotation.Nullable; public class PixieEntity extends LivingEntity { public PixieEntity(EntityType<? extends LivingEntity> type, World worldIn) { super(type, worldIn); } public static AttributeModifierMap.MutableAttribute setAttribute() { return MobEntity.func_233666_p_() .createMutableAttribute(Attributes.MAX_HEALTH, 4.0f) .createMutableAttribute(Attributes.FLYING_SPEED, 10.0f); } @Override protected int getExperiencePoints(PlayerEntity player) { return 2; } @Nullable @Override protected SoundEvent getDeathSound() { return SoundEvents.ENTITY_BEE_DEATH; } @Override public Iterable<ItemStack> getArmorInventoryList() { return null; } @Override public ItemStack getItemStackFromSlot(EquipmentSlotType slotIn) { return null; } @Override public void setItemStackToSlot(EquipmentSlotType slotIn, ItemStack stack) { } @Override public HandSide getPrimaryHand() { return null; } } // Made with Blockbench 3.8.4 // Exported for Minecraft version 1.15 - 1.16 // Paste this class into your mod and generate all required imports package com.pandaw.magical_macrocosm.entities; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; import com.pandaw.magical_macrocosm.entities.PixieEntity; import net.minecraft.client.renderer.entity.model.EntityModel; import net.minecraft.client.renderer.model.ModelRenderer; import net.minecraft.entity.Entity; public class PixieEntityModel<T extends PixieEntity> extends EntityModel<T> { private final ModelRenderer Head; private final ModelRenderer Body; private final ModelRenderer RightArm; private final ModelRenderer LeftArm; private final ModelRenderer RightLeg; private final ModelRenderer LeftLeg; private final ModelRenderer LeftWing; private final ModelRenderer LeftWing_r1; private final ModelRenderer RightWing; private final ModelRenderer RightWing_r1; public PixieEntityModel() { textureWidth = 64; textureHeight = 64; Head = new ModelRenderer(this); Head.setRotationPoint(0.0F, 0.0F, 0.0F); Head.setTextureOffset(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, 0.0F, false); Head.setTextureOffset(32, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, 0.5F, false); Body = new ModelRenderer(this); Body.setRotationPoint(0.0F, 0.0F, 0.0F); Body.setTextureOffset(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, 0.0F, false); Body.setTextureOffset(16, 32).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, 0.25F, false); RightArm = new ModelRenderer(this); RightArm.setRotationPoint(-5.0F, 2.5F, 0.0F); RightArm.setTextureOffset(40, 16).addBox(-2.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, 0.0F, false); LeftArm = new ModelRenderer(this); LeftArm.setRotationPoint(5.0F, 2.5F, 0.0F); LeftArm.setTextureOffset(32, 48).addBox(-1.0F, -2.0F, -2.0F, 3.0F, 12.0F, 4.0F, 0.0F, false); RightLeg = new ModelRenderer(this); RightLeg.setRotationPoint(-1.9F, 12.0F, 0.0F); RightLeg.setTextureOffset(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, false); RightLeg.setTextureOffset(0, 32).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.25F, false); LeftLeg = new ModelRenderer(this); LeftLeg.setRotationPoint(1.9F, 12.0F, 0.0F); LeftLeg.setTextureOffset(16, 48).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.0F, false); LeftLeg.setTextureOffset(0, 48).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 0.25F, false); LeftWing = new ModelRenderer(this); LeftWing.setRotationPoint(0.0F, 24.0F, 0.0F); LeftWing_r1 = new ModelRenderer(this); LeftWing_r1.setRotationPoint(0.0F, -17.0F, 0.0F); LeftWing.addChild(LeftWing_r1); setRotationAngle(LeftWing_r1, 0.0F, 0.6545F, 0.0F); LeftWing_r1.setTextureOffset(42, 32).addBox(-13.0F, -11.0F, 1.0F, 11.0F, 19.0F, 0.0F, 0.0F, false); RightWing = new ModelRenderer(this); RightWing.setRotationPoint(0.0F, 24.0F, 0.0F); RightWing_r1 = new ModelRenderer(this); RightWing_r1.setRotationPoint(0.0F, -17.0F, 0.0F); RightWing.addChild(RightWing_r1); setRotationAngle(RightWing_r1, 0.0F, 2.4871F, 0.0F); RightWing_r1.setTextureOffset(42, 32).addBox(-13.0F, -11.0F, -1.0F, 11.0F, 19.0F, 0.0F, 0.0F, false); } @Override public void setRotationAngles(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { } /*public void setRotationAngles(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ }*/ @Override public void render(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); RightArm.render(matrixStack, buffer, packedLight, packedOverlay); LeftArm.render(matrixStack, buffer, packedLight, packedOverlay); RightLeg.render(matrixStack, buffer, packedLight, packedOverlay); LeftLeg.render(matrixStack, buffer, packedLight, packedOverlay); LeftWing.render(matrixStack, buffer, packedLight, packedOverlay); RightWing.render(matrixStack, buffer, packedLight, packedOverlay); } public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { modelRenderer.rotateAngleX = x; modelRenderer.rotateAngleY = y; modelRenderer.rotateAngleZ = z; } package com.pandaw.magical_macrocosm.entities; import com.pandaw.magical_macrocosm.MagicalMacrocosm; import net.minecraft.client.renderer.entity.EntityRendererManager; import net.minecraft.client.renderer.entity.LivingRenderer; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = MagicalMacrocosm.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public class PixieEntityRenderer extends LivingRenderer<PixieEntity, PixieEntityModel<PixieEntity>> { public static final ResourceLocation TEXTURE = new ResourceLocation(MagicalMacrocosm.MOD_ID, "textures/entities/pixie1.png"); public PixieEntityRenderer(EntityRendererManager manager) { super(manager, new PixieEntityModel<>(), 0.3f); } @Override public ResourceLocation getEntityTexture(PixieEntity entity) { return TEXTURE; } } package com.pandaw.magical_macrocosm.init; import com.pandaw.magical_macrocosm.MagicalMacrocosm; import com.pandaw.magical_macrocosm.entities.PixieEntity; import net.minecraft.entity.EntityClassification; import net.minecraft.entity.EntityType; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public class ModEntityTypes { public static final DeferredRegister<EntityType<?>> ENTITY_TYPES = DeferredRegister.create(ForgeRegistries.ENTITIES, MagicalMacrocosm.MOD_ID); public static final RegistryObject<EntityType<PixieEntity>> PIXIE = ENTITY_TYPES.register("pixie", ()-> EntityType.Builder.create(PixieEntity::new, EntityClassification.CREATURE) .size(0.4f, 0.5f) .trackingRange(10) .build(new ResourceLocation(MagicalMacrocosm.MOD_ID, "pixie").toString())); } Did I forget something, or made something wrong ? I mean, obviously, but could you explain it to me, please ? Entities may be more than my current level, but it's also by trying that we learn
-
[SOLVED]|How to add a Sword in 1.16.5 (IItemTier/SwordItem)
Thank you !
-
[SOLVED]|How to add a Sword in 1.16.5 (IItemTier/SwordItem)
HI ! So I tried to add a sword using a custom class and and ItemTier class. Here's the relevant code : /*package com.pandaw.magical_macrocosm.items; import com.pandaw.magical_macrocosm.MagicalMacrocosm; import com.pandaw.magical_macrocosm.init.ModItemTier; import net.minecraft.item.Food; import net.minecraft.item.IItemTier; import net.minecraft.item.Item; import net.minecraft.item.SwordItem; */ /* //How I tried to do at first public class AdamasSword extends SwordItem { public AdamasSword() { super(new SwordItem(ModItemTier.ADAMAS,9,1.6f, (new Item.Properties()) .group(MagicalMacrocosm.TAB)) ); } } */ /* //What I found in the SwordItem class (tried to adjust it after, but here is the original version from SwordItem class) public SwordItem(IItemTier tier, int attackDamageIn, float attackSpeedIn, Item.Properties builderIn) { super(tier, builderIn); this.attackDamage = (float)attackDamageIn + tier.getAttackDamage(); Builder<Attribute, AttributeModifier> builder = ImmutableMultimap.builder(); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double)this.attackDamage, AttributeModifier.Operation.ADDITION)); builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", (double)attackSpeedIn, AttributeModifier.Operation.ADDITION)); this.attributeModifiers = builder.build(); } */ package com.pandaw.magical_macrocosm.init; import java.util.function.Supplier; import net.minecraft.item.IItemTier; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.LazyValue; public enum ModItemTier implements IItemTier { ADAMAS(4, 0, 6.0f, 9.0f, 16, () -> { return Ingredient.fromItems(ModItems.ADAMAS_DROP.get()); }); private final int harvestLevel; private final int maxUses; private final float efficiency; private final float attackDamage; private final int enchantability; private final LazyValue<Ingredient> repairMaterial; private ModItemTier(int harvestLevelIn, int maxUsesIn, float efficiencyIn, float attackDamageIn, int enchantabilityIn, Supplier<Ingredient> repairMaterialIn) { this.harvestLevel = harvestLevelIn; this.maxUses = maxUsesIn; this.efficiency = efficiencyIn; this.attackDamage = attackDamageIn; this.enchantability = enchantabilityIn; this.repairMaterial = new LazyValue<>(repairMaterialIn); } public int getMaxUses() { return this.maxUses; } public float getEfficiency() { return this.efficiency; } public float getAttackDamage() { return this.attackDamage; } public int getHarvestLevel() { return this.harvestLevel; } public int getEnchantability() { return this.enchantability; } public Ingredient getRepairMaterial() { return this.repairMaterial.getValue(); } } Then I tried directly via registering : package com.pandaw.magical_macrocosm.init; import com.pandaw.magical_macrocosm.MagicalMacrocosm; import com.pandaw.magical_macrocosm.blocks.BlockItemBase; import com.pandaw.magical_macrocosm.items.ItemBase; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemTier; import net.minecraft.item.SwordItem; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public class ModItems { public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MagicalMacrocosm.MOD_ID); //Items /*public static final RegistryObject<Item> ADAMAS_SWORD = ITEMS.register("adamas_sword", AdamasSword::new);*/ //When I tried the "custom class way" public static final RegistryObject<Item> ADAMAS_SWORD = ITEMS.register("adamas_sword", new SwordItem(ModItemTier.ADAMAS, 9, 1.6f, (new Item.Properties()).group(MagicalMacrocosm.TAB))); //The "registering way" With first method, I have " 'SwordItem(net.minecraft.item.IItemTier, int, float, net.minecraft.item.Item.Properties)' in 'net.minecraft.item.SwordItem' cannot be applied to '(net.minecraft.item.SwordItem)' " With the "registering" method; I have " Inferred type 'I' for type parameter 'I' is not within its bound; should extend 'net.minecraft.item.Item' " Now, I know it may be simple, but I've just been stuck on that, and if someone is capable of explaining it to me, I'm open to know, thanks ๐ญ
IPS spam blocked by CleanTalk.