개인 자료란 (JE)

  서버 커뮤니티

Profile kimhanuel 대표칭호 없음
Profile

질문하기 플러그인

명령어에 쿨타임

2023.04.30 조회 수 288 추천 수 0
이해도 입문자 
게임버전 (JE) 1.19.4 
게임버전 (BE) 관련없음 

그 명령어를 치면 아이템이 지급되는 플러그인을 만들었는데 거기다가 쿨타임을 넣고싶어요

코드:


package MinecraftPlugin;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

public class item implements CommandExecutor {   //명령어 처리 클래스는 CommandExecutor 인터페이스를 상속해야 한다.
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {  //명령어 실행 시
        if(sender instanceof Player) {  //명령어 사용자가 플레이어인 경우
            Player player = (Player)sender; //명령어 사용자 객체를 플레이어 객체로 변환할 수 있음
            player.sendMessage("아이템이 지급되었습니다.");    //사용자에게 메시지 발신
            ItemStack woods = new ItemStack(Material.OAK_LOG);
            ItemStack irons = new ItemStack(Material.IRON_INGOT);
            ItemStack golds = new ItemStack(Material.GOLD_INGOT);
            ItemStack diamonds = new ItemStack(Material.DIAMOND);

            woods.setAmount(10);
            irons.setAmount(10);
            golds.setAmount(10);
            diamonds.setAmount(10);

            player.getInventory().addItem(
                    woods,
                    irons,
                    golds,
                    diamonds);  //플레이어의 인벤토리를 가져와 아이템을 집어넣음
            return true;    //true값을 반환하면 명령어가 성공한 것으로 간주
        }
        else if(sender instanceof ConsoleCommandSender) {   //명령어 사용자가 콘솔인 경우
            sender.sendMessage("콘솔에서는 이 명령어를 실행할 수 없습니다.");
            return false;   //false값을 반환하면 명령어가 실패한 것으로 간주
        }
        return false;   //false값을 반환하면 명령어가 실패한 것으로 간주
    }
}

5개의 댓글

0reo
2023.05.01

플레이어 셋 만들고 거따 add한담에 runnable로 일정시간후 리스트에서 지우면댐

0reo
2023.05.01
@0reo
private static Set<Player> players = new HashSet<>();

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (sender instanceof Player) {
        Player player = (Player) sender;
        if (!players.contains(player)) {
            //알아서넣으세용

            timer(player);
        }
    }
    return false;
}

private void timer(Player player) {
    players.add(player);
    Bukkit.getScheduler().runTaskLater(Main.class, () -> {
        players.remove(player);
    }, 원하는쿨타임 * 20);
}
kimhanuel
2023.05.01
@0reo

private void timer(Player player) {

players.add(player);

Bukkit.getScheduler().runTaskLater(Main.class, () -> {

players.remove(player);

}, 30 * 20);

}

}

 

에서 Main.class에 빨간줄 (오류) 뜨는데여

0reo
2023.05.02
@kimhanuel

님꺼 메인클래스 (Javaplugin 상속하는 클래스) 로 바꾸셔야해요.. 저건예시

0reo
2023.05.02
@0reo

JavaPlugin.getPlugin((JavaPlugin 상속 클래스).class)

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3