티거의 개발 공간

월드에딧


월드에딧 플러그인은 건축에서 단순 작업이나 입체적인 모양을 구현할 때 쉽게 제작하도록 도와주는 플러그인이다.

이 플러그인을 연동하면 월드에딧에서의 첫번째 지점과 두번째 지점을 선택한 지역을 불러오는 등 월드에딧 기능을 자신의 플러그인에서 사용할 수 있게 된다.

우선 월드에딧을 연동하기 위해서는 사용하는 또는 사용하고자 하는 월드에딧 플러그인을 다운로드하여 자신의 버킷의 플러그인에 넣어두자, 

연동했을 때 주의점은 꼭 그 연동한 플러그인이 자신의 버킷의 플러그인안에 있어야하고 서버에 인식되어야한다. 그렇지 않다면 플러그인의 기능을 사용하려 하는데

플러그인을 찾을 수 없기에 오류가 발생한다.


연동



프로젝트에 라이브러리로 월드에딧을 추가하기 위해 Build Path에 들어간다.



위와 같은 윈도우에서 'Add External JARs' 를 눌러 월드에딧 파일을 추가한다.


이 단계를 거치면 자신의 프로젝트 안에서 월드에딧의 기능을 사용할 수 있게된다.




1
2
3
4
5
public WorldEditPlugin getWorldEdit() {
    Plugin p = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
    if (p instanceof WorldEditPlugin) return (WorldEditPlugin) p;
    else return null;
}
cs


위의 메서드는 월드에딧 플러그인을 불러오는 메서드이다. 필자는 한번 사용할 때 onEnable() 메서드에 플러그인이 활성화 될 때 한번만 불러오게 한 후 변수에 저장해서

계속 사용한다.


1
Selection sel = getWorldEdit().getSelection(Player);
cs


위의 메서드를 호출하여 플레이어가 선택한 두 지점으로 정의된 구역을 받을 수 있다.

물론 이 정의된 구역으로 첫 번째 지점과 두 번째 지점 모두 구할 수 있다.


1
2
3
Selection sel = getWorldEdit().getSelection(Player);
Location pos1 = sel.getMaximumPoint();
Location pos2 = sel.getMinimumPoint();

cs


위처럼 pos1은 첫 번째 지점, pos2는 두 번째 지점이다.


1
2
3
4
Selection sel = getWorldEdit().getSelection(Player);
if(sel.contains(player.getLocation()){
    player.sendMessage("구역 안에 있습니다.");
}
cs


이런 식으로 위치값이 구역 안에 있는지도 파악 할 수 있다.


만약 플레이어에 의해서 정의된 구역 뿐만이 아닌 자신의 플러그인 상에서 구역을 정의하고 싶다면


1
2
3
Location loc1 = new Location(Bukkit.getWorld("world"), 0,0,0);
Location loc2 = new Location(Bukkit.getWorld("world"), 5,5,5);
CuboidSelection sel = new CuboidSelection(loc1.getWorld(), loc1, loc2);
cs


이렇게 새로운 구역을 정의할 수 있다.


1
getWorldEdit().setSelection(player, sel);
cs


위의 메서드는 플레이어가 정의한 구역을 플러그인 내부에서 임의로 교체할 수 있다.


이 이외에도 많은 기능들이 있지만 필자는 모든 내용을 이 게시글에서 다룰 수 없다.

필자는 많이 사용하는 기능들만 적어놓았고 아래 예시 프로젝트를 첨부했으니 참고바란다.