Posted November 8, 20213 yr Hello. I want to summon an entity by code, so I saw vanilla’s SummonCommand#spawnEntity and the main flow is here : { Entity entity = EntityType.loadEntityRecursive(compoundtag, serverlevel, (e) -> { e.moveTo(x, y, z, yRot, xRot); return e; }); ((Mob)entity).finalizeSpawn(commandSourceStack.getLevel(), commandSourceStack.getLevel().getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.COMMAND, (SpawnGroupData)null, (CompoundTag)null); } I guess I need compoundtag and ServerLevel object(=commandSourceStack.getLevel()). CompoundTag compoundtag = new CompoundTag(); compoundtag.putString("id", "minecraft:chicken”); // right? ServerLevel serverlevel … ??? How can I get them? Or is there another way? Thanks in advance.
November 8, 20213 yr you can simply create a new instance of the Entity and then call ServerLevel#addFreshEntity (I'm not sure if the method name is correct spelled) and use the Entity instance as parameter Edited November 8, 20213 yr by Luis_ST
November 8, 20213 yr Author Ohhhh! It worked!!! Thank you very much!!! My code is like this: private void addOneEntity() { CompoundTag compoundtag = new CompoundTag(); compoundtag.putString("id", "minecraft:chicken"); Entity entity = EntityType.loadEntityRecursive(compoundtag, this.level, (e) -> { e.moveTo(x, y, z, yRot, xRot); return e; }); this.level.addFreshEntity(entity); } This function is in my own entity class (extends Mod).
November 8, 20213 yr why on earth did you use EntityType#loadEntityRecursive, you should simply use new ChickenEntity()
November 8, 20213 yr Author Oh, I did not know that! Exactly it worked! Thanks again!!! My code is like this: private void addOneEntity() { Chicken chicken = new Chicken(EntityType.CHICKEN, this.level); chicken.moveTo(x, y, z, yRot, xRot); this.level.addFreshEntity(chicken); }
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.