diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java index 092a25cad..849222866 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/BukkitAdaptors.java @@ -13,6 +13,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public final class BukkitAdaptors { @@ -23,9 +24,9 @@ public final class BukkitAdaptors { * This provides access to CraftEngine-specific player functionality and data. * * @param player the Bukkit Player to adapt, must not be null - * @return a non-null BukkitServerPlayer instance wrapping the provided player + * @return a BukkitServerPlayer instance wrapping the provided player, null if the player is not online */ - @NotNull + @Nullable public static BukkitServerPlayer adapt(@NotNull final Player player) { return BukkitCraftEngine.instance().adapt(player); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/GiveItemCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/GiveItemCommand.java index 8ffd889b1..fe8b228ca 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/GiveItemCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/GiveItemCommand.java @@ -14,6 +14,7 @@ import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; import net.momirealms.craftengine.core.plugin.command.FlagKeys; import net.momirealms.craftengine.core.plugin.locale.MessageConstants; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.NamespacedKey; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -65,12 +66,25 @@ public class GiveItemCommand extends BukkitCommandFeature { itemId = customItem.id(); } } + CustomItem finalCustomItem = customItem; Collection players = selector.values(); for (Player player : players) { - BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); - Item builtItem = customItem.buildItem(serverPlayer); - if (builtItem != null) { - PlayerUtils.giveItem(serverPlayer, amount, builtItem); + if (VersionHelper.isFolia()) { + player.getScheduler().run(plugin().javaPlugin(), t -> { + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + if (serverPlayer != null) { + Item builtItem = finalCustomItem.buildItem(serverPlayer); + if (builtItem != null) { + PlayerUtils.giveItem(serverPlayer, amount, builtItem); + } + } + }, null); + } else { + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + Item builtItem = finalCustomItem.buildItem(serverPlayer); + if (builtItem != null) { + PlayerUtils.giveItem(serverPlayer, amount, builtItem); + } } } if (players.size() == 1) {