Untitled

Anonymous
plain_text
04/04/2026 10:14 PM
5.5 KB
16
Indexable
package pl.chunklock.core.command.impl;

import java.util.Optional;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import pl.chunklock.core.CorePlugin;
import pl.chunklock.core.command.VirtualExecutorServiceProvider;
import pl.chunklock.core.command.impl.admin.ChunkLockAdminCommand;
import pl.chunklock.core.command.impl.player.ChunkLockAchievementsCommand;
import pl.chunklock.core.command.impl.player.ChunkLockCreateCommand;
import pl.chunklock.core.command.impl.player.ChunkLockDeleteWarpCommand;
import pl.chunklock.core.command.impl.player.ChunkLockDepositCommand;
import pl.chunklock.core.command.impl.player.ChunkLockFriendCommand;
import pl.chunklock.core.command.impl.player.ChunkLockHelpCommand;
import pl.chunklock.core.command.impl.player.ChunkLockInfoCommand;
import pl.chunklock.core.command.impl.player.ChunkLockListCommand;
import pl.chunklock.core.command.impl.player.ChunkLockPointsCommand;
import pl.chunklock.core.command.impl.player.ChunkLockQuestsCommand;
import pl.chunklock.core.command.impl.player.ChunkLockReviewCommand;
import pl.chunklock.core.command.impl.player.ChunkLockSetSpawnCommand;
import pl.chunklock.core.command.impl.player.ChunkLockSetWarpCommand;
import pl.chunklock.core.command.impl.player.ChunkLockSpawnCommand;
import pl.chunklock.core.command.impl.player.ChunkLockTopCommand;
import pl.chunklock.core.command.impl.player.ChunkLockVisitCommand;
import pl.chunklock.core.command.impl.player.ChunkLockWarpCommand;
import pl.chunklock.core.database.entity.impl.Island;
import pl.chunklock.core.database.entity.impl.IslandMember;
import pl.chunklock.core.gui.chunk.ChunkPanelGui;
import pl.chunklock.core.island.IslandContextResolver;
import pl.chunklock.core.island.IslandManager;
import studio.mevera.imperat.BukkitCommandSource;
import studio.mevera.imperat.annotations.types.Async;
import studio.mevera.imperat.annotations.types.Dependency;
import studio.mevera.imperat.annotations.types.Execute;
import studio.mevera.imperat.annotations.types.ExternalSubCommand;
import studio.mevera.imperat.annotations.types.Permission;
import studio.mevera.imperat.annotations.types.RootCommand;

@RootCommand({"chunklock", "chunk", "cl"})
@ExternalSubCommand({ChunkLockAchievementsCommand.class, ChunkLockCreateCommand.class,
    ChunkLockDepositCommand.class, ChunkLockDeleteWarpCommand.class, ChunkLockFriendCommand.class,
    ChunkLockHelpCommand.class, ChunkLockInfoCommand.class, ChunkLockListCommand.class,
    ChunkLockPointsCommand.class, ChunkLockQuestsCommand.class,
    ChunkLockReviewCommand.class, ChunkLockSetSpawnCommand.class, ChunkLockSetWarpCommand.class,
    ChunkLockSpawnCommand.class, ChunkLockTopCommand.class, ChunkLockVisitCommand.class,
    ChunkLockWarpCommand.class, ChunkLockAdminCommand.class})
@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public final class ChunkLockCommand {

  CorePlugin plugin;
  ChunkPanelGui chunkPanelGui;

  public ChunkLockCommand(CorePlugin plugin) {
    this.plugin = plugin;
    this.chunkPanelGui = new ChunkPanelGui(this.plugin);
  }

  @Async(value = VirtualExecutorServiceProvider.class)
  @Execute
  @Permission("chunklock.command.default")
  public void defaultUsage(final BukkitCommandSource source) {
    if (source.isConsole()) {
      return;
    }

    final Player player = source.asPlayer();

    final IslandManager islandManager = this.plugin.getIslandManager();

    final Optional<Island> islandOpt = IslandContextResolver.resolve(islandManager, player);

    if (islandOpt.isEmpty()) {
      source.reply("&cNie posiadasz swojego chunka i nie stoisz na żadnym!");
      return;
    }

    final Island island = islandOpt.get();
    final Optional<IslandMember> islandMemberOpt = IslandContextResolver.resolveMember(
        islandManager, player, island);

    if (islandMemberOpt.isEmpty()) {
      source.reply("&cNie jesteś członkiem tego chunka i nie masz do niego dostępu!");
      return;
    }

    this.chunkPanelGui.open(player, islandMemberOpt.get(), island);
  }
}
Editor is loading...
Leave a Comment