From f328a9cb2b9df3bcc8bdeba39bee1d4a70575c55 Mon Sep 17 00:00:00 2001 From: themode Date: Sat, 31 Oct 2020 01:38:57 +0100 Subject: [PATCH] Added a few constructors to specify the instance directly --- .../java/net/minestom/server/entity/Entity.java | 2 ++ .../minestom/server/entity/EntityCreature.java | 10 +++++++++- .../net/minestom/server/entity/ExperienceOrb.java | 15 +++++++++++++-- .../net/minestom/server/entity/ItemEntity.java | 9 +++++++++ .../server/event/player/PlayerSpawnEvent.java | 2 +- 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index baedad11c..572543cfc 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -344,6 +344,8 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { /** * Updates the entity, called every tick. + *

+ * Ignored if {@link #getInstance()} returns null. * * @param time the update time in milliseconds */ diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index 9551aaa1f..1b277dcce 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -55,7 +55,7 @@ public abstract class EntityCreature extends LivingEntity { private final ReentrantLock pathLock = new ReentrantLock(); - public EntityCreature(EntityType entityType, Position spawnPosition) { + public EntityCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition) { super(entityType, spawnPosition); this.mainHandItem = ItemStack.getAirItem(); @@ -69,6 +69,14 @@ public abstract class EntityCreature extends LivingEntity { heal(); } + public EntityCreature(@NotNull EntityType entityType, @NotNull Position spawnPosition, @Nullable Instance instance) { + this(entityType, spawnPosition); + + if (instance != null) { + setInstance(instance); + } + } + @Override public void update(long time) { diff --git a/src/main/java/net/minestom/server/entity/ExperienceOrb.java b/src/main/java/net/minestom/server/entity/ExperienceOrb.java index 7bc7e2939..43de9534c 100644 --- a/src/main/java/net/minestom/server/entity/ExperienceOrb.java +++ b/src/main/java/net/minestom/server/entity/ExperienceOrb.java @@ -1,20 +1,31 @@ package net.minestom.server.entity; +import net.minestom.server.instance.Instance; import net.minestom.server.network.packet.server.play.SpawnExperienceOrbPacket; import net.minestom.server.network.player.PlayerConnection; +import net.minestom.server.utils.Position; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class ExperienceOrb extends Entity { private short experienceCount; - public ExperienceOrb(short experienceCount) { - super(EntityType.EXPERIENCE_ORB); + public ExperienceOrb(short experienceCount, @NotNull Position spawnPosition) { + super(EntityType.EXPERIENCE_ORB, spawnPosition); setGravity(0.02f); setBoundingBox(0.5f, 0.5f, 0.5f); this.experienceCount = experienceCount; } + public ExperienceOrb(short experienceCount, @NotNull Position spawnPosition, @Nullable Instance instance) { + this(experienceCount, spawnPosition); + + if (instance != null) { + setInstance(instance); + } + } + @Override public void update(long time) { // TODO slide toward nearest player diff --git a/src/main/java/net/minestom/server/entity/ItemEntity.java b/src/main/java/net/minestom/server/entity/ItemEntity.java index f9ecb43b0..8c0a11e95 100644 --- a/src/main/java/net/minestom/server/entity/ItemEntity.java +++ b/src/main/java/net/minestom/server/entity/ItemEntity.java @@ -2,6 +2,7 @@ package net.minestom.server.entity; import net.minestom.server.event.entity.EntityItemMergeEvent; import net.minestom.server.instance.Chunk; +import net.minestom.server.instance.Instance; import net.minestom.server.item.ItemStack; import net.minestom.server.item.StackingRule; import net.minestom.server.utils.Position; @@ -45,6 +46,14 @@ public class ItemEntity extends ObjectEntity { setBoundingBox(0.25f, 0.25f, 0.25f); } + public ItemEntity(@NotNull ItemStack itemStack, @NotNull Position spawnPosition, @Nullable Instance instance) { + this(itemStack, spawnPosition); + + if (instance != null) { + setInstance(instance); + } + } + /** * Gets the update option for the merging feature. * diff --git a/src/main/java/net/minestom/server/event/player/PlayerSpawnEvent.java b/src/main/java/net/minestom/server/event/player/PlayerSpawnEvent.java index e3dba08de..bff0a1774 100644 --- a/src/main/java/net/minestom/server/event/player/PlayerSpawnEvent.java +++ b/src/main/java/net/minestom/server/event/player/PlayerSpawnEvent.java @@ -6,7 +6,7 @@ import net.minestom.server.instance.Instance; import org.jetbrains.annotations.NotNull; /** - * Called when a new instance is set for a player + * Called when a new instance is set for a player. */ public class PlayerSpawnEvent extends EntitySpawnEvent {