개인 자료란 (JE)

  서버 커뮤니티

Profile logdev 대표칭호 없음
Profile

질문하기 Java

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

2020.04.08 조회 수 374 추천 수 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/762/770/003/262x150.crop.jpg?20240418073724

레드스톤

T.B.H (고민중독) | 노트블럭 버전 | NoteBlock Cover [한국어 영어 중국어 가사 추가]

노트블럭전문가

2024-04-18

0

/files/thumbnails/218/767/003/262x150.crop.jpg?20240412130213

레드스톤

우리의 꿈 - 원피스 오프닝

노트블럭전문가

2024-04-12

0

/files/thumbnails/505/766/003/262x150.crop.jpg?20240411122306

레드스톤

기동전사 건담 수성의 마녀 | 노트블럭 커버 1

노트블럭전문가

2024-04-11

1

/files/thumbnails/932/765/003/262x150.crop.jpg?20240410124459

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

노트블럭전문가

2024-04-10

0

/files/thumbnails/403/765/003/262x150.crop.jpg?20240409190538

레드스톤

마인크래프트 노트블록으로 만든 『 밤양갱 (Bam Yang Gang) 』

Sonttukk

2024-04-09

4