개인 자료란 (JE)

  서버 커뮤니티

Profile logdev 대표칭호 없음
Profile

질문하기 Java

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

2020.04.08 조회 수 371 추천 수 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/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0