9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2026-01-06 15:52:03 +00:00

修复folia give item

This commit is contained in:
XiaoMoMi
2025-12-19 03:06:39 +08:00
parent 5436608fc4
commit 880b5711b7
2 changed files with 21 additions and 6 deletions

View File

@@ -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);
}

View File

@@ -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<CommandSender> {
itemId = customItem.id();
}
}
CustomItem<ItemStack> finalCustomItem = customItem;
Collection<Player> players = selector.values();
for (Player player : players) {
BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player);
Item<ItemStack> 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<ItemStack> builtItem = finalCustomItem.buildItem(serverPlayer);
if (builtItem != null) {
PlayerUtils.giveItem(serverPlayer, amount, builtItem);
}
}
}, null);
} else {
BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player);
Item<ItemStack> builtItem = finalCustomItem.buildItem(serverPlayer);
if (builtItem != null) {
PlayerUtils.giveItem(serverPlayer, amount, builtItem);
}
}
}
if (players.size() == 1) {