From 3d96b7a4b4e11bbc81c2c4dc2bb8bb407c4ed855 Mon Sep 17 00:00:00 2001 From: themode Date: Sat, 24 Oct 2020 10:46:23 +0200 Subject: [PATCH] A lot of annotations a bit everywhere. --- .../java/net/minestom/server/Viewable.java | 16 ++-- .../server/advancements/AdvancementTab.java | 6 +- .../net/minestom/server/bossbar/BossBar.java | 22 +++-- .../java/net/minestom/server/data/Data.java | 23 +++-- .../minestom/server/data/DataContainer.java | 5 +- .../net/minestom/server/data/DataImpl.java | 11 ++- .../server/data/SerializableDataImpl.java | 3 +- .../net/minestom/server/entity/Entity.java | 75 +++++++++------ .../server/entity/EntityCreature.java | 3 +- .../minestom/server/entity/ExperienceOrb.java | 3 +- .../minestom/server/entity/ItemEntity.java | 10 +- .../minestom/server/entity/LivingEntity.java | 4 +- .../minestom/server/entity/ObjectEntity.java | 3 +- .../net/minestom/server/entity/Player.java | 95 +++++++++++-------- .../server/entity/hologram/Hologram.java | 6 +- .../server/entity/type/ambient/EntityBat.java | 4 +- .../entity/type/animal/EntityMooshroom.java | 3 +- .../server/entity/type/animal/EntityPig.java | 4 +- .../entity/type/animal/EntityPolarBear.java | 4 +- .../entity/type/animal/EntityRabbit.java | 4 +- .../type/decoration/EntityArmorStand.java | 6 +- .../type/decoration/EntityItemFrame.java | 4 +- .../entity/type/monster/EntityBlaze.java | 4 +- .../entity/type/monster/EntityCreeper.java | 4 +- .../entity/type/monster/EntityGhast.java | 4 +- .../entity/type/monster/EntityGuardian.java | 4 +- .../entity/type/monster/EntityPhantom.java | 4 +- .../entity/type/monster/EntitySlime.java | 4 +- .../entity/type/monster/EntitySpider.java | 4 +- .../entity/type/monster/EntityWitch.java | 4 +- .../entity/type/monster/EntityZombie.java | 4 +- .../type/monster/EntityZombifiedPiglin.java | 4 +- .../type/other/EntityAreaEffectCloud.java | 4 +- .../entity/type/other/EntityIronGolem.java | 4 +- .../entity/type/other/EntitySnowman.java | 4 +- .../type/projectile/EntityEyeOfEnder.java | 4 +- .../entity/type/projectile/EntityPotion.java | 4 +- .../entity/type/vehicle/EntityBoat.java | 4 +- .../net/minestom/server/instance/Chunk.java | 22 +++-- .../server/instance/DynamicChunk.java | 7 +- .../server/instance/IChunkLoader.java | 8 +- .../minestom/server/instance/Instance.java | 66 +++++++------ .../server/instance/InstanceContainer.java | 20 ++-- .../instance/MinestomBasicChunkLoader.java | 5 +- .../server/instance/SharedInstance.java | 18 ++-- .../minestom/server/instance/StaticChunk.java | 11 ++- .../server/instance/batch/ChunkBatch.java | 11 ++- .../minestom/server/inventory/Inventory.java | 6 +- .../server/item/metadata/CompassMeta.java | 8 +- .../server/item/metadata/CrossbowMeta.java | 8 +- .../item/metadata/EnchantedBookMeta.java | 15 +-- .../server/item/metadata/FireworkMeta.java | 8 +- .../server/item/metadata/ItemMeta.java | 8 +- .../item/metadata/LeatherArmorMeta.java | 8 +- .../server/item/metadata/MapMeta.java | 8 +- .../server/item/metadata/PlayerHeadMeta.java | 8 +- .../server/item/metadata/PotionMeta.java | 8 +- .../server/item/metadata/SpawnEggMeta.java | 8 +- .../item/metadata/WritableBookMeta.java | 8 +- .../server/item/metadata/WrittenBookMeta.java | 8 +- .../server/scoreboard/BelowNameTag.java | 6 +- .../minestom/server/scoreboard/Sidebar.java | 6 +- .../minestom/server/scoreboard/TabList.java | 6 +- 63 files changed, 424 insertions(+), 249 deletions(-) diff --git a/src/main/java/net/minestom/server/Viewable.java b/src/main/java/net/minestom/server/Viewable.java index 41fc20d90..4477b36cf 100644 --- a/src/main/java/net/minestom/server/Viewable.java +++ b/src/main/java/net/minestom/server/Viewable.java @@ -3,6 +3,7 @@ package net.minestom.server; import net.minestom.server.entity.Player; import net.minestom.server.network.PacketWriterUtils; import net.minestom.server.network.packet.server.ServerPacket; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; @@ -18,7 +19,7 @@ public interface Viewable { * @param player the viewer to add * @return true if the player has been added, false otherwise (could be because he is already a viewer) */ - boolean addViewer(Player player); + boolean addViewer(@NotNull Player player); /** * Removes a viewer. @@ -26,13 +27,14 @@ public interface Viewable { * @param player the viewer to remove * @return true if the player has been removed, false otherwise (could be because he was not a viewer) */ - boolean removeViewer(Player player); + boolean removeViewer(@NotNull Player player); /** * Gets all the viewers of this viewable element. * * @return A Set containing all the element's viewers */ + @NotNull Set getViewers(); /** @@ -41,7 +43,7 @@ public interface Viewable { * @param player the player to check * @return true if {@code player} is a viewer, false otherwise */ - default boolean isViewer(Player player) { + default boolean isViewer(@NotNull Player player) { return getViewers().contains(player); } @@ -53,7 +55,7 @@ public interface Viewable { * * @param packet the packet to send to all viewers */ - default void sendPacketToViewers(ServerPacket packet) { + default void sendPacketToViewers(@NotNull ServerPacket packet) { PacketWriterUtils.writeAndSend(getViewers(), packet); } @@ -65,7 +67,7 @@ public interface Viewable { * * @param packets the packets to send */ - default void sendPacketsToViewers(ServerPacket... packets) { + default void sendPacketsToViewers(@NotNull ServerPacket... packets) { for (ServerPacket packet : packets) { PacketWriterUtils.writeAndSend(getViewers(), packet); } @@ -78,7 +80,7 @@ public interface Viewable { * * @param packet the packet to send */ - default void sendPacketToViewersAndSelf(ServerPacket packet) { + default void sendPacketToViewersAndSelf(@NotNull ServerPacket packet) { if (this instanceof Player) { if (getViewers().isEmpty()) { ((Player) this).getPlayerConnection().sendPacket(packet); @@ -97,7 +99,7 @@ public interface Viewable { * * @param packet the packet to send */ - private void UNSAFE_sendPacketToViewersAndSelf(ServerPacket packet) { + private void UNSAFE_sendPacketToViewersAndSelf(@NotNull ServerPacket packet) { Set recipients = new HashSet<>(getViewers()); recipients.add((Player) this); PacketWriterUtils.writeAndSend(recipients, packet); diff --git a/src/main/java/net/minestom/server/advancements/AdvancementTab.java b/src/main/java/net/minestom/server/advancements/AdvancementTab.java index d6560c1bf..5f3d041a1 100644 --- a/src/main/java/net/minestom/server/advancements/AdvancementTab.java +++ b/src/main/java/net/minestom/server/advancements/AdvancementTab.java @@ -8,6 +8,7 @@ import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.advancement.AdvancementUtils; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.*; @@ -134,7 +135,7 @@ public class AdvancementTab implements Viewable { } @Override - public synchronized boolean addViewer(Player player) { + public synchronized boolean addViewer(@NotNull Player player) { final boolean result = viewers.add(player); if (!result) { return false; @@ -151,7 +152,7 @@ public class AdvancementTab implements Viewable { } @Override - public synchronized boolean removeViewer(Player player) { + public synchronized boolean removeViewer(@NotNull Player player) { if (!isViewer(player)) { return false; } @@ -166,6 +167,7 @@ public class AdvancementTab implements Viewable { return viewers.remove(player); } + @NotNull @Override public Set getViewers() { return viewers; diff --git a/src/main/java/net/minestom/server/bossbar/BossBar.java b/src/main/java/net/minestom/server/bossbar/BossBar.java index 5129c148a..9f3080f74 100644 --- a/src/main/java/net/minestom/server/bossbar/BossBar.java +++ b/src/main/java/net/minestom/server/bossbar/BossBar.java @@ -6,6 +6,7 @@ import net.minestom.server.entity.Player; import net.minestom.server.network.packet.server.play.BossBarPacket; import net.minestom.server.utils.MathUtils; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; @@ -38,7 +39,7 @@ public class BossBar implements Viewable { * @param color the boss bar color * @param division the boss bar division */ - public BossBar(ColoredText title, BarColor color, BarDivision division) { + public BossBar(ColoredText title, @NotNull BarColor color, @NotNull BarDivision division) { this.title = title; this.color = color; this.division = division; @@ -50,12 +51,12 @@ public class BossBar implements Viewable { * @param player the player to check the boss bars * @return all the visible boss bars of the player, null if not any */ - public static Set getBossBars(Player player) { + public static Set getBossBars(@NotNull Player player) { return PLAYER_BOSSBAR_MAP.getOrDefault(player, null); } @Override - public synchronized boolean addViewer(Player player) { + public synchronized boolean addViewer(@NotNull Player player) { // Check already viewer if (isViewer(player)) { return false; @@ -71,7 +72,7 @@ public class BossBar implements Viewable { } @Override - public synchronized boolean removeViewer(Player player) { + public synchronized boolean removeViewer(@NotNull Player player) { // Check not viewer final boolean result = this.viewers.remove(player); if (result) { @@ -82,6 +83,7 @@ public class BossBar implements Viewable { return result; } + @NotNull @Override public Set getViewers() { return Collections.unmodifiableSet(viewers); @@ -133,6 +135,7 @@ public class BossBar implements Viewable { * * @return the current bossbar color */ + @NotNull public BarColor getColor() { return color; } @@ -142,7 +145,7 @@ public class BossBar implements Viewable { * * @param color the new color of the bossbar */ - public void setColor(BarColor color) { + public void setColor(@NotNull BarColor color) { this.color = color; updateStyle(); } @@ -152,6 +155,7 @@ public class BossBar implements Viewable { * * @return the current bossbar division */ + @NotNull public BarDivision getDivision() { return division; } @@ -161,7 +165,7 @@ public class BossBar implements Viewable { * * @param division the new bossbar division count */ - public void setDivision(BarDivision division) { + public void setDivision(@NotNull BarDivision division) { this.division = division; updateStyle(); } @@ -213,7 +217,7 @@ public class BossBar implements Viewable { * * @param player the player to remove from the map */ - private void removePlayer(Player player) { + private void removePlayer(@NotNull Player player) { if (!PLAYER_BOSSBAR_MAP.containsKey(player)) { return; } @@ -231,7 +235,7 @@ public class BossBar implements Viewable { * * @param player the player to create the bossbar to */ - private void addToPlayer(Player player) { + private void addToPlayer(@NotNull Player player) { // Add to the map Set bossBars = PLAYER_BOSSBAR_MAP.computeIfAbsent(player, p -> new HashSet<>()); bossBars.add(this); @@ -252,7 +256,7 @@ public class BossBar implements Viewable { * * @param player the player to remove the bossbar to */ - private void removeToPlayer(Player player) { + private void removeToPlayer(@NotNull Player player) { BossBarPacket bossBarPacket = new BossBarPacket(); bossBarPacket.uuid = uuid; bossBarPacket.action = BossBarPacket.Action.REMOVE; diff --git a/src/main/java/net/minestom/server/data/Data.java b/src/main/java/net/minestom/server/data/Data.java index 93e853f34..9d35c56c6 100644 --- a/src/main/java/net/minestom/server/data/Data.java +++ b/src/main/java/net/minestom/server/data/Data.java @@ -1,5 +1,8 @@ package net.minestom.server.data; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + import java.util.Collections; import java.util.Set; @@ -12,19 +15,20 @@ public interface Data { Data EMPTY = new Data() { @Override - public void set(String key, T value, Class type) { + public void set(@NotNull String key, @NotNull T value, @NotNull Class type) { } @Override - public T get(String key) { + public T get(@NotNull String key) { return null; } @Override - public boolean hasKey(String key) { + public boolean hasKey(@NotNull String key) { return false; } + @NotNull @Override public Set getKeys() { return Collections.emptySet(); @@ -41,7 +45,7 @@ public interface Data { } @Override - public T getOrDefault(String key, T defaultValue) { + public T getOrDefault(@NotNull String key, T defaultValue) { return defaultValue; } }; @@ -54,7 +58,7 @@ public interface Data { * @param type the value type * @param the value generic */ - void set(String key, T value, Class type); + void set(@NotNull String key, @NotNull T value, @NotNull Class type); /** * Retrieves a value based on its key. @@ -63,7 +67,8 @@ public interface Data { * @param the value type * @return the data associated with the key or null */ - T get(String key); + @Nullable + T get(@NotNull String key); /** * Retrieves a value based on its key, give a default value if not found. @@ -73,7 +78,8 @@ public interface Data { * @param the value type * @return {@link #get(String)} if found, {@code defaultValue} otherwise */ - T getOrDefault(String key, T defaultValue); + @Nullable + T getOrDefault(@NotNull String key, T defaultValue); /** * Gets if the data has a key. @@ -81,13 +87,14 @@ public interface Data { * @param key the key to check * @return true if the data contains the key */ - boolean hasKey(String key); + boolean hasKey(@NotNull String key); /** * Gets the list of data keys. * * @return an unmodifiable {@link Set} containing all the keys */ + @NotNull Set getKeys(); /** diff --git a/src/main/java/net/minestom/server/data/DataContainer.java b/src/main/java/net/minestom/server/data/DataContainer.java index 1c6e1b366..d65a46c74 100644 --- a/src/main/java/net/minestom/server/data/DataContainer.java +++ b/src/main/java/net/minestom/server/data/DataContainer.java @@ -1,5 +1,7 @@ package net.minestom.server.data; +import org.jetbrains.annotations.Nullable; + /** * Represents an element which can have a {@link Data} attached to it. *

@@ -15,6 +17,7 @@ public interface DataContainer { * * @return the {@link Data} of this container, can be null */ + @Nullable Data getData(); /** @@ -22,6 +25,6 @@ public interface DataContainer { * * @param data the {@link Data} of this container, null to remove it */ - void setData(Data data); + void setData(@Nullable Data data); } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/data/DataImpl.java b/src/main/java/net/minestom/server/data/DataImpl.java index 6adcc2edd..bac02e354 100644 --- a/src/main/java/net/minestom/server/data/DataImpl.java +++ b/src/main/java/net/minestom/server/data/DataImpl.java @@ -1,5 +1,7 @@ package net.minestom.server.data; +import org.jetbrains.annotations.NotNull; + import java.util.Collections; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -12,25 +14,26 @@ public class DataImpl implements Data { protected final ConcurrentHashMap data = new ConcurrentHashMap<>(); @Override - public void set(String key, T value, Class type) { + public void set(@NotNull String key, @NotNull T value, @NotNull Class type) { this.data.put(key, value); } @Override - public T get(String key) { + public T get(@NotNull String key) { return (T) data.get(key); } @Override - public T getOrDefault(String key, T defaultValue) { + public T getOrDefault(@NotNull String key, T defaultValue) { return (T) data.getOrDefault(key, defaultValue); } @Override - public boolean hasKey(String key) { + public boolean hasKey(@NotNull String key) { return data.containsKey(key); } + @NotNull @Override public Set getKeys() { return Collections.unmodifiableSet(data.keySet()); diff --git a/src/main/java/net/minestom/server/data/SerializableDataImpl.java b/src/main/java/net/minestom/server/data/SerializableDataImpl.java index 8c7213012..8c5a82882 100644 --- a/src/main/java/net/minestom/server/data/SerializableDataImpl.java +++ b/src/main/java/net/minestom/server/data/SerializableDataImpl.java @@ -6,6 +6,7 @@ import it.unimi.dsi.fastutil.shorts.Short2ObjectOpenHashMap; import net.minestom.server.utils.PrimitiveConversion; import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -39,7 +40,7 @@ public class SerializableDataImpl extends DataImpl implements SerializableData { * @throws UnsupportedOperationException if {@code type} is not registered in {@link DataManager} */ @Override - public void set(String key, T value, Class type) { + public void set(@NotNull String key, @NotNull T value, @NotNull Class type) { if (DATA_MANAGER.getDataType(type) == null) { throw new UnsupportedOperationException("Type " + type.getName() + " hasn't been registered in DataManager#registerType"); } diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 25f5db25f..7d807e924 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -32,6 +32,8 @@ import net.minestom.server.utils.entity.EntityUtils; import net.minestom.server.utils.player.PlayerUtils; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -124,7 +126,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { private long ticks; private final EntityTickEvent tickEvent = new EntityTickEvent(this); - public Entity(EntityType entityType, Position spawnPosition) { + public Entity(@NotNull EntityType entityType, @NotNull Position spawnPosition) { this.id = generateId(); this.entityType = entityType; this.uuid = UUID.randomUUID(); @@ -144,11 +146,11 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @param callback the task to execute during the next entity tick */ - public void scheduleNextTick(Consumer callback) { + public void scheduleNextTick(@NotNull Consumer callback) { this.nextTick.add(callback); } - public Entity(EntityType entityType) { + public Entity(@NotNull EntityType entityType) { this(entityType, new Position()); } @@ -156,6 +158,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param id the entity unique id ({@link #getEntityId()}) * @return the entity having the specified id, null if not found */ + @Nullable public static Entity getEntity(int id) { return entityById.getOrDefault(id, null); } @@ -213,9 +216,9 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * {@link Instance#hasEnabledAutoChunkLoad()} returns true. * * @param position the teleport position - * @param callback the callback executed, even if auto chunk is not enabled + * @param callback the optional callback executed, even if auto chunk is not enabled */ - public void teleport(Position position, Runnable callback) { + public void teleport(@NotNull Position position, @Nullable Runnable callback) { Check.notNull(position, "Teleport position cannot be null"); Check.stateCondition(instance == null, "You need to use Entity#setInstance before teleporting an entity!"); @@ -238,7 +241,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { } } - public void teleport(Position position) { + public void teleport(@NotNull Position position) { teleport(position, null); } @@ -271,7 +274,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @param position the new view */ - public void setView(Position position) { + public void setView(@NotNull Position position) { setView(position.getYaw(), position.getPitch()); } @@ -291,14 +294,17 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { } /** + * Makes the entity auto viewable or only manually. + * * @param autoViewable should the entity be automatically viewable for close players + * @see #isAutoViewable() */ public void setAutoViewable(boolean autoViewable) { this.autoViewable = autoViewable; } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { Check.notNull(player, "Viewer cannot be null"); boolean result = this.viewers.add(player); if (!result) @@ -308,7 +314,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { Check.notNull(player, "Viewer cannot be null"); if (!viewers.remove(player)) return false; @@ -320,6 +326,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { return true; } + @NotNull @Override public Set getViewers() { return Collections.unmodifiableSet(viewers); @@ -331,7 +338,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { } @Override - public void setData(Data data) { + public void setData(@Nullable Data data) { this.data = data; } @@ -591,6 +598,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return the entity unique id */ + @NotNull public UUID getUuid() { return uuid; } @@ -600,7 +608,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @param uuid the new entity uuid */ - protected void setUuid(UUID uuid) { + protected void setUuid(@NotNull UUID uuid) { this.uuid = uuid; } @@ -618,6 +626,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return the entity bounding box */ + @NotNull public BoundingBox getBoundingBox() { return boundingBox; } @@ -640,6 +649,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return the entity chunk */ + @NotNull public Chunk getChunk() { return instance.getChunkAt(lastX, lastZ); } @@ -660,7 +670,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @throws NullPointerException if {@code instance} is null * @throws IllegalStateException if {@code instance} has not been registered in {@link InstanceManager} */ - public void setInstance(Instance instance) { + public void setInstance(@NotNull Instance instance) { Check.notNull(instance, "instance cannot be null!"); Check.stateCondition(!instance.isRegistered(), "Instances need to be registered, please use InstanceManager#registerInstance or InstanceManager#registerSharedInstance"); @@ -682,6 +692,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return the entity current velocity */ + @NotNull public Vector getVelocity() { return velocity; } @@ -693,7 +704,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @param velocity the new entity velocity */ - public void setVelocity(Vector velocity) { + public void setVelocity(@NotNull Vector velocity) { EntityVelocityEvent entityVelocityEvent = new EntityVelocityEvent(this, velocity); callCancellableEvent(EntityVelocityEvent.class, entityVelocityEvent, () -> { this.velocity.copy(entityVelocityEvent.getVelocity()); @@ -727,7 +738,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param entity the entity to get the distance from * @return the distance between this and {@code entity} */ - public float getDistance(Entity entity) { + public float getDistance(@NotNull Entity entity) { Check.notNull(entity, "Entity cannot be null"); return getPosition().getDistance(entity.getPosition()); } @@ -737,6 +748,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return the entity vehicle, or null if there is not any */ + @Nullable public Entity getVehicle() { return vehicle; } @@ -748,7 +760,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @throws NullPointerException if {@code entity} is null * @throws IllegalStateException if {@link #getInstance()} returns null */ - public void addPassenger(Entity entity) { + public void addPassenger(@NotNull Entity entity) { Check.notNull(entity, "Passenger cannot be null"); Check.stateCondition(instance == null, "You need to set an instance using Entity#setInstance"); @@ -769,7 +781,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @throws NullPointerException if {@code entity} is null * @throws IllegalStateException if {@link #getInstance()} returns null */ - public void removePassenger(Entity entity) { + public void removePassenger(@NotNull Entity entity) { Check.notNull(entity, "Passenger cannot be null"); Check.stateCondition(instance == null, "You need to set an instance using Entity#setInstance"); @@ -793,10 +805,12 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return an unmodifiable list containing all the entity passengers */ + @NotNull public Set getPassengers() { return Collections.unmodifiableSet(passengers); } + @NotNull protected SetPassengersPacket getPassengersPacket() { SetPassengersPacket passengersPacket = new SetPassengersPacket(); passengersPacket.vehicleEntityId = getEntityId(); @@ -998,7 +1012,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param position the new position * @see #refreshPosition(float, float, float) */ - public void refreshPosition(Position position) { + public void refreshPosition(@NotNull Position position) { refreshPosition(position.getX(), position.getY(), position.getZ()); } @@ -1010,7 +1024,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param lastChunk the previous {@link Chunk} of this entity * @param newChunk the new {@link Chunk} of this entity */ - private void updateView(Chunk lastChunk, Chunk newChunk) { + private void updateView(@NotNull Chunk lastChunk, @NotNull Chunk newChunk) { final boolean isPlayer = this instanceof Player; if (isPlayer) @@ -1143,7 +1157,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param position the checked position chunk * @return true if the entity is in the same chunk as {@code position} */ - public boolean sameChunk(Position position) { + public boolean sameChunk(@NotNull Position position) { Check.notNull(position, "Position cannot be null"); final Position pos = getPosition(); final int chunkX1 = ChunkUtils.getChunkCoordinate((int) Math.floor(pos.getX())); @@ -1161,7 +1175,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param entity the entity to check * @return true if both entities are in the same chunk, false otherwise */ - public boolean sameChunk(Entity entity) { + public boolean sameChunk(@NotNull Entity entity) { return sameChunk(entity.getPosition()); } @@ -1193,7 +1207,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param delay the time before removing the entity * @param timeUnit the unit of the delay */ - public void scheduleRemove(long delay, TimeUnit timeUnit) { + public void scheduleRemove(long delay, @NotNull TimeUnit timeUnit) { delay = timeUnit.toMilliseconds(delay); if (delay == 0) { // Cancel the scheduled remove @@ -1212,6 +1226,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { return scheduledRemoveTime != 0; } + @NotNull protected EntityVelocityPacket getVelocityPacket() { final float strength = 8000f / MinecraftServer.TICK_PER_SECOND; EntityVelocityPacket velocityPacket = new EntityVelocityPacket(); @@ -1227,6 +1242,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return The {@link EntityMetaDataPacket} related to this entity */ + @NotNull public EntityMetaDataPacket getMetadataPacket() { EntityMetaDataPacket metaDataPacket = new EntityMetaDataPacket(); metaDataPacket.entityId = getEntityId(); @@ -1239,6 +1255,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * * @return The consumer used to write {@link EntityMetaDataPacket} in {@link #getMetadataPacket()} */ + @NotNull public Consumer getMetadataConsumer() { return packet -> { fillMetadataIndex(packet, 0); @@ -1273,7 +1290,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { * @param packet the packet writer * @param index the index to fill/write */ - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { switch (index) { case 0: fillStateMetadata(packet); @@ -1299,7 +1316,7 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { } } - private void fillStateMetadata(BinaryWriter packet) { + private void fillStateMetadata(@NotNull BinaryWriter packet) { packet.writeByte((byte) 0); packet.writeByte(METADATA_BYTE); byte index0 = 0; @@ -1322,13 +1339,13 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { packet.writeByte(index0); } - private void fillAirTickMetaData(BinaryWriter packet) { + private void fillAirTickMetaData(@NotNull BinaryWriter packet) { packet.writeByte((byte) 1); packet.writeByte(METADATA_VARINT); packet.writeVarInt(air); } - private void fillCustomNameMetaData(BinaryWriter packet) { + private void fillCustomNameMetaData(@NotNull BinaryWriter packet) { boolean hasCustomName = customName != null; packet.writeByte((byte) 2); @@ -1339,25 +1356,25 @@ public abstract class Entity implements Viewable, EventHandler, DataContainer { } } - private void fillCustomNameVisibleMetaData(BinaryWriter packet) { + private void fillCustomNameVisibleMetaData(@NotNull BinaryWriter packet) { packet.writeByte((byte) 3); packet.writeByte(METADATA_BOOLEAN); packet.writeBoolean(customNameVisible); } - private void fillSilentMetaData(BinaryWriter packet) { + private void fillSilentMetaData(@NotNull BinaryWriter packet) { packet.writeByte((byte) 4); packet.writeByte(METADATA_BOOLEAN); packet.writeBoolean(silent); } - private void fillNoGravityMetaData(BinaryWriter packet) { + private void fillNoGravityMetaData(@NotNull BinaryWriter packet) { packet.writeByte((byte) 5); packet.writeByte(METADATA_BOOLEAN); packet.writeBoolean(noGravity); } - private void fillPoseMetaData(BinaryWriter packet) { + private void fillPoseMetaData(@NotNull BinaryWriter packet) { packet.writeByte((byte) 6); packet.writeByte(METADATA_POSE); packet.writeVarInt(pose.ordinal()); diff --git a/src/main/java/net/minestom/server/entity/EntityCreature.java b/src/main/java/net/minestom/server/entity/EntityCreature.java index b88307a31..0aa723a79 100644 --- a/src/main/java/net/minestom/server/entity/EntityCreature.java +++ b/src/main/java/net/minestom/server/entity/EntityCreature.java @@ -23,6 +23,7 @@ import net.minestom.server.utils.chunk.ChunkUtils; import net.minestom.server.utils.item.ItemStackUtils; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -162,7 +163,7 @@ public abstract class EntityCreature extends LivingEntity { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { final boolean result = super.addViewer(player); final PlayerConnection playerConnection = player.getPlayerConnection(); diff --git a/src/main/java/net/minestom/server/entity/ExperienceOrb.java b/src/main/java/net/minestom/server/entity/ExperienceOrb.java index c59d84ae9..7bc7e2939 100644 --- a/src/main/java/net/minestom/server/entity/ExperienceOrb.java +++ b/src/main/java/net/minestom/server/entity/ExperienceOrb.java @@ -2,6 +2,7 @@ package net.minestom.server.entity; import net.minestom.server.network.packet.server.play.SpawnExperienceOrbPacket; import net.minestom.server.network.player.PlayerConnection; +import org.jetbrains.annotations.NotNull; public class ExperienceOrb extends Entity { @@ -25,7 +26,7 @@ public class ExperienceOrb extends Entity { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { final boolean result = super.addViewer(player); // Add player to viewers list if (!result) return false; diff --git a/src/main/java/net/minestom/server/entity/ItemEntity.java b/src/main/java/net/minestom/server/entity/ItemEntity.java index 30b33d16e..bd86edf18 100644 --- a/src/main/java/net/minestom/server/entity/ItemEntity.java +++ b/src/main/java/net/minestom/server/entity/ItemEntity.java @@ -9,6 +9,8 @@ import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.time.CooldownUtils; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.time.UpdateOption; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Set; import java.util.function.Consumer; @@ -48,6 +50,7 @@ public class ItemEntity extends ObjectEntity { * * @return the merge update option */ + @Nullable public static UpdateOption getMergeUpdateOption() { return mergeUpdateOption; } @@ -58,7 +61,7 @@ public class ItemEntity extends ObjectEntity { * * @param mergeUpdateOption the new merge update option */ - public static void setMergeUpdateOption(UpdateOption mergeUpdateOption) { + public static void setMergeUpdateOption(@Nullable UpdateOption mergeUpdateOption) { ItemEntity.mergeUpdateOption = mergeUpdateOption; } @@ -117,6 +120,7 @@ public class ItemEntity extends ObjectEntity { this.spawnTime = System.currentTimeMillis(); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -126,7 +130,7 @@ public class ItemEntity extends ObjectEntity { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 7) { packet.writeByte((byte) 7); @@ -233,7 +237,7 @@ public class ItemEntity extends ObjectEntity { * @param delay the pickup delay * @param timeUnit the unit of the delay */ - public void setPickupDelay(long delay, TimeUnit timeUnit) { + public void setPickupDelay(long delay, @NotNull TimeUnit timeUnit) { this.pickupDelay = timeUnit.toMilliseconds(delay); } diff --git a/src/main/java/net/minestom/server/entity/LivingEntity.java b/src/main/java/net/minestom/server/entity/LivingEntity.java index aef6af25d..63ba2bbf8 100644 --- a/src/main/java/net/minestom/server/entity/LivingEntity.java +++ b/src/main/java/net/minestom/server/entity/LivingEntity.java @@ -21,6 +21,7 @@ import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.Set; import java.util.function.Consumer; @@ -122,6 +123,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { } } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -133,7 +135,7 @@ public abstract class LivingEntity extends Entity implements EquipmentHandler { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 7) { packet.writeByte((byte) 7); diff --git a/src/main/java/net/minestom/server/entity/ObjectEntity.java b/src/main/java/net/minestom/server/entity/ObjectEntity.java index df9564ace..0e8273ec3 100644 --- a/src/main/java/net/minestom/server/entity/ObjectEntity.java +++ b/src/main/java/net/minestom/server/entity/ObjectEntity.java @@ -3,6 +3,7 @@ package net.minestom.server.entity; import net.minestom.server.network.packet.server.play.SpawnEntityPacket; import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.Position; +import org.jetbrains.annotations.NotNull; public abstract class ObjectEntity extends Entity { @@ -30,7 +31,7 @@ public abstract class ObjectEntity extends Entity { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { final boolean result = super.addViewer(player); if (!result) return false; diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index 46e63c1aa..b1255e380 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -56,6 +56,8 @@ import net.minestom.server.utils.chunk.ChunkUtils; import net.minestom.server.utils.validate.Check; import net.minestom.server.world.DimensionType; import net.minestom.server.world.LevelType; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentLinkedQueue; @@ -542,7 +544,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { if (player == this) return false; @@ -556,7 +558,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { if (player == this) return false; @@ -571,7 +573,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public void setInstance(Instance instance) { + public void setInstance(@NotNull Instance instance) { Check.notNull(instance, "instance cannot be null!"); Check.argCondition(this.instance == instance, "Instance should be different than the current one"); @@ -619,6 +621,7 @@ public class Player extends LivingEntity implements CommandSender { } } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -629,7 +632,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 14) { packet.writeByte((byte) 14); @@ -643,12 +646,12 @@ public class Player extends LivingEntity implements CommandSender { } /** - * Send a plugin message to the player + * Sends a plugin message to the player. * * @param channel the message channel * @param data the message data */ - public void sendPluginMessage(String channel, byte[] data) { + public void sendPluginMessage(@NotNull String channel, @NotNull byte[] data) { PluginMessagePacket pluginMessagePacket = new PluginMessagePacket(); pluginMessagePacket.channel = channel; pluginMessagePacket.data = data; @@ -656,12 +659,12 @@ public class Player extends LivingEntity implements CommandSender { } /** - * Send a plugin message to the player + * Sends a plugin message to the player. * * @param channel the message channel * @param message the message */ - public void sendPluginMessage(String channel, String message) { + public void sendPluginMessage(@NotNull String channel, @NotNull String message) { // Write the data BinaryWriter writer = new BinaryWriter(); writer.writeSizedString(message); @@ -672,7 +675,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public void sendMessage(String message) { + public void sendMessage(@NotNull String message) { sendMessage(ColoredText.of(message)); } @@ -687,7 +690,7 @@ public class Player extends LivingEntity implements CommandSender { * @param message the message to send, * you can use {@link ColoredText} and/or {@link RichMessage} to create it easily */ - public void sendMessage(JsonMessage message) { + public void sendMessage(@NotNull JsonMessage message) { sendJsonMessage(message.toString()); } @@ -697,7 +700,7 @@ public class Player extends LivingEntity implements CommandSender { * @param text the text with the legacy color formatting * @param colorChar the color character */ - public void sendLegacyMessage(String text, char colorChar) { + public void sendLegacyMessage(@NotNull String text, char colorChar) { ColoredText coloredText = ColoredText.ofLegacy(text, colorChar); sendJsonMessage(coloredText.toString()); } @@ -707,12 +710,12 @@ public class Player extends LivingEntity implements CommandSender { * * @param text the text with the legacy color formatting */ - public void sendLegacyMessage(String text) { + public void sendLegacyMessage(@NotNull String text) { ColoredText coloredText = ColoredText.ofLegacy(text, ChatParser.COLOR_CHAR); sendJsonMessage(coloredText.toString()); } - public void sendJsonMessage(String json) { + public void sendJsonMessage(@NotNull String json) { ChatMessagePacket chatMessagePacket = new ChatMessagePacket(json, ChatMessagePacket.Position.CHAT); playerConnection.sendPacket(chatMessagePacket); @@ -723,13 +726,13 @@ public class Player extends LivingEntity implements CommandSender { * * @param message the message that the player will send */ - public void chat(String message) { + public void chat(@NotNull String message) { ClientChatMessagePacket chatMessagePacket = new ClientChatMessagePacket(); chatMessagePacket.message = message; addPacketToQueue(chatMessagePacket); } - public void playSound(Sound sound, SoundCategory soundCategory, int x, int y, int z, float volume, float pitch) { + public void playSound(@NotNull Sound sound, @NotNull SoundCategory soundCategory, int x, int y, int z, float volume, float pitch) { SoundEffectPacket soundEffectPacket = new SoundEffectPacket(); soundEffectPacket.soundId = sound.getId(); soundEffectPacket.soundCategory = soundCategory; @@ -751,7 +754,7 @@ public class Player extends LivingEntity implements CommandSender { * @param data data for the effect * @param disableRelativeVolume disable volume scaling based on distance */ - public void playEffect(Effects effect, int x, int y, int z, int data, boolean disableRelativeVolume) { + public void playEffect(@NotNull Effects effect, int x, int y, int z, int data, boolean disableRelativeVolume) { EffectPacket packet = new EffectPacket(); packet.effectId = effect.getId(); packet.position = new BlockPosition(x, y, z); @@ -775,7 +778,7 @@ public class Player extends LivingEntity implements CommandSender { * @param header the header text * @param footer the footer text */ - public void sendHeaderFooter(ColoredText header, ColoredText footer) { + public void sendHeaderFooter(@NotNull ColoredText header, @NotNull ColoredText footer) { PlayerListHeaderAndFooterPacket playerListHeaderAndFooterPacket = new PlayerListHeaderAndFooterPacket(); playerListHeaderAndFooterPacket.emptyHeader = header == null; playerListHeaderAndFooterPacket.emptyFooter = footer == null; @@ -792,7 +795,7 @@ public class Player extends LivingEntity implements CommandSender { * @param action the action of the title (where to show it) * @see #sendTitleTime(int, int, int) to specify the display time */ - private void sendTitle(ColoredText text, TitlePacket.Action action) { + private void sendTitle(@NotNull ColoredText text, @NotNull TitlePacket.Action action) { TitlePacket titlePacket = new TitlePacket(); titlePacket.action = action; @@ -820,7 +823,7 @@ public class Player extends LivingEntity implements CommandSender { * @param subtitle the subtitle message * @see #sendTitleTime(int, int, int) to specify the display time */ - public void sendTitleSubtitleMessage(ColoredText title, ColoredText subtitle) { + public void sendTitleSubtitleMessage(@NotNull ColoredText title, @NotNull ColoredText subtitle) { sendTitle(title, TitlePacket.Action.SET_TITLE); sendTitle(subtitle, TitlePacket.Action.SET_SUBTITLE); } @@ -831,7 +834,7 @@ public class Player extends LivingEntity implements CommandSender { * @param title the title message * @see #sendTitleTime(int, int, int) to specify the display time */ - public void sendTitleMessage(ColoredText title) { + public void sendTitleMessage(@NotNull ColoredText title) { sendTitle(title, TitlePacket.Action.SET_TITLE); } @@ -841,7 +844,7 @@ public class Player extends LivingEntity implements CommandSender { * @param subtitle the subtitle message * @see #sendTitleTime(int, int, int) to specify the display time */ - public void sendSubtitleMessage(ColoredText subtitle) { + public void sendSubtitleMessage(@NotNull ColoredText subtitle) { sendTitle(subtitle, TitlePacket.Action.SET_SUBTITLE); } @@ -851,7 +854,7 @@ public class Player extends LivingEntity implements CommandSender { * @param actionBar the action bar message * @see #sendTitleTime(int, int, int) to specify the display time */ - public void sendActionBarMessage(ColoredText actionBar) { + public void sendActionBarMessage(@NotNull ColoredText actionBar) { sendTitle(actionBar, TitlePacket.Action.SET_ACTION_BAR); } @@ -890,7 +893,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public boolean isImmune(DamageType type) { + public boolean isImmune(@NotNull DamageType type) { if (!getGameMode().canTakeDamage()) { return type != DamageType.VOID; } @@ -898,7 +901,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public void setAttribute(Attribute attribute, float value) { + public void setAttribute(@NotNull Attribute attribute, float value) { super.setAttribute(attribute, value); if (playerConnection != null) playerConnection.sendPacket(getPropertiesPacket()); @@ -1022,6 +1025,7 @@ public class Player extends LivingEntity implements CommandSender { * @return the player skin object, * null means that the player has his {@link #getUuid()} default skin */ + @Nullable public PlayerSkin getSkin() { return skin; } @@ -1034,7 +1038,7 @@ public class Player extends LivingEntity implements CommandSender { * @param skin the player skin, null to reset it to his {@link #getUuid()} default skin * @see PlayerSkinInitEvent if you want to apply the skin at connection */ - public synchronized void setSkin(PlayerSkin skin) { + public synchronized void setSkin(@Nullable PlayerSkin skin) { this.skin = skin; DestroyEntitiesPacket destroyEntitiesPacket = new DestroyEntitiesPacket(); @@ -1090,6 +1094,7 @@ public class Player extends LivingEntity implements CommandSender { * * @return the player username */ + @NotNull public String getUsername() { return username; } @@ -1100,11 +1105,11 @@ public class Player extends LivingEntity implements CommandSender { * * @param username the new player name */ - protected void setUsername(String username) { + protected void setUsername(@NotNull String username) { this.username = username; } - private void sendChangeGameStatePacket(ChangeGameStatePacket.Reason reason, float value) { + private void sendChangeGameStatePacket(@NotNull ChangeGameStatePacket.Reason reason, float value) { ChangeGameStatePacket changeGameStatePacket = new ChangeGameStatePacket(); changeGameStatePacket.reason = reason; changeGameStatePacket.value = value; @@ -1117,7 +1122,7 @@ public class Player extends LivingEntity implements CommandSender { * @param item the item to drop * @return true if player can drop the item (event not cancelled), false otherwise */ - public boolean dropItem(ItemStack item) { + public boolean dropItem(@NotNull ItemStack item) { ItemDropEvent itemDropEvent = new ItemDropEvent(item); callEvent(ItemDropEvent.class, itemDropEvent); return !itemDropEvent.isCancelled(); @@ -1145,7 +1150,7 @@ public class Player extends LivingEntity implements CommandSender { * @param facePoint the point from where the player should aim * @param targetPosition the target position to face */ - public void facePosition(FacePoint facePoint, Position targetPosition) { + public void facePosition(@NotNull FacePoint facePoint, @NotNull Position targetPosition) { facePosition(facePoint, targetPosition, null, null); } @@ -1156,11 +1161,11 @@ public class Player extends LivingEntity implements CommandSender { * @param entity the entity to face * @param targetPoint the point to aim at {@code entity} position */ - public void facePosition(FacePoint facePoint, Entity entity, FacePoint targetPoint) { + public void facePosition(@NotNull FacePoint facePoint, Entity entity, FacePoint targetPoint) { facePosition(facePoint, entity.getPosition(), entity, targetPoint); } - private void facePosition(FacePoint facePoint, Position targetPosition, Entity entity, FacePoint targetPoint) { + private void facePosition(@NotNull FacePoint facePoint, @NotNull Position targetPosition, @Nullable Entity entity, @Nullable FacePoint targetPoint) { FacePlayerPacket facePlayerPacket = new FacePlayerPacket(); facePlayerPacket.entityFacePosition = facePoint == FacePoint.EYE ? FacePlayerPacket.FacePosition.EYES : FacePlayerPacket.FacePosition.FEET; @@ -1180,7 +1185,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param entity the entity to spectate */ - public void spectate(Entity entity) { + public void spectate(@NotNull Entity entity) { CameraPacket cameraPacket = new CameraPacket(); cameraPacket.cameraId = entity.getEntityId(); playerConnection.sendPacket(cameraPacket); @@ -1200,6 +1205,7 @@ public class Player extends LivingEntity implements CommandSender { * * @return the default respawn point */ + @NotNull public Position getRespawnPoint() { return respawnPoint; } @@ -1209,7 +1215,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param respawnPoint the player respawn point */ - public void setRespawnPoint(Position respawnPoint) { + public void setRespawnPoint(@NotNull Position respawnPoint) { this.respawnPoint = respawnPoint; } @@ -1320,7 +1326,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param newChunk the current/new player chunk */ - protected void onChunkChange(Chunk newChunk) { + protected void onChunkChange(@NotNull Chunk newChunk) { // Previous chunks indexes final long[] lastVisibleChunks = viewableChunks.stream().mapToLong(viewableChunks -> ChunkUtils.getChunkIndex(viewableChunks.getChunkX(), viewableChunks.getChunkZ()) @@ -1368,7 +1374,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public void teleport(Position position, Runnable callback) { + public void teleport(@NotNull Position position, @Nullable Runnable callback) { super.teleport(position, () -> { updatePlayerPosition(); OptionalCallback.execute(callback); @@ -1376,7 +1382,7 @@ public class Player extends LivingEntity implements CommandSender { } @Override - public void teleport(Position position) { + public void teleport(@NotNull Position position) { teleport(position, null); } @@ -1387,6 +1393,7 @@ public class Player extends LivingEntity implements CommandSender { * * @return the player connection */ + @NotNull public PlayerConnection getPlayerConnection() { return playerConnection; } @@ -1405,6 +1412,7 @@ public class Player extends LivingEntity implements CommandSender { * * @return the player settings */ + @NotNull public PlayerSettings getSettings() { return settings; } @@ -1418,6 +1426,7 @@ public class Player extends LivingEntity implements CommandSender { return dimensionType; } + @NotNull public PlayerInventory getInventory() { return inventory; } @@ -1446,7 +1455,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param gameMode the new player GameMode */ - public void setGameMode(GameMode gameMode) { + public void setGameMode(@NotNull GameMode gameMode) { Check.notNull(gameMode, "GameMode cannot be null"); this.gameMode = gameMode; sendChangeGameStatePacket(ChangeGameStatePacket.Reason.CHANGE_GAMEMODE, gameMode.getId()); @@ -1471,7 +1480,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param dimensionType the new player dimension */ - protected void sendDimension(DimensionType dimensionType) { + protected void sendDimension(@NotNull DimensionType dimensionType) { Check.notNull(dimensionType, "Dimension cannot be null!"); Check.argCondition(dimensionType.equals(getDimensionType()), "The dimension needs to be different than the current one!"); @@ -1488,7 +1497,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param text the kick reason */ - public void kick(ColoredText text) { + public void kick(@NotNull ColoredText text) { DisconnectPacket disconnectPacket = new DisconnectPacket(); disconnectPacket.message = text; playerConnection.sendPacket(disconnectPacket); @@ -1501,7 +1510,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param message the kick reason */ - public void kick(String message) { + public void kick(@NotNull String message) { kick(ColoredText.of(message)); } @@ -1581,6 +1590,7 @@ public class Player extends LivingEntity implements CommandSender { * * @return the currently mined {@link CustomBlock} by the player, null if there is not */ + @Nullable public CustomBlock getCustomBlockTarget() { return targetCustomBlock; } @@ -1590,6 +1600,7 @@ public class Player extends LivingEntity implements CommandSender { * * @return the currently open inventory, null if there is not (player inventory is not detected) */ + @Nullable public Inventory getOpenInventory() { return openInventory; } @@ -1600,7 +1611,7 @@ public class Player extends LivingEntity implements CommandSender { * @param inventory the inventory to open * @return true if the inventory has been opened/sent to the player, false otherwise (cancelled by event) */ - public boolean openInventory(Inventory inventory) { + public boolean openInventory(@NotNull Inventory inventory) { Check.notNull(inventory, "Inventory cannot be null, use Player#closeInventory() to close current"); InventoryOpenEvent inventoryOpenEvent = new InventoryOpenEvent(this, inventory); @@ -1702,7 +1713,7 @@ public class Player extends LivingEntity implements CommandSender { * * @param chunk the chunk to update the view */ - public void updateViewPosition(Chunk chunk) { + public void updateViewPosition(@NotNull Chunk chunk) { UpdateViewPositionPacket updateViewPositionPacket = new UpdateViewPositionPacket(); updateViewPositionPacket.chunkX = chunk.getChunkX(); updateViewPositionPacket.chunkZ = chunk.getChunkZ(); diff --git a/src/main/java/net/minestom/server/entity/hologram/Hologram.java b/src/main/java/net/minestom/server/entity/hologram/Hologram.java index 73f21afb7..06ca1811d 100644 --- a/src/main/java/net/minestom/server/entity/hologram/Hologram.java +++ b/src/main/java/net/minestom/server/entity/hologram/Hologram.java @@ -7,6 +7,7 @@ import net.minestom.server.entity.type.decoration.EntityArmorStand; import net.minestom.server.instance.Instance; import net.minestom.server.utils.Position; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.Set; @@ -105,15 +106,16 @@ public class Hologram implements Viewable { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { return entity.addViewer(player); } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { return entity.removeViewer(player); } + @NotNull @Override public Set getViewers() { return entity.getViewers(); diff --git a/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java b/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java index c9ed35523..f70528b77 100644 --- a/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java +++ b/src/main/java/net/minestom/server/entity/type/ambient/EntityBat.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntityBat extends EntityCreature implements Animal { setBoundingBox(0.5f, 0.9f, 0.5f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntityBat extends EntityCreature implements Animal { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java b/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java index 001f0516e..4e1a882bb 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityMooshroom.java @@ -19,6 +19,7 @@ public class EntityMooshroom extends EntityCreature implements Animal { setMooshroomType(MooshroomType.RED); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -28,7 +29,7 @@ public class EntityMooshroom extends EntityCreature implements Animal { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 16) { packet.writeByte((byte) 16); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java index bb5178d1f..bf3a4314e 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPig.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntityPig extends EntityCreature implements Animal { setBoundingBox(0.9f, 0.9f, 0.9f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntityPig extends EntityCreature implements Animal { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 16) { packet.writeByte((byte) 16); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java b/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java index f2f5987df..fbb59fc60 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityPolarBear.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntityPolarBear extends EntityCreature implements Animal { setBoundingBox(1.3f, 1.4f, 1.3f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntityPolarBear extends EntityCreature implements Animal { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 16) { packet.writeByte((byte) 16); diff --git a/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java b/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java index 99425c49c..0e2f426ba 100644 --- a/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java +++ b/src/main/java/net/minestom/server/entity/type/animal/EntityRabbit.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Animal; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntityRabbit extends EntityCreature implements Animal { setBoundingBox(0.4f, 0.5f, 0.4f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntityRabbit extends EntityCreature implements Animal { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 16) { packet.writeByte((byte) 16); diff --git a/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java b/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java index f907a4e80..b267e37aa 100644 --- a/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java +++ b/src/main/java/net/minestom/server/entity/type/decoration/EntityArmorStand.java @@ -11,6 +11,7 @@ import net.minestom.server.utils.Position; import net.minestom.server.utils.Vector; import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.item.ItemStackUtils; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -61,7 +62,7 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { boolean result = super.addViewer(player); syncEquipments(player.getPlayerConnection()); return result; @@ -72,6 +73,7 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler { return 0; } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -87,7 +89,7 @@ public class EntityArmorStand extends ObjectEntity implements EquipmentHandler { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 14) { packet.writeByte((byte) 14); diff --git a/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java b/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java index 814477ae5..e523035d9 100644 --- a/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java +++ b/src/main/java/net/minestom/server/entity/type/decoration/EntityItemFrame.java @@ -7,6 +7,7 @@ import net.minestom.server.utils.Position; import net.minestom.server.utils.Rotation; import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.item.ItemStackUtils; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -26,6 +27,7 @@ public class EntityItemFrame extends ObjectEntity { setGravity(0f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -36,7 +38,7 @@ public class EntityItemFrame extends ObjectEntity { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 7) { packet.writeByte((byte) 7); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java b/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java index 8507fa009..f74c025ab 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityBlaze.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -15,6 +16,7 @@ public class EntityBlaze extends EntityCreature implements Monster { setBoundingBox(0.6f, 1.8f, 0.6f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -24,7 +26,7 @@ public class EntityBlaze extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java b/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java index 9d2aa3271..2922f7aa5 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityCreeper.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -19,6 +20,7 @@ public class EntityCreeper extends EntityCreature implements Monster { setBoundingBox(0.6f, 1.7f, 0.6f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -28,7 +30,7 @@ public class EntityCreeper extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java b/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java index 20361fdfd..279f72234 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityGhast.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -18,6 +19,7 @@ public class EntityGhast extends EntityCreature implements Monster { setEyeHeight(2.6f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -27,7 +29,7 @@ public class EntityGhast extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java b/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java index c9c522005..a6ef4c608 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityGuardian.java @@ -6,6 +6,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -19,6 +20,7 @@ public class EntityGuardian extends EntityCreature implements Monster { setBoundingBox(0.85f, 0.85f, 0.85f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -29,7 +31,7 @@ public class EntityGuardian extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java b/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java index 604faa117..75569aa35 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityPhantom.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntityPhantom extends EntityCreature implements Monster { setBoundingBox(0.9f, 0.5f, 0.9f); // TODO change based on size } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntityPhantom extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java index f30f7ff0b..dda5a35ed 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySlime.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntitySlime extends EntityCreature implements Monster { setSize(1); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntitySlime extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java b/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java index a386ad983..f3246408a 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntitySpider.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -18,6 +19,7 @@ public class EntitySpider extends EntityCreature implements Monster { setEyeHeight(0.65f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -27,7 +29,7 @@ public class EntitySpider extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java b/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java index e84accb7f..ebeded4ca 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityWitch.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -18,6 +19,7 @@ public class EntityWitch extends EntityCreature implements Monster { setEyeHeight(1.62f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -27,7 +29,7 @@ public class EntityWitch extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 16) { packet.writeByte((byte) 16); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java index 3b2fca3cb..e69cbc98e 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombie.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -18,6 +19,7 @@ public class EntityZombie extends EntityCreature implements Monster { setBoundingBox(0.6f, 1.95f, 0.6f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -28,7 +30,7 @@ public class EntityZombie extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java index 11db65975..ca08f4623 100644 --- a/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java +++ b/src/main/java/net/minestom/server/entity/type/monster/EntityZombifiedPiglin.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Monster; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -18,6 +19,7 @@ public class EntityZombifiedPiglin extends EntityCreature implements Monster { setBoundingBox(0.6f, 1.95f, 0.6f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -28,7 +30,7 @@ public class EntityZombifiedPiglin extends EntityCreature implements Monster { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java index 7c8da9101..fe1f62cc2 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityAreaEffectCloud.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.ObjectEntity; import net.minestom.server.particle.Particle; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -26,6 +27,7 @@ public class EntityAreaEffectCloud extends ObjectEntity { }); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -38,7 +40,7 @@ public class EntityAreaEffectCloud extends ObjectEntity { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 7) { packet.writeByte((byte) 7); diff --git a/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java b/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java index 8e665fc48..18f47e0a9 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntityIronGolem.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Constructable; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntityIronGolem extends EntityCreature implements Constructable { setBoundingBox(1.4f, 2.7f, 1.4f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntityIronGolem extends EntityCreature implements Constructable { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java b/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java index 774be6850..d6dc91a69 100644 --- a/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java +++ b/src/main/java/net/minestom/server/entity/type/other/EntitySnowman.java @@ -5,6 +5,7 @@ import net.minestom.server.entity.EntityType; import net.minestom.server.entity.type.Constructable; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -17,6 +18,7 @@ public class EntitySnowman extends EntityCreature implements Constructable { setBoundingBox(0.7f, 1.9f, 0.7f); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -26,7 +28,7 @@ public class EntitySnowman extends EntityCreature implements Constructable { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 15) { packet.writeByte((byte) 15); diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java index ea44ddea1..87f5522dd 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityEyeOfEnder.java @@ -7,6 +7,7 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -18,6 +19,7 @@ public class EntityEyeOfEnder extends ObjectEntity implements Projectile { super(EntityType.EYE_OF_ENDER, spawnPosition); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -27,7 +29,7 @@ public class EntityEyeOfEnder extends ObjectEntity implements Projectile { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 7) { packet.writeByte((byte) 7); diff --git a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java index 8bd6356aa..e2d693da3 100644 --- a/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java +++ b/src/main/java/net/minestom/server/entity/type/projectile/EntityPotion.java @@ -6,6 +6,7 @@ import net.minestom.server.entity.type.Projectile; import net.minestom.server.item.ItemStack; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -19,6 +20,7 @@ public class EntityPotion extends ObjectEntity implements Projectile { setPotion(potion); } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -28,7 +30,7 @@ public class EntityPotion extends ObjectEntity implements Projectile { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 7) { packet.writeByte((byte) 7); diff --git a/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java b/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java index dfb3a0794..3261c9724 100644 --- a/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java +++ b/src/main/java/net/minestom/server/entity/type/vehicle/EntityBoat.java @@ -6,6 +6,7 @@ import net.minestom.server.entity.type.Vehicle; import net.minestom.server.utils.Position; import net.minestom.server.utils.binary.BinaryWriter; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; @@ -26,6 +27,7 @@ public class EntityBoat extends ObjectEntity implements Vehicle { return 0; } + @NotNull @Override public Consumer getMetadataConsumer() { return packet -> { @@ -39,7 +41,7 @@ public class EntityBoat extends ObjectEntity implements Vehicle { } @Override - protected void fillMetadataIndex(BinaryWriter packet, int index) { + protected void fillMetadataIndex(@NotNull BinaryWriter packet, int index) { super.fillMetadataIndex(packet, index); if (index == 10) { packet.writeByte((byte) 10); diff --git a/src/main/java/net/minestom/server/instance/Chunk.java b/src/main/java/net/minestom/server/instance/Chunk.java index 95b87af07..cd58c1ce8 100644 --- a/src/main/java/net/minestom/server/instance/Chunk.java +++ b/src/main/java/net/minestom/server/instance/Chunk.java @@ -27,6 +27,8 @@ import net.minestom.server.utils.player.PlayerUtils; import net.minestom.server.utils.validate.Check; import net.minestom.server.world.biomes.Biome; import net.minestom.server.world.biomes.BiomeManager; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; @@ -79,7 +81,7 @@ public abstract class Chunk implements Viewable, DataContainer { // Data protected Data data; - public Chunk(Instance instance, Biome[] biomes, int chunkX, int chunkZ, boolean shouldGenerate) { + public Chunk(@NotNull Instance instance, @Nullable Biome[] biomes, int chunkX, int chunkZ, boolean shouldGenerate) { this.instance = instance; this.chunkX = chunkX; this.chunkZ = chunkZ; @@ -114,7 +116,7 @@ public abstract class Chunk implements Viewable, DataContainer { * Warning: customBlockId cannot be 0 and needs to be valid since the update delay and method * will be retrieved from the associated {@link CustomBlock} object */ - public abstract void UNSAFE_setBlock(int x, int y, int z, short blockStateId, short customBlockId, Data data, boolean updatable); + public abstract void UNSAFE_setBlock(int x, int y, int z, short blockStateId, short customBlockId, @Nullable Data data, boolean updatable); /** * Executes a chunk tick. @@ -126,7 +128,7 @@ public abstract class Chunk implements Viewable, DataContainer { * @param time the time of the update in milliseconds * @param instance the {@link Instance} linked to this chunk */ - public abstract void tick(long time, Instance instance); + public abstract void tick(long time, @NotNull Instance instance); /** * Gets the block state id at a position. @@ -175,6 +177,7 @@ public abstract class Chunk implements Viewable, DataContainer { * @param index the block index * @return the {@link Data} at the block index, null if none */ + @Nullable public abstract Data getBlockData(int index); /** @@ -192,6 +195,7 @@ public abstract class Chunk implements Viewable, DataContainer { * * @return the block entities in this chunk */ + @NotNull public abstract Set getBlockEntities(); /** @@ -210,17 +214,18 @@ public abstract class Chunk implements Viewable, DataContainer { * @param reader the data reader * WARNING: the data will not necessary be read directly in the same thread, * be sure that the data is only used for this reading. - * @param callback the callback to execute once the chunk is done reading + * @param callback the optional callback to execute once the chunk is done reading * WARNING: this need to be called to notify the instance. * @see #getSerializedData() which is responsible for the serialized data given */ - public abstract void readChunk(BinaryReader reader, ChunkCallback callback); + public abstract void readChunk(@NotNull BinaryReader reader, @Nullable ChunkCallback callback); /** * Creates a {@link ChunkDataPacket} with this chunk data ready to be written. * * @return a new chunk data packet */ + @NotNull protected abstract ChunkDataPacket createFreshPacket(); /** @@ -395,6 +400,7 @@ public abstract class Chunk implements Viewable, DataContainer { * * @return a fresh non-full chunk data packet */ + @NotNull public ChunkDataPacket getFreshPartialDataPacket() { ChunkDataPacket fullDataPacket = createFreshPacket(); fullDataPacket.fullChunk = false; @@ -423,7 +429,7 @@ public abstract class Chunk implements Viewable, DataContainer { * @return true if the player has just been added to the viewer collection */ @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { final boolean result = this.viewers.add(player); // Send the chunk data & light packets to the player @@ -444,7 +450,7 @@ public abstract class Chunk implements Viewable, DataContainer { * @return true if the player has just been removed to the viewer collection */ @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { final boolean result = this.viewers.remove(player); // Remove from the viewable chunks set @@ -455,6 +461,7 @@ public abstract class Chunk implements Viewable, DataContainer { return result; } + @NotNull @Override public Set getViewers() { return Collections.unmodifiableSet(viewers); @@ -563,6 +570,7 @@ public abstract class Chunk implements Viewable, DataContainer { * @param section the chunk section to update * @return the {@link ChunkDataPacket} to update a single chunk section */ + @NotNull protected ChunkDataPacket getChunkSectionUpdatePacket(int section) { ChunkDataPacket chunkDataPacket = getFreshPartialDataPacket(); chunkDataPacket.fullChunk = false; diff --git a/src/main/java/net/minestom/server/instance/DynamicChunk.java b/src/main/java/net/minestom/server/instance/DynamicChunk.java index 9f7fe2b2d..1123488e5 100644 --- a/src/main/java/net/minestom/server/instance/DynamicChunk.java +++ b/src/main/java/net/minestom/server/instance/DynamicChunk.java @@ -23,6 +23,7 @@ import net.minestom.server.utils.time.CooldownUtils; import net.minestom.server.utils.time.UpdateOption; import net.minestom.server.utils.validate.Check; import net.minestom.server.world.biomes.Biome; +import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.Set; @@ -123,7 +124,7 @@ public class DynamicChunk extends Chunk { } @Override - public void tick(long time, Instance instance) { + public void tick(long time, @NotNull Instance instance) { if (updatableBlocks.isEmpty()) return; @@ -202,6 +203,7 @@ public class DynamicChunk extends Chunk { } } + @NotNull @Override public Set getBlockEntities() { return blockEntities; @@ -302,7 +304,7 @@ public class DynamicChunk extends Chunk { } @Override - public void readChunk(BinaryReader reader, ChunkCallback callback) { + public void readChunk(@NotNull BinaryReader reader, ChunkCallback callback) { // Check the buffer length final int length = reader.available(); Check.argCondition(length == 0, "The length of the buffer must be > 0"); @@ -385,6 +387,7 @@ public class DynamicChunk extends Chunk { }).schedule(); } + @NotNull @Override protected ChunkDataPacket createFreshPacket() { ChunkDataPacket fullDataPacket = new ChunkDataPacket(); diff --git a/src/main/java/net/minestom/server/instance/IChunkLoader.java b/src/main/java/net/minestom/server/instance/IChunkLoader.java index 8236f6662..a11fb2546 100644 --- a/src/main/java/net/minestom/server/instance/IChunkLoader.java +++ b/src/main/java/net/minestom/server/instance/IChunkLoader.java @@ -4,6 +4,8 @@ import net.minestom.server.MinecraftServer; import net.minestom.server.utils.callback.OptionalCallback; import net.minestom.server.utils.chunk.ChunkCallback; import net.minestom.server.utils.thread.MinestomThread; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.concurrent.ExecutorService; @@ -26,7 +28,7 @@ public interface IChunkLoader { * never called if the method returns false. Can be null. * @return true if the chunk loaded successfully, false otherwise */ - boolean loadChunk(Instance instance, int chunkX, int chunkZ, ChunkCallback callback); + boolean loadChunk(@NotNull Instance instance, int chunkX, int chunkZ, @Nullable ChunkCallback callback); /** * Saves a {@link Chunk} with an optional callback for when it is done. @@ -36,7 +38,7 @@ public interface IChunkLoader { * should be called even if the saving failed (you can throw an exception). * Can be null. */ - void saveChunk(Chunk chunk, Runnable callback); + void saveChunk(@NotNull Chunk chunk, @Nullable Runnable callback); /** * Saves multiple chunks with an optional callback for when it is done. @@ -48,7 +50,7 @@ public interface IChunkLoader { * should be called even if the saving failed (you can throw an exception). * Can be null. */ - default void saveChunks(Collection chunks, Runnable callback) { + default void saveChunks(@NotNull Collection chunks, @Nullable Runnable callback) { if (supportsParallelSaving()) { ExecutorService parallelSavingThreadPool = new MinestomThread(MinecraftServer.THREAD_COUNT_PARALLEL_CHUNK_SAVING, MinecraftServer.THREAD_NAME_PARALLEL_CHUNK_SAVING, true); chunks.forEach(c -> parallelSavingThreadPool.execute(() -> saveChunk(c, null))); diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java index 3a0644a13..f7142117a 100644 --- a/src/main/java/net/minestom/server/instance/Instance.java +++ b/src/main/java/net/minestom/server/instance/Instance.java @@ -30,6 +30,8 @@ import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.time.UpdateOption; import net.minestom.server.utils.validate.Check; import net.minestom.server.world.DimensionType; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -145,7 +147,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param callback optional consumer called after the chunk has been generated, * the returned chunk will never be null */ - public abstract void loadChunk(int chunkX, int chunkZ, ChunkCallback callback); + public abstract void loadChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback); /** * Loads the chunk if the chunk is already loaded or if @@ -156,7 +158,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param callback optional consumer called after the chunk has tried to be loaded, * contains a chunk if it is successful, null otherwise */ - public abstract void loadOptionalChunk(int chunkX, int chunkZ, ChunkCallback callback); + public abstract void loadOptionalChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback); /** * Schedules the removal of a {@link Chunk}, this method does not promise when it will be done. @@ -167,7 +169,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @param chunk the chunk to unload */ - public abstract void unloadChunk(Chunk chunk); + public abstract void unloadChunk(@NotNull Chunk chunk); /** * Gets the loaded {@link Chunk} at a position. @@ -178,6 +180,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param chunkZ the chunk Z * @return the chunk at the specified position, null if not loaded */ + @Nullable public abstract Chunk getChunk(int chunkX, int chunkZ); /** @@ -186,14 +189,14 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param chunk the {@link Chunk} to save * @param callback optional callback called when the {@link Chunk} is done saving */ - public abstract void saveChunkToStorage(Chunk chunk, Runnable callback); + public abstract void saveChunkToStorage(Chunk chunk, @Nullable Runnable callback); /** * Saves multiple chunks to permanent storage. * * @param callback optional callback called when the chunks are done saving */ - public abstract void saveChunksToStorage(Runnable callback); + public abstract void saveChunksToStorage(@Nullable Runnable callback); /** * Creates a new {@link BlockBatch} linked to this instance. @@ -256,7 +259,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param chunkZ the chunk X * @param callback the optional callback executed once the {@link Chunk} has been retrieved */ - protected abstract void retrieveChunk(int chunkX, int chunkZ, ChunkCallback callback); + protected abstract void retrieveChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback); /** * Called to generated a new {@link Chunk} from scratch. @@ -267,7 +270,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param chunkZ the chunk Z * @param callback the optional callback executed with the newly created {@link Chunk} */ - protected abstract void createChunk(int chunkX, int chunkZ, ChunkCallback callback); + protected abstract void createChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback); /** * When set to true, chunks will load automatically when requested. @@ -543,7 +546,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param position the chunk position * @param callback the optional callback to run when the chunk is loaded */ - public void loadChunk(Position position, ChunkCallback callback) { + public void loadChunk(Position position, @Nullable ChunkCallback callback) { final int chunkX = ChunkUtils.getChunkCoordinate((int) position.getX()); final int chunkZ = ChunkUtils.getChunkCoordinate((int) position.getZ()); loadChunk(chunkX, chunkZ, callback); @@ -556,7 +559,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param position the chunk position * @param callback the optional callback executed when the chunk is loaded (or with a null chunk if not) */ - public void loadOptionalChunk(Position position, ChunkCallback callback) { + public void loadOptionalChunk(Position position, @Nullable ChunkCallback callback) { final int chunkX = ChunkUtils.getChunkCoordinate((int) position.getX()); final int chunkZ = ChunkUtils.getChunkCoordinate((int) position.getZ()); loadOptionalChunk(chunkX, chunkZ, callback); @@ -606,7 +609,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param blockPosition the block position * @return the block state id at the position */ - public short getBlockStateId(BlockPosition blockPosition) { + public short getBlockStateId(@NotNull BlockPosition blockPosition) { return getBlockStateId(blockPosition.getX(), blockPosition.getY(), blockPosition.getZ()); } @@ -618,6 +621,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param z the Z position * @return the custom block object at the position, null if not any */ + @Nullable public CustomBlock getCustomBlock(int x, int y, int z) { final Chunk chunk = getChunkAt(x, z); Check.notNull(chunk, "The chunk at " + x + ":" + z + " is not loaded"); @@ -630,7 +634,8 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param blockPosition the block position * @return the custom block object at the position, null if not any */ - public CustomBlock getCustomBlock(BlockPosition blockPosition) { + @Nullable + public CustomBlock getCustomBlock(@NotNull BlockPosition blockPosition) { return getCustomBlock(blockPosition.getX(), blockPosition.getY(), blockPosition.getZ()); } @@ -642,7 +647,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param actionParam * @see BlockActionPacket for the action id & param */ - public void sendBlockAction(BlockPosition blockPosition, byte actionId, byte actionParam) { + public void sendBlockAction(@NotNull BlockPosition blockPosition, byte actionId, byte actionParam) { final short blockStateId = getBlockStateId(blockPosition); final Block block = Block.fromStateId(blockStateId); @@ -677,7 +682,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param blockPosition the block position * @return the block data at the position, null if not any */ - public Data getBlockData(BlockPosition blockPosition) { + public Data getBlockData(@NotNull BlockPosition blockPosition) { return getBlockData(blockPosition.getX(), blockPosition.getY(), blockPosition.getZ()); } @@ -689,7 +694,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param z the Z position * @param data the data to be set, can be null */ - public void setBlockData(int x, int y, int z, Data data) { + public void setBlockData(int x, int y, int z, @Nullable Data data) { final Chunk chunk = getChunkAt(x, z); Check.notNull(chunk, "The chunk at " + x + ":" + z + " is not loaded"); synchronized (chunk) { @@ -703,7 +708,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param blockPosition the block position * @param data the data to be set, can be null */ - public void setBlockData(BlockPosition blockPosition, Data data) { + public void setBlockData(@NotNull BlockPosition blockPosition, Data data) { setBlockData(blockPosition.getX(), (byte) blockPosition.getY(), blockPosition.getZ(), data); } @@ -714,6 +719,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param z the Z position * @return the chunk at the given position, null if not loaded */ + @Nullable public Chunk getChunkAt(float x, float z) { final int chunkX = ChunkUtils.getChunkCoordinate((int) x); final int chunkZ = ChunkUtils.getChunkCoordinate((int) z); @@ -737,7 +743,8 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param blockPosition the chunk position * @return the chunk at the given position, null if not loaded */ - public Chunk getChunkAt(BlockPosition blockPosition) { + @Nullable + public Chunk getChunkAt(@NotNull BlockPosition blockPosition) { return getChunkAt(blockPosition.getX(), blockPosition.getZ()); } @@ -747,7 +754,8 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param position the chunk position * @return the chunk at the given position, null if not loaded */ - public Chunk getChunkAt(Position position) { + @Nullable + public Chunk getChunkAt(@NotNull Position position) { return getChunkAt(position.getX(), position.getZ()); } @@ -756,7 +764,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @param chunk the chunk to save */ - public void saveChunkToStorage(Chunk chunk) { + public void saveChunkToStorage(@NotNull Chunk chunk) { saveChunkToStorage(chunk, null); } @@ -772,6 +780,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @return the instance unique id */ + @NotNull public UUID getUniqueId() { return uniqueId; } @@ -782,7 +791,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta } @Override - public void setData(Data data) { + public void setData(@Nullable Data data) { this.data = data; } @@ -801,7 +810,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @param entity the entity to add */ - public void addEntity(Entity entity) { + public void addEntity(@NotNull Entity entity) { final Instance lastInstance = entity.getInstance(); if (lastInstance != null && lastInstance != this) { lastInstance.removeEntity(entity); // If entity is in another instance, remove it from there and add it to this @@ -844,7 +853,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @param entity the entity to remove */ - public void removeEntity(Entity entity) { + public void removeEntity(@NotNull Entity entity) { final Instance entityInstance = entity.getInstance(); if (entityInstance != this) return; @@ -868,7 +877,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param entity the entity to add * @param chunk the chunk where the entity will be added */ - public void addEntityToChunk(Entity entity, Chunk chunk) { + public void addEntityToChunk(@NotNull Entity entity, @NotNull Chunk chunk) { Check.notNull(chunk, "The chunk " + chunk + " is not loaded, you can make it automatic by using Instance#enableAutoChunkLoad(true)"); Check.argCondition(!chunk.isLoaded(), "Chunk " + chunk + " has been unloaded previously"); @@ -899,7 +908,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param entity the entity to remove * @param chunk the chunk where the entity will be removed */ - public void removeEntityFromChunk(Entity entity, Chunk chunk) { + public void removeEntityFromChunk(@NotNull Entity entity, @NotNull Chunk chunk) { synchronized (chunkEntities) { if (chunk != null) { final long chunkIndex = ChunkUtils.getChunkIndex(chunk.getChunkX(), chunk.getChunkZ()); @@ -925,13 +934,14 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta } } + @NotNull private Set getEntitiesInChunk(long index) { return chunkEntities.computeIfAbsent(index, i -> new CopyOnWriteArraySet<>()); } /** * Schedules a block update at a given {@link BlockPosition}. - * Does nothing if no {@link CustomBlock} is present at 'position'. + * Does nothing if no {@link CustomBlock} is present at {@code position}. *

* Cancelled if the block changes between this call and the actual update. * @@ -939,7 +949,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param unit in what unit is the time expressed * @param position the location of the block to update */ - public abstract void scheduleUpdate(int time, TimeUnit unit, BlockPosition position); + public abstract void scheduleUpdate(int time, @NotNull TimeUnit unit, @NotNull BlockPosition position); /** * Performs a single tick in the instance, including scheduled tasks from {@link #scheduleNextTick(Consumer)}. @@ -999,7 +1009,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * @param additionalData data to pass to the explosion supplier * @throws IllegalStateException If no {@link ExplosionSupplier} was supplied */ - public void explode(float centerX, float centerY, float centerZ, float strength, Data additionalData) { + public void explode(float centerX, float centerY, float centerZ, float strength, @Nullable Data additionalData) { final ExplosionSupplier explosionSupplier = getExplosionSupplier(); Check.stateCondition(explosionSupplier == null, "Tried to create an explosion with no explosion supplier"); final Explosion explosion = explosionSupplier.createExplosion(centerX, centerY, centerZ, strength, additionalData); @@ -1011,6 +1021,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @return the instance explosion supplier, null if none was provided */ + @Nullable public ExplosionSupplier getExplosionSupplier() { return explosionSupplier; } @@ -1020,7 +1031,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @param supplier the explosion supplier */ - public void setExplosionSupplier(ExplosionSupplier supplier) { + public void setExplosionSupplier(@Nullable ExplosionSupplier supplier) { this.explosionSupplier = supplier; } @@ -1031,6 +1042,7 @@ public abstract class Instance implements BlockModifier, EventHandler, DataConta * * @return the instance space */ + @NotNull public PFInstanceSpace getInstanceSpace() { return instanceSpace; } diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index ae22743d1..84892e372 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -29,6 +29,8 @@ import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.validate.Check; import net.minestom.server.world.DimensionType; import net.minestom.server.world.biomes.Biome; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -393,7 +395,7 @@ public class InstanceContainer extends Instance { } @Override - public void loadChunk(int chunkX, int chunkZ, ChunkCallback callback) { + public void loadChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { final Chunk chunk = getChunk(chunkX, chunkZ); if (chunk != null) { // Chunk already loaded @@ -405,7 +407,7 @@ public class InstanceContainer extends Instance { } @Override - public void loadOptionalChunk(int chunkX, int chunkZ, ChunkCallback callback) { + public void loadOptionalChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { final Chunk chunk = getChunk(chunkX, chunkZ); if (chunk != null) { // Chunk already loaded @@ -422,7 +424,7 @@ public class InstanceContainer extends Instance { } @Override - public void unloadChunk(Chunk chunk) { + public void unloadChunk(@NotNull Chunk chunk) { // Already unloaded chunk if (!ChunkUtils.isLoaded(chunk)) { return; @@ -445,9 +447,9 @@ public class InstanceContainer extends Instance { *

* WARNING: {@link #getData()} needs to be a {@link SerializableData} in order to be saved. * - * @param callback the callback once the saving is done. Can be null. + * @param callback the optional callback once the saving is done */ - public void saveInstance(Runnable callback) { + public void saveInstance(@Nullable Runnable callback) { Check.notNull(getStorageLocation(), "You cannot save the instance if no StorageLocation has been defined"); this.storageLocation.set(UUID_KEY, getUniqueId(), UUID.class); @@ -493,7 +495,7 @@ public class InstanceContainer extends Instance { } @Override - protected void retrieveChunk(int chunkX, int chunkZ, ChunkCallback callback) { + protected void retrieveChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { final boolean loaded = chunkLoader.loadChunk(this, chunkX, chunkZ, chunk -> { cacheChunk(chunk); UPDATE_MANAGER.signalChunkLoad(this, chunkX, chunkZ); @@ -511,7 +513,7 @@ public class InstanceContainer extends Instance { } @Override - protected void createChunk(int chunkX, int chunkZ, ChunkCallback callback) { + protected void createChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { Biome[] biomes = new Biome[Chunk.BIOME_COUNT]; if (chunkGenerator == null) { Arrays.fill(biomes, MinecraftServer.getBiomeManager().getById(0)); @@ -566,7 +568,7 @@ public class InstanceContainer extends Instance { * @param chunkSupplier the new {@link ChunkSupplier} of this instance, chunks need to be non-null * @throws NullPointerException if {@code chunkSupplier} is null */ - public void setChunkSupplier(ChunkSupplier chunkSupplier) { + public void setChunkSupplier(@NotNull ChunkSupplier chunkSupplier) { Check.notNull(chunkSupplier, "The chunk supplier cannot be null, you can use a StaticChunk for a lightweight implementation"); this.chunkSupplier = chunkSupplier; } @@ -676,7 +678,7 @@ public class InstanceContainer extends Instance { } @Override - public void scheduleUpdate(int time, TimeUnit unit, BlockPosition position) { + public void scheduleUpdate(int time, @NotNull TimeUnit unit, @NotNull BlockPosition position) { final CustomBlock toUpdate = getCustomBlock(position); if (toUpdate == null) { return; diff --git a/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java b/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java index 33d819798..d358cc5d4 100644 --- a/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java +++ b/src/main/java/net/minestom/server/instance/MinestomBasicChunkLoader.java @@ -5,6 +5,7 @@ import net.minestom.server.utils.binary.BinaryReader; import net.minestom.server.utils.callback.OptionalCallback; import net.minestom.server.utils.chunk.ChunkCallback; import net.minestom.server.utils.chunk.ChunkSupplier; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,7 +37,7 @@ public class MinestomBasicChunkLoader implements IChunkLoader { } @Override - public void saveChunk(Chunk chunk, Runnable callback) { + public void saveChunk(@NotNull Chunk chunk, Runnable callback) { final StorageLocation storageLocation = instanceContainer.getStorageLocation(); if (storageLocation == null) { callback.run(); @@ -64,7 +65,7 @@ public class MinestomBasicChunkLoader implements IChunkLoader { } @Override - public boolean loadChunk(Instance instance, int chunkX, int chunkZ, ChunkCallback callback) { + public boolean loadChunk(@NotNull Instance instance, int chunkX, int chunkZ, ChunkCallback callback) { final StorageLocation storageLocation = instanceContainer.getStorageLocation(); final byte[] bytes = storageLocation == null ? null : storageLocation.get(getChunkKey(chunkX, chunkZ)); diff --git a/src/main/java/net/minestom/server/instance/SharedInstance.java b/src/main/java/net/minestom/server/instance/SharedInstance.java index 2376f79a1..19f49eeb8 100644 --- a/src/main/java/net/minestom/server/instance/SharedInstance.java +++ b/src/main/java/net/minestom/server/instance/SharedInstance.java @@ -9,6 +9,8 @@ import net.minestom.server.utils.BlockPosition; import net.minestom.server.utils.Position; import net.minestom.server.utils.chunk.ChunkCallback; import net.minestom.server.utils.time.TimeUnit; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.UUID; @@ -37,17 +39,17 @@ public class SharedInstance extends Instance { } @Override - public void loadChunk(int chunkX, int chunkZ, ChunkCallback callback) { + public void loadChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { this.instanceContainer.loadChunk(chunkX, chunkZ, callback); } @Override - public void loadOptionalChunk(int chunkX, int chunkZ, ChunkCallback callback) { + public void loadOptionalChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { this.instanceContainer.loadOptionalChunk(chunkX, chunkZ, callback); } @Override - public void unloadChunk(Chunk chunk) { + public void unloadChunk(@NotNull Chunk chunk) { instanceContainer.unloadChunk(chunk); } @@ -57,12 +59,12 @@ public class SharedInstance extends Instance { } @Override - public void saveChunkToStorage(Chunk chunk, Runnable callback) { + public void saveChunkToStorage(Chunk chunk, @Nullable Runnable callback) { this.instanceContainer.saveChunkToStorage(chunk, callback); } @Override - public void saveChunksToStorage(Runnable callback) { + public void saveChunksToStorage(@Nullable Runnable callback) { instanceContainer.saveChunksToStorage(callback); } @@ -102,7 +104,7 @@ public class SharedInstance extends Instance { } @Override - public void retrieveChunk(int chunkX, int chunkZ, ChunkCallback callback) { + public void retrieveChunk(int chunkX, int chunkZ, @Nullable ChunkCallback callback) { this.instanceContainer.retrieveChunk(chunkX, chunkZ, callback); } @@ -142,12 +144,12 @@ public class SharedInstance extends Instance { } @Override - public void scheduleUpdate(int time, TimeUnit unit, BlockPosition position) { + public void scheduleUpdate(int time, @NotNull TimeUnit unit, @NotNull BlockPosition position) { this.instanceContainer.scheduleUpdate(time, unit, position); } /** - * Gets the {@link InstanceContainer} from where this instance takes its {@link Chunk} from. + * Gets the {@link InstanceContainer} from where this instance takes its chunks from. * * @return the associated {@link InstanceContainer} */ diff --git a/src/main/java/net/minestom/server/instance/StaticChunk.java b/src/main/java/net/minestom/server/instance/StaticChunk.java index 0d9745b34..8083c311a 100644 --- a/src/main/java/net/minestom/server/instance/StaticChunk.java +++ b/src/main/java/net/minestom/server/instance/StaticChunk.java @@ -5,9 +5,12 @@ import net.minestom.server.data.Data; import net.minestom.server.instance.block.BlockProvider; import net.minestom.server.network.packet.server.play.ChunkDataPacket; import net.minestom.server.utils.binary.BinaryReader; +import net.minestom.server.utils.callback.OptionalCallback; import net.minestom.server.utils.chunk.ChunkCallback; import net.minestom.server.utils.chunk.ChunkUtils; import net.minestom.server.world.biomes.Biome; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.Set; @@ -36,7 +39,7 @@ public class StaticChunk extends Chunk { } @Override - public void tick(long time, Instance instance) { + public void tick(long time, @NotNull Instance instance) { //noop } @@ -71,6 +74,7 @@ public class StaticChunk extends Chunk { //noop } + @NotNull @Override public Set getBlockEntities() { return new HashSet<>(); @@ -82,10 +86,11 @@ public class StaticChunk extends Chunk { } @Override - public void readChunk(BinaryReader reader, ChunkCallback callback) { - callback.accept(this); + public void readChunk(@NotNull BinaryReader reader, @Nullable ChunkCallback callback) { + OptionalCallback.execute(callback, this); } + @NotNull @Override protected ChunkDataPacket createFreshPacket() { ChunkDataPacket fullDataPacket = new ChunkDataPacket(); diff --git a/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java b/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java index ad8ac4e7e..15eeab98e 100644 --- a/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java +++ b/src/main/java/net/minestom/server/instance/batch/ChunkBatch.java @@ -6,6 +6,7 @@ import net.minestom.server.instance.*; import net.minestom.server.instance.block.CustomBlock; import net.minestom.server.utils.block.CustomBlockUtils; import net.minestom.server.utils.chunk.ChunkCallback; +import org.jetbrains.annotations.Nullable; import java.util.List; @@ -57,7 +58,7 @@ public class ChunkBatch implements InstanceBatch { } } - public void flushChunkGenerator(ChunkGenerator chunkGenerator, ChunkCallback callback) { + public void flushChunkGenerator(ChunkGenerator chunkGenerator, @Nullable ChunkCallback callback) { BLOCK_BATCH_POOL.execute(() -> { final List populators = chunkGenerator.getPopulators(); final boolean hasPopulator = populators != null && !populators.isEmpty(); @@ -84,7 +85,7 @@ public class ChunkBatch implements InstanceBatch { * * @param callback the callback to execute once the blocks are placed */ - public void flush(ChunkCallback callback) { + public void flush(@Nullable ChunkCallback callback) { BLOCK_BATCH_POOL.execute(() -> singleThreadFlush(callback, true)); } @@ -95,7 +96,7 @@ public class ChunkBatch implements InstanceBatch { * * @param callback the callback to execute once the blocks are placed */ - public void unsafeFlush(ChunkCallback callback) { + public void unsafeFlush(@Nullable ChunkCallback callback) { BLOCK_BATCH_POOL.execute(() -> singleThreadFlush(callback, false)); } @@ -114,7 +115,7 @@ public class ChunkBatch implements InstanceBatch { * @param callback the callback to execute once the blocks are placed * @param safeCallback true to run the callback in the instance update thread, otherwise run in the current one */ - private void singleThreadFlush(ChunkCallback callback, boolean safeCallback) { + private void singleThreadFlush(@Nullable ChunkCallback callback, boolean safeCallback) { synchronized (chunk) { if (!chunk.isLoaded()) return; @@ -145,7 +146,7 @@ public class ChunkBatch implements InstanceBatch { private final short customBlockId; private final Data data; - private BlockData(int x, int y, int z, short blockStateId, short customBlockId, Data data) { + private BlockData(int x, int y, int z, short blockStateId, short customBlockId, @Nullable Data data) { this.x = x; this.y = y; this.z = z; diff --git a/src/main/java/net/minestom/server/inventory/Inventory.java b/src/main/java/net/minestom/server/inventory/Inventory.java index 08de92f8e..851f50cc1 100644 --- a/src/main/java/net/minestom/server/inventory/Inventory.java +++ b/src/main/java/net/minestom/server/inventory/Inventory.java @@ -19,6 +19,7 @@ import net.minestom.server.utils.MathUtils; import net.minestom.server.utils.inventory.PlayerInventoryUtils; import net.minestom.server.utils.item.ItemStackUtils; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.Collections; @@ -238,20 +239,21 @@ public class Inventory implements InventoryModifier, InventoryClickHandler, View sendSlotRefresh(slot, getItemStack(slot)); } + @NotNull @Override public Set getViewers() { return Collections.unmodifiableSet(viewers); } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { final boolean result = this.viewers.add(player); update(player); return result; } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { final boolean result = this.viewers.remove(player); this.cursorPlayersItem.remove(player); this.clickProcessor.clearCache(player); diff --git a/src/main/java/net/minestom/server/item/metadata/CompassMeta.java b/src/main/java/net/minestom/server/item/metadata/CompassMeta.java index b3ba94e26..32f3f53d4 100644 --- a/src/main/java/net/minestom/server/item/metadata/CompassMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/CompassMeta.java @@ -1,5 +1,6 @@ package net.minestom.server.item.metadata; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; public class CompassMeta implements ItemMeta { @@ -54,7 +55,7 @@ public class CompassMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof CompassMeta)) return false; CompassMeta compassMeta = (CompassMeta) itemMeta; @@ -64,7 +65,7 @@ public class CompassMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("LodestoneTracked")) { this.lodestoneTracked = compound.getByte("LodestoneTracked") == 1; // TODO get boolean @@ -81,7 +82,7 @@ public class CompassMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { compound.setByte("LodestoneTracked", (byte) (lodestoneTracked ? 1 : 0)); if(lodestoneDimension != null) { compound.setString("LodestoneDimension", lodestoneDimension); @@ -96,6 +97,7 @@ public class CompassMeta implements ItemMeta { } } + @NotNull @Override public ItemMeta clone() { CompassMeta compassMeta = new CompassMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java b/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java index 381e4bd0d..0d1e2374f 100644 --- a/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java @@ -6,6 +6,7 @@ import net.minestom.server.registry.Registries; import net.minestom.server.utils.NBTUtils; import net.minestom.server.utils.item.ItemStackUtils; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTList; import org.jglrxavpok.hephaistos.nbt.NBTTypes; @@ -106,7 +107,7 @@ public class CrossbowMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof CrossbowMeta)) return false; @@ -125,7 +126,7 @@ public class CrossbowMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("ChargedProjectiles")) { final NBTList projectilesList = compound.getList("ChargedProjectiles"); int index = 0; @@ -158,7 +159,7 @@ public class CrossbowMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (projectile1 != null || projectile2 != null || projectile3 != null) { NBTList chargedProjectiles = new NBTList<>(NBTTypes.TAG_Compound); if (projectile1 != null) { @@ -178,6 +179,7 @@ public class CrossbowMeta implements ItemMeta { } } + @NotNull @Override public ItemMeta clone() { CrossbowMeta crossbowMeta = new CrossbowMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java b/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java index 221dcafc7..5a33458d5 100644 --- a/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java @@ -2,6 +2,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.item.Enchantment; import net.minestom.server.utils.NBTUtils; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import java.util.Collections; @@ -18,6 +19,7 @@ public class EnchantedBookMeta implements ItemMeta { * * @return an unmodifiable map containing the item stored enchantments */ + @NotNull public Map getStoredEnchantmentMap() { return Collections.unmodifiableMap(storedEnchantmentMap); } @@ -28,7 +30,7 @@ public class EnchantedBookMeta implements ItemMeta { * @param enchantment the enchantment type * @param level the enchantment level */ - public void setStoredEnchantment(Enchantment enchantment, short level) { + public void setStoredEnchantment(@NotNull Enchantment enchantment, short level) { if (level < 1) { removeStoredEnchantment(enchantment); return; @@ -42,7 +44,7 @@ public class EnchantedBookMeta implements ItemMeta { * * @param enchantment the enchantment type */ - public void removeStoredEnchantment(Enchantment enchantment) { + public void removeStoredEnchantment(@NotNull Enchantment enchantment) { this.storedEnchantmentMap.remove(enchantment); } @@ -52,7 +54,7 @@ public class EnchantedBookMeta implements ItemMeta { * @param enchantment the enchantment type * @return the stored enchantment level, 0 if not present */ - public int getStoredEnchantmentLevel(Enchantment enchantment) { + public int getStoredEnchantmentLevel(@NotNull Enchantment enchantment) { return this.storedEnchantmentMap.getOrDefault(enchantment, (short) 0); } @@ -62,25 +64,26 @@ public class EnchantedBookMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { return itemMeta instanceof EnchantedBookMeta && ((EnchantedBookMeta) itemMeta).storedEnchantmentMap.equals(storedEnchantmentMap); } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("StoredEnchantments")) { NBTUtils.loadEnchantments(compound.getList("StoredEnchantments"), this::setStoredEnchantment); } } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (!storedEnchantmentMap.isEmpty()) { NBTUtils.writeEnchant(compound, "StoredEnchantments", storedEnchantmentMap); } } + @NotNull @Override public ItemMeta clone() { EnchantedBookMeta enchantedBookMeta = new EnchantedBookMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java b/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java index 738ef03fc..5b458e98d 100644 --- a/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java @@ -1,5 +1,6 @@ package net.minestom.server.item.metadata; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; public class FireworkMeta implements ItemMeta { @@ -19,20 +20,21 @@ public class FireworkMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { return false; } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { } + @NotNull @Override public ItemMeta clone() { return null; diff --git a/src/main/java/net/minestom/server/item/metadata/ItemMeta.java b/src/main/java/net/minestom/server/item/metadata/ItemMeta.java index 23358c954..49f0543db 100644 --- a/src/main/java/net/minestom/server/item/metadata/ItemMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/ItemMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.item.ItemStack; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; /** @@ -23,7 +24,7 @@ public interface ItemMeta { * @param itemMeta the second item meta to check * @return true if the two meta are similar, false otherwise */ - boolean isSimilar(ItemMeta itemMeta); + boolean isSimilar(@NotNull ItemMeta itemMeta); /** * Reads nbt data from a compound. @@ -33,14 +34,14 @@ public interface ItemMeta { * * @param compound the compound containing the data */ - void read(NBTCompound compound); + void read(@NotNull NBTCompound compound); /** * Writes nbt data to a compound. * * @param compound the compound receiving the item meta data */ - void write(NBTCompound compound); + void write(@NotNull NBTCompound compound); /** * Clones this item meta. @@ -49,6 +50,7 @@ public interface ItemMeta { * * @return the cloned item meta */ + @NotNull ItemMeta clone(); } diff --git a/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java b/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java index 1f4416907..35d2e0057 100644 --- a/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.chat.ChatColor; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; public class LeatherArmorMeta implements ItemMeta { @@ -73,7 +74,7 @@ public class LeatherArmorMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof LeatherArmorMeta)) return false; final LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) itemMeta; @@ -84,7 +85,7 @@ public class LeatherArmorMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("display")) { final NBTCompound nbtCompound = compound.getCompound("display"); if (nbtCompound.containsKey("color")) { @@ -97,7 +98,7 @@ public class LeatherArmorMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (modified) { NBTCompound displayCompound; if (!compound.containsKey("display")) { @@ -110,6 +111,7 @@ public class LeatherArmorMeta implements ItemMeta { } } + @NotNull @Override public ItemMeta clone() { LeatherArmorMeta leatherArmorMeta = new LeatherArmorMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/MapMeta.java b/src/main/java/net/minestom/server/item/metadata/MapMeta.java index 901261e25..cbcd4ce68 100644 --- a/src/main/java/net/minestom/server/item/metadata/MapMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/MapMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.chat.ChatColor; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTList; import org.jglrxavpok.hephaistos.nbt.NBTTypes; @@ -103,7 +104,7 @@ public class MapMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof MapMeta)) return false; @@ -115,7 +116,7 @@ public class MapMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("map")) { this.mapId = compound.getAsInt("map"); } @@ -160,7 +161,7 @@ public class MapMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { compound.setInt("map", mapId); compound.setInt("map_scale_direction", mapScaleDirection); @@ -191,6 +192,7 @@ public class MapMeta implements ItemMeta { } } + @NotNull @Override public ItemMeta clone() { MapMeta mapMeta = new MapMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java b/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java index 97a50b83c..a545f2c01 100644 --- a/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.entity.PlayerSkin; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; public class PlayerHeadMeta implements ItemMeta { @@ -14,7 +15,7 @@ public class PlayerHeadMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof PlayerHeadMeta)) return false; final PlayerHeadMeta playerHeadMeta = (PlayerHeadMeta) itemMeta; @@ -22,15 +23,16 @@ public class PlayerHeadMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { } + @NotNull @Override public ItemMeta clone() { return null; diff --git a/src/main/java/net/minestom/server/item/metadata/PotionMeta.java b/src/main/java/net/minestom/server/item/metadata/PotionMeta.java index f2d30e7e6..ca6de6db9 100644 --- a/src/main/java/net/minestom/server/item/metadata/PotionMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/PotionMeta.java @@ -4,6 +4,7 @@ import net.minestom.server.chat.ChatColor; import net.minestom.server.potion.CustomPotionEffect; import net.minestom.server.potion.PotionType; import net.minestom.server.registry.Registries; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTList; import org.jglrxavpok.hephaistos.nbt.NBTTypes; @@ -78,7 +79,7 @@ public class PotionMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof PotionMeta)) return false; PotionMeta potionMeta = (PotionMeta) itemMeta; @@ -91,7 +92,7 @@ public class PotionMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("Potion")) { this.potionType = Registries.getPotionType(compound.getString("Potion")); } @@ -120,7 +121,7 @@ public class PotionMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (potionType != null) { compound.setString("Potion", potionType.getNamespaceID()); } @@ -149,6 +150,7 @@ public class PotionMeta implements ItemMeta { } + @NotNull @Override public ItemMeta clone() { PotionMeta potionMeta = new PotionMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java b/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java index 1ae6757ee..910ae3680 100644 --- a/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java @@ -1,6 +1,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.entity.EntityType; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; // TODO for which item @@ -14,7 +15,7 @@ public class SpawnEggMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof SpawnEggMeta)) return false; final SpawnEggMeta spawnEggMeta = (SpawnEggMeta) itemMeta; @@ -22,14 +23,14 @@ public class SpawnEggMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("EntityTag")) { // TODO } } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (!hasNbt()) return; NBTCompound entityCompound = new NBTCompound(); @@ -39,6 +40,7 @@ public class SpawnEggMeta implements ItemMeta { } + @NotNull @Override public ItemMeta clone() { SpawnEggMeta spawnEggMeta = new SpawnEggMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java b/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java index 05f754aae..206a29fdc 100644 --- a/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java @@ -1,5 +1,6 @@ package net.minestom.server.item.metadata; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTList; import org.jglrxavpok.hephaistos.nbt.NBTString; @@ -37,7 +38,7 @@ public class WritableBookMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof WritableBookMeta)) return false; final WritableBookMeta writableBookMeta = (WritableBookMeta) itemMeta; @@ -45,7 +46,7 @@ public class WritableBookMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("pages")) { final NBTList list = compound.getList("pages"); for (NBTString page : list) { @@ -55,7 +56,7 @@ public class WritableBookMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (!pages.isEmpty()) { NBTList list = new NBTList<>(NBTTypes.TAG_String); for (String page : pages) { @@ -65,6 +66,7 @@ public class WritableBookMeta implements ItemMeta { } } + @NotNull @Override public ItemMeta clone() { WritableBookMeta writableBookMeta = new WritableBookMeta(); diff --git a/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java b/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java index c567d4253..787701324 100644 --- a/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java @@ -2,6 +2,7 @@ package net.minestom.server.item.metadata; import net.minestom.server.chat.ChatParser; import net.minestom.server.chat.ColoredText; +import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTList; import org.jglrxavpok.hephaistos.nbt.NBTString; @@ -118,7 +119,7 @@ public class WrittenBookMeta implements ItemMeta { } @Override - public boolean isSimilar(ItemMeta itemMeta) { + public boolean isSimilar(@NotNull ItemMeta itemMeta) { if (!(itemMeta instanceof WrittenBookMeta)) return false; final WrittenBookMeta writtenBookMeta = (WrittenBookMeta) itemMeta; @@ -130,7 +131,7 @@ public class WrittenBookMeta implements ItemMeta { } @Override - public void read(NBTCompound compound) { + public void read(@NotNull NBTCompound compound) { if (compound.containsKey("resolved")) { this.resolved = compound.getByte("resolved") == 1; } @@ -154,7 +155,7 @@ public class WrittenBookMeta implements ItemMeta { } @Override - public void write(NBTCompound compound) { + public void write(@NotNull NBTCompound compound) { if (resolved) { compound.setByte("resolved", (byte) 1); } @@ -176,6 +177,7 @@ public class WrittenBookMeta implements ItemMeta { } } + @NotNull @Override public ItemMeta clone() { WrittenBookMeta writtenBookMeta = new WrittenBookMeta(); diff --git a/src/main/java/net/minestom/server/scoreboard/BelowNameTag.java b/src/main/java/net/minestom/server/scoreboard/BelowNameTag.java index 03210fc64..761dca843 100644 --- a/src/main/java/net/minestom/server/scoreboard/BelowNameTag.java +++ b/src/main/java/net/minestom/server/scoreboard/BelowNameTag.java @@ -3,6 +3,7 @@ package net.minestom.server.scoreboard; import net.minestom.server.entity.Player; import net.minestom.server.network.packet.server.play.ScoreboardObjectivePacket; import net.minestom.server.network.player.PlayerConnection; +import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.Set; @@ -41,7 +42,7 @@ public class BelowNameTag implements Scoreboard { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { boolean result = this.viewers.add(player); PlayerConnection connection = player.getPlayerConnection(); @@ -56,7 +57,7 @@ public class BelowNameTag implements Scoreboard { } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { boolean result = this.viewers.remove(player); PlayerConnection connection = player.getPlayerConnection(); @@ -68,6 +69,7 @@ public class BelowNameTag implements Scoreboard { return result; } + @NotNull @Override public Set getViewers() { return Collections.unmodifiableSet(viewers); diff --git a/src/main/java/net/minestom/server/scoreboard/Sidebar.java b/src/main/java/net/minestom/server/scoreboard/Sidebar.java index 8d9189f8a..9e150b978 100644 --- a/src/main/java/net/minestom/server/scoreboard/Sidebar.java +++ b/src/main/java/net/minestom/server/scoreboard/Sidebar.java @@ -10,6 +10,7 @@ import net.minestom.server.network.packet.server.play.TeamsPacket; import net.minestom.server.network.packet.server.play.UpdateScorePacket; import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.NotNull; import java.util.Iterator; import java.util.Set; @@ -177,7 +178,7 @@ public class Sidebar implements Scoreboard { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { final boolean result = this.viewers.add(player); PlayerConnection playerConnection = player.getPlayerConnection(); @@ -195,7 +196,7 @@ public class Sidebar implements Scoreboard { } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { final boolean result = this.viewers.remove(player); PlayerConnection playerConnection = player.getPlayerConnection(); ScoreboardObjectivePacket scoreboardObjectivePacket = this.getDestructionObjectivePacket(); @@ -208,6 +209,7 @@ public class Sidebar implements Scoreboard { return result; } + @NotNull @Override public Set getViewers() { return viewers; diff --git a/src/main/java/net/minestom/server/scoreboard/TabList.java b/src/main/java/net/minestom/server/scoreboard/TabList.java index 7e9192b13..dd8acfcba 100644 --- a/src/main/java/net/minestom/server/scoreboard/TabList.java +++ b/src/main/java/net/minestom/server/scoreboard/TabList.java @@ -3,6 +3,7 @@ package net.minestom.server.scoreboard; import net.minestom.server.entity.Player; import net.minestom.server.network.packet.server.play.ScoreboardObjectivePacket; import net.minestom.server.network.player.PlayerConnection; +import org.jetbrains.annotations.NotNull; import java.util.Collections; import java.util.Set; @@ -49,7 +50,7 @@ public class TabList implements Scoreboard { } @Override - public boolean addViewer(Player player) { + public boolean addViewer(@NotNull Player player) { boolean result = this.viewers.add(player); PlayerConnection connection = player.getPlayerConnection(); @@ -62,7 +63,7 @@ public class TabList implements Scoreboard { } @Override - public boolean removeViewer(Player player) { + public boolean removeViewer(@NotNull Player player) { boolean result = this.viewers.remove(player); PlayerConnection connection = player.getPlayerConnection(); @@ -73,6 +74,7 @@ public class TabList implements Scoreboard { return result; } + @NotNull @Override public Set getViewers() { return Collections.unmodifiableSet(this.viewers);