개인 자료란 (JE)

  서버 커뮤니티

Profile asdfggh 대표칭호 없음
Profile

질문하기 Java

이 코드가 왜 틀렸는지 모르겠습니다.

2023.01.17 조회 수 136 추천 수 0
이해도 초보자 
게임버전 (JE) 1.19.1, 1.19.2, 1.19.3 
게임버전 (BE) 관련없음 

곡괭이로 돌을 캐면 50% 확률로 돌이 많이 나오는 것을 구현하려 했는데 실패했습니다

@EventHandler

public void snow(BlockBreakEvent e) {

    Player p = e.getPlayer();
    Material brBlock = e.getBlock().getBlockData().getMaterial();
    Material useItem = p.getItemInUse().getType();

    if (brBlock == Material.COBBLESTONE || brBlock == Material.STONE || brBlock == Material.DEEPSLATE) {
        if (useItem == Material.DIAMOND_PICKAXE || useItem == Material.IRON_PICKAXE || useItem == Material.STONE_PICKAXE || useItem == Material.WOODEN_PICKAXE || useItem == Material.GOLDEN_PICKAXE || useItem == Material.NETHERITE_PICKAXE) {
            if (Math.floor(Math.random() * 100) < 50) {
                p.getWorld().dropItem(e.getBlock().getLocation(), new ItemStack(Material.COBBLESTONE, 2)).setVelocity(p.getLocation().getDirection().multiply(-0.1));
            }
        }
    }
}




3개의 댓글

0reo
2023.01.18
@EventHandler
public void snow(BlockBreakEvent e) {
    Player player = e.getPlayer();
    Material brBlock = e.getBlock().getType();
    ItemStack itemUse = player.getInventory().getItemInMainHand();
    Random random = new Random();

    if (brBlock.equals(Material.COBBLESTONE) || brBlock.equals(Material.STONE )|| brBlock.equals(Material.DEEPSLATE)) {
        if (itemUse.getType().name().toLowerCase().contains("pickaxe")) {
            if (random.nextInt(100) < 50) {
                e.setDropItems(false);
                player.getWorld().dropItemNaturally(e.getBlock().getLocation(), new ItemStack(Material.COBBLESTONE, 2));
            }
        }
    }
}

아마 될거에요 테스트안해봄

0reo
2023.01.18
@0reo

작동이 안된다면 클래스가 Listener를 구현하는지 확인해보세용

asdfggh
2023.01.18
@0reo

감사합니다 테스트 해보겠습니다!