개인 자료란 (JE)

  서버 커뮤니티

Profile logdev 대표칭호 없음
Profile

질문하기 Java

플러그인 에서 가상 블럭 생성

2020.04.08 조회 수 378 추천 수 0
이해도 플러그인 
게임버전 (JE) 버킷 

falling block외엔 가상 블럭을 만드는 방법이 아예 없나요? 제가 쓴 코드입니다.

package me.logdev.anaconda;


import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;


public class Event implements Listener {

    int num1 = 1;

    @EventHandler
    public void onPlayerClicks(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        Action action = event.getAction();

        if(action == (Action.RIGHT_CLICK_AIR) || action == (Action.RIGHT_CLICK_BLOCK)){
            @SuppressWarnings("all")
            FallingBlock fallingBlock = player.getWorld().spawnFallingBlock(player.getLocation(), player.getInventory().getItemInMainHand().getType(), player.getInventory().getItemInMainHand().getData().getData());
            fallingBlock.setInvulnerable(true);
            fallingBlock.setGravity(false);
            fallingBlock.setDropItem(false);
            fallingBlock.setTicksLived(-2147483648);
            ArmorStand as = (ArmorStand) player.getWorld().spawnEntity(player.getLocation(), EntityType.ARMOR_STAND);
            as.setVisible(false);
            as.setCustomName(String.valueOf(num1));
            as.addPassenger(fallingBlock);
            num1 += 1;







        }

    }

}

 이렇게 작성해서 fallingblock을 띄우는 것까지 성공했습니다. 이것 외엔 블럭을 아예 띄우는 방법이 없나요?




6개의 댓글

분열
2020.04.08
1. deprecate된 메소드
player.sendBlockChange(위치, 머터리얼값, 바이트);
2. 패킷사용 (protocollib, packetwrapper)
//WrapperPlayServerBlockChange 래퍼 생성후 플레이어에게 전달.
3. deprecate 안된 메소드 (1.12.2에선 안됨)
//BlockData내에 sendBlockChange메소드가 있다고 함


logdev
2020.04.08
@분열

그러니까 sendBlockChange 라는 메소드를 쓰면 가상블록을 만들수 있다는 건가요?

logdev
2020.04.08
@logdev

시도해본 결과 그 자리에 있는 블록을 바꾸는 것입니다...

PatrickKR
2020.04.08
@logdev

제생각에는 아머스탠드를 띄우고 그 머리에 블록을 씌우는게 가장 안정적인 방법이라 생각됩니다.

아글
2020.05.10
@PatrickKR

혹시 아머스탠드를 띄우고 아머스탠드에 블록 씌우는 구문 뭔지 아시나요?

분열
2020.04.08
@logdev

sendblockchange는 플레이어에게만 보이는 블럭을 보내는 방식이라 상호작용(좌/우클)이나 재접속시 사라지게 됩니다. 

block을 set하는 방식이 아니라서 실제 블럭이 설치되는건 아닐텐데요..?

뉴스 및 창작물
/files/thumbnails/308/815/003/262x150.crop.jpg?20240617084353

레드스톤

[피아노커버] 디스코드 - QWER

노트블럭전문가

2024-06-17

0

/files/thumbnails/932/812/003/262x150.crop.jpg?20240616121638

업데이트

마인크래프트 1.21 정식 업데이트

학교가기싫다

2024-06-14

1

/files/thumbnails/308/805/003/262x150.crop.jpg?20240605201646

레드스톤

[노트블럭 커버] 팬서비스/mona 【 HoneyWorks 】

노트블럭전문가

2024-06-05

0

/files/thumbnails/288/791/003/262x150.crop.jpg?20240602150002

아티클

《까다로운 시련》 업데이트 날짜 공개 및 정보

학교가기싫다

2024-06-02

0

/files/thumbnails/841/773/003/262x150.crop.jpg?20240526120908

레드스톤

마인크래프트 노트블록버전 『 봄을 고하다 (春を告げる) 』 [더블옥타브 버전]

노트블럭전문가

2024-05-26

0