mir.pe (일반/어두운 화면)
최근 수정 시각 : 2023-11-10 17:37:24

블록런처/ModPE 개발

파일:상위 문서 아이콘.svg   상위 문서: 블록런처

{{{#!wiki style="margin: -0px -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px; word-break:keep-all"
<colbgcolor=darkgreen><colcolor=#fff> 기본 플레이
시스템 세계 ( 시드) · 게임 모드 · 난이도 · 게임 규칙 · 엔딩 · 죽음 메시지 · 스플래시 · 명령어 · NBT · 런처
인게임 아이템 · ( 플레이어) · 개체 · 날씨 · 차원 · 생물군계 · 구조물 · 마법 부여 · 상태 효과 · 조작법 · 피해 · 업적
도움말 튜토리얼 · ( 탐험 · 파밍 · 회로) · 재생 가능한 자원 · 브릿징 · PVP · 파쿠르 · 스피드런 · 건축 ( 맵아트)
시리즈 및 매체
출시 에디션 자바 에디션 ( 업데이트 · 거리 효과) · 베드락 에디션 ( 업데이트) · 포켓 에디션* · 콘솔 에디션* · 파이 에디션*
파생 게임 마인크래프트 던전스* · 마인크래프트 레전드* · 마인크래프트 에듀케이션 · 마인크래프트: 스토리 모드* · 마인크래프트 어스*
미디어 OST · 관련 서적 · 레고 · 영화 · 애니메이션 · Minecraft Live · Minecraft Now · Minecraft Monthly
유저 콘텐츠
창작 요소 2차 창작 · 망토 · · 모드 ( 개발 · · 모드팩) · 애드온 · ( 리소스 팩 · 데이터 팩) · 외부 프로그램 ·
멀티 콘텐츠 멀티플레이 · 서버 · 플러그인 · Realms · EULA
개발 개발 기초 · 모드 개발 · 플러그인 개발
기타
이야깃거리 여담 · 커뮤니티 · 사건 사고 · 문제점 · 용어 · 지원 언어 · 머나먼 땅 · 이미테이션 게임 · 히로빈
관련 문서 나무위키 마인크래프트 프로젝트 · 마인크래프트로 분류된 문서 · 마인크래프트의 하위 문서
* 표시는 서비스가 종료되었거나 개발이 중단되었다는 표시이다. }}}}}}}}}

파일:블록런쳐.jpg 블록런처
Mod Add-On ModPE


1. 개요2. 메소드
2.1. 기본 메소드2.2. ModPE 메소드2.3. Level 메소드2.4. Player 메소드2.5. Entity 메소드2.6. Item 메소드2.7. Block 메소드2.8. Server 메소드2.9. 이벤트 리스너2.10. 상수들
2.10.1. 채팅 색 상수2.10.2. 아이템 구분 상수2.10.3. 파티클 타입 상수2.10.4. Entity 타입 상수2.10.5. Entity 랜더러 타입 상수2.10.6. 갑옷 타입 상수2.10.7. 포션 효과 상수2.10.8. 월드구분 상수2.10.9. Block Face 상수2.10.10. 인첸트 상수2.10.11. Use Animation 상수2.10.12. EnchantType 상수2.10.13. BlockRenderType 상수
2.11. 네이티브 함수2.12. 유틸2.13. 렌더링(모델링) 관련 함수
3. 유용한 스크립트4. 유용한 소스5. .modpkg
5.1. 개요5.2. 제작법
6. 여담
6.1. 동영상

1. 개요

마인크래프트 베드락 에디션의 비공식 런처인 블록런처(BlockLauncher)(현재 스토어에서 내려감)의 제 3세대 모드로, 프로그래밍 초보자도 쉽게 제작할 수 있는 모드이다.

개발자는 Treebl이다. 블록런처의 개발자인 주웨이 장(Zhuowei Zhang)[1]이 블록런처에 ModPE 기능을 넣으면서 주웨이가 만든 것이라고 아는 사람들이 많다. ModPE 불러오기 메뉴에 'Treebl 의 공식 레포'가 있는 것이 이 때문이다.

ModPE 스크립트는 줄여서 스크립트라고 불리기도 한다. 따라서, 마인크래프트 PC에서의 스크립트(Skript) 플러그인과 혼동하는 경우도 꽤 있다.[2] 3세대 모드인 ModPE 스크립트는 1세대의 장점, 2세대의 장점을 합쳐 쉽고 정교하게 만들 수 있다. 참고로, 가능한 영역은 애드온이 스크립트보다 넓다. 애초에 애드온은 MCPE의 메소드를 직접 후킹하는 거라 절대적으로 자유도가 높으며, 들리는 소문에 의하면 블록런처에다가도 후킹이 가능하다고 한다.

이런 ModPE 스크립트를 제작하는 사람들을 한국에서는 스크립터라고 부르며 높은 퀄리티의 작품을 생산하는 사람들은 대부분 포럼에 가입되어 있다. 포럼은 전세계가 사용하고 이용자도 훨씬 많으니 어떻게 보면 당연한 것이다.

이 ModPE 스크립트는 JavaScript 기반으로 만들어졌다. 또한 Rhino 엔진을 기반으로 돌아가기 때문에 안드로이드 뷰를 사용할 수 있어 이걸로 GUI 구현이 가능하다. 진저브레드(안드로이드 2.3.x) 이하에서는 안드로이드 소스를 사용할 수 없다고 잘못 알려져 있으나, 실제로는 android.widget.Switch와 같은 일부 뷰[3]들을 제외하고는 정상적으로 작동한다. 과거, 버튼 생성 소스에 사용되는 android.widget.PopupWindow 부분에서 발생하는 오류를 보고, 당시 스크립트 제작자들이 잘못 판단한 듯. 하지만, PopupWindow 역시 소스만 아주 조금만 수정[4]해주면 진저브레드에서도 잘 작동한다.

ModPE는 블록런처가 브릿지 역할을 하여 ModPE → BlockLauncher (ScriptManager) → 블록런처 네이티브 함수 → MCPE 함수를 거쳐서 가기 때문에 처리속도가 느리다. 복잡한 작업하면서 ModPE에 속도는 기대하지 않는 것이 좋을 것이다. 게다가 자바스크립트 자체가 인터프리터를 쓰다보니 더더욱 속도는 느리다. 속도를 바란다면 MCPE를 직접 만지는 애드온을 파는게 좋다. 직접 네이티브를 호출하자! public이 많다!

MCPE Master[5]라는 앱으로도 스크립트를 사용할 수 있으나, 100% 구동되지는 않는다. MCPE Master[6]에서는 블록런처와는 달리, 스크립트를 애드온이라고 불렀으나, 지금은 ModPE라고 부른다. 통칭 ' Toolbox(툴박스)'라고 불리는 앱으로도 스크립트 사용이 가능했으나,[7] 1.1을 지원하는 버전부터는 GUI도 바뀌고 더 이상 ModPE가 지원되지 않는다. 덕분에 툴박스로 클라이언트를 사용하던 사람들에게 이는 청천벽력 같은 소식이다. 그 이유인 즉슨 툴박스로는 블록런처로 서버에서 작동하지 않는 메서드가 작동하기 때문. 사실 블록런처도 최근에 서버에서 모든 메소드가 정상적으로 작동했었다.[8](작동하면 진짜 사기 핵이다.), 싱글플레이에서는 작동하나 멀티플레이에서는 사용해도 아무런 변화가 없는 Player.setFlying(); 같은 메소드를 말한다. 참고로, 1.8.x 시절에도 로컬 멀티 한정으로 그랬었고, 1.8.6에서는 장거리 멀티에서도 동일하게 적용되었었다.] 그 대신 유용한 치트가 추가되었다. 예를 들어 Auto Walk(자동으로 걷기), Kill Aura(몹만 가능, 서버에서 작동하는 듯하다. 근데, 작동할 리가 없는ㄷ...) 등이 있다.

해외에서는 스크립트라는 명칭 대신 js mod, ModPE Script 등으로 불린다. 참고로, 해외에서 .mod는 PTPatch[9]라고 불린다.

현재 블록런처가 지원하는 마인크래프트 버전은 1.14.1.5 이다. 그리고 롤리팝 이상에서만 작동하는 듯 하다. 킷켓 이하에서는 작동하지 않고 팅기는 현상이 발생했다.[10]

블록런치의 업데이트 속도가 마인크래프트의 업데이트 속도를 따라가지 않고 있다. 게다가 1.0.0 버전으로 오면서 많은 코드가 변경되면서 개발에 어려움이 있다고 한다. 심지어, 2020년 한 해 동안 블록런처의 업데이트가 없었다! 아예 스토어에서 내려가면서 ModPE 스크립트는 막을 내렸다.

다른 MCPE 모드들에 대한 설명은 상위 항목 참고

2. 메소드

ModPE의 메소드는 중복되는 것이 여러개 있다. 무엇을 선택하든 상관없다.
하지만 이 문서에서는 setTile(); → Level.setTile(); 과 같이 부모가 있는 메소드를 쓰는것을 권장한다.
하지만 부모가 없는 메소드는 용량이 아주 조금 적게 나갈 것이다

2.1. 기본 메소드

2.2. ModPE 메소드

2.3. Level 메소드

2.4. Player 메소드

Player 객체에 속한 메소드들은 원래는 이벤트 useItem과 같은 리스너 내부에서 사용하면, 해당 이벤트를 일으킨 플레이어(서버원 포함)을 기준으로 작동하야 하나, 그렇지 아니하는 함수들도 많다.

2.5. Entity 메소드

2.6. Item 메소드

2.7. Block 메소드

Block.defineBlock(추가할 블록 아이디, "추가할 블록 이름", [ ["블록택스쳐", 0], ["블록택스쳐", 0], ["블록택스쳐", 0], ["블록택스쳐", 0], ["블록택스쳐", 0], ["블록택스쳐", 0] ], int, boolean, int);

2.8. Server 메소드

2.9. 이벤트 리스너

기본 지급하는 콜백 함수들이다. 일부 함수들은 멀티플레이를 지원하지 않는다. '이벤트 함수' 등으로 불리는 경우도 있으나, '이벤트 리스너'가 정확한 명칭이다. 몇몇 이벤트 리스너들은 preventDefault(); 함수를 사용하여, 해당 이벤트가 취소되도록 할 수 있다.

2.10. 상수들

기본 값을 조금 더 편하게 사용하기 위해 만들어놓았다. 변수가 아닌, 상수이므로, 중간에 값을 바꿀 수 없다.
Level.playSound();에서 사용되는 소리들은 상수목록에 없다. 애초에 그 소리들은 .apk 파일 내부에 들어있는 소리 파일들이다.
엔티티 타입 아이디는 정수값 외우는게 더 편하다. 몇 가지는 작성되지 않았다.

2.10.1. 채팅 색 상수


+ §는 안드로이드 4.2.2 이상의 삼성 폰을 기준으로 키보드의 S 버튼을 길게누르면 사용할 수 있다. 유니코드 번호는 U+00A7. 컴퓨터에서는 'ㅁ + 한자 + 5'로 사용이 가능하다. 여담으로 §k를 사용하면 문자들이 막 돌아가는(?) 게 나온다. §k 앞에 색 상수를 이용해 색 입히기도 가능하다.Windows 8~10은 Win키 + .(마침표)로 쓰자.

2.10.2. 아이템 구분 상수

2.10.3. 파티클 타입 상수

2.10.4. Entity 타입 상수

참고: 아래의 Entity들의 숫자코드은 /give @p spawn_egg (아이템 개수) (데미지)[24] 이렇게 하면 스폰알을 얻을수 있었다. - 마크 0.16만 해당[25]


다음은 위에 나오지 않은 엔티티들의 엔티티 타입 아이디이다.
삭제된 엔티티는 취소선표시

카메라는 마인크래프트 0.14.X의 이스터에그로써, 다른 버전에서는 카메라가 없다. 심볼에는 62번으로 남아있다.

2.10.5. Entity 랜더러 타입 상수

2.10.6. 갑옷 타입 상수

2.10.7. 포션 효과 상수

2.10.8. 월드구분 상수

그러면 엔더월드는 2인가

2.10.9. Block Face 상수

이것은 useItem의 side랑 비슷하다 볼 수 있다. side가 반환하는 값이 해당 면에 해당하는 BlockFace 상수의 값.

#!syntax javascript
if (side == BlockFace.UP) {
    // 코드
}

2.10.10. 인첸트 상수

2.10.11. Use Animation 상수

2.10.12. EnchantType 상수

2.10.13. BlockRenderType 상수

2.11. 네이티브 함수

Rhino Javascript Engine을 거치지 않고, 직접 JNI 함수로 접근하여 사용하는 함수이다. Rhino에서 Java 함수를 직접 호출하는 기능을 이용한 것이며, JNI를 사용하므로 BlockLauncher의 Java 클래스의 함수명을 사용하면 된다. [26]
블록런처 1.12.2를 기준으로 덤프한 것이다.

최신버전은 아니지만 참고 하고 싶은 사람은 여기에서 참고해도 좋다. 블록런처 1.8.6[27]의 소스로 추정된다.

앞에다가 폴더 경로와 클래스명(.java 파일의 이름)을 붙여서 사용하면 된다. nativeSetTile();을 예로 들자면 net.zhuoweizhang.mcpelauncher.ScriptManager.nativeSetTile();과 같이 사용하면 되며, 아래에는 프로토타입으로만 적어놓았다.

뭔지 모르는건 알아서 실험해보기 바란다.
악용될 수 있는 함수들의 접근 지정자가 전부 public에서 private로 바뀌어서, 더 이상 접근할 수도 없고, 목록에 나오지 않는다. 목록에 뜨지 않는 것은 디컴파일[28]을 하면 알 수 있다.

2.12. 유틸

Utils.java 파일에 들어있는 외부에서 접근이 가능한 객체들이다. 블록런처 1.12.2가 기준이다
블록런처가 프로버전인지 확인하는 기능이나 해당 폴더의 내용을 전부 지우는 악용하지 말자 함수도 있다.
앞에다가 폴더 경로와 클래스명(.java 파일의 이름)을 붙여서 사용하면 된다. 프로버전인지 아닌지 확인하는 함수인 isPro();를 예로 들자면 net.zhuoweizhang.mcpelauncher.Utils.isPro();와 같이 사용하면 된다.

네이티브 함수 항목에서처럼 프로토 타입들로 적어두었다.

2.13. 렌더링(모델링) 관련 함수



렌더링(모델링)을 하기위해서는 일단 새로운 렌더러를 만들어야 한다.
Renderer.createHumanoidRenderer();로 만든 뒤,
Renderer.getModel();을 이용하여 해당 렌더러의 모델을 가져온 다음,
model.getPart("Part");를 이용하여 해당 파츠를 불러와서,
part.clear();로 기존에 있던 파츠를 지우고,
part.setTextureSize(sizeX, sizeY);로 스킨의 비율을 조절하고(대부분 생략한다),
part.setTextureOffset(x, y);으로 스킨의 위치를 맞춘 다음에,
part.addBox(x, y, z, sizeX, sizeY, sizeZ);를 사용하여 새로운 박스를 추가한다.

아쉽게도 각도 조절은 없다.
하지만 스마트 무빙을 제작하던중에 픽셀화라는 기법이 나왔다.

이렇게 렌더러를 모델링 하고나면
Entity.setRenderType(ent, renderType);으로 적용시키면 되는데

주의할점이 renderType은 Renderer.renderType으로 적어줘야 제대로 renderType이 적용된다

비교적 객체지향적으로 만들었구만

이건 스킨 크기가 64×32인 경우를 기준으로 사람 모양 렌더러를 만드는 예제 소스이나, 현재 블록런처에서는 정상적으로 작동하지 않을 확률이 있다.

#!syntax javascript
var renderer = Renderer.createHumanoidRenderer();  //새로운 렌더러 생성
var model = renderer.getModel();  //그 렌더러의 모델을 가져오고,
var head = model.getPart("head");  //그 모델의 각 파츠를 가져온다.
var body = model.getPart("body");
var rArm = model.getPart("rightArm");
var lArm = model.getPart("leftArm");
var rLeg = model.getPart("rightLeg");
var lLeg = model.getPart("leftLeg");
head.clear();  //기존에 있던 파츠는 지우고,
body.clear();
rLeg.clear();
lLeg.clear();
rArm.clear();
lArm.clear();
head.setTextureOffset(0, 0); //각 파츠에 스킨 위치를 맞추고
head.addBox(-4, -8, -4, 8, 8, 8); //박스를 추가한다.
body.setTextureOffset(16, 16);
body.addBox(-4, 0, -2, 8, 12, 4);
rLeg.setTextureOffset(0, 16);
rLeg.addBox(-2, 0, -2, 4, 12, 4);
lLeg.setTextureOffset(0, 16);
lLeg.addBox(-2, 0, -2, 4, 12, 4);
lArm.setTextureOffset(40, 16);
lArm.addBox(-1, -2, -1.5, 4, 12, 4); 
rArm.setTextureOffset(40, 16);
rArm.addBox(-3, -2, -1.5, 4, 12, 4); 

3. 유용한 스크립트

4. 유용한 소스

#!syntax javascriptLevel.setTiles = (x1, y1, z1, x2, y2, z2, b, bd) => {
 for(let X = (x1 < x2 ? x1 : x2);X <= (x1 > x2 ? x1 : x2);X++) {
  for(let Y = (y1 < y2 ? y1 : y2);Y <= (y1 > y2 ? y1 : y2);Y++) {
   for(let Z= (z1 < z2 ? z1 : z2);Z <= (z1 > z2 ? z1 : z2);Z++) {
    Level.setTile(X, Y, Z, b, bd);
   }
  }
 }
return;
} 

#!syntax javascript Player.getNearEntity = (x, y, z) => {
 var ent = Entity.getAll();
 var nearEnt = [];
 for(let n = 0;n < ent.length;n++){
  if((Math.abs(Player.getX()-Entity.getX(ent[n]))<x)&&(Math.abs(Player.getY()-Entity.getY(ent[n]))<y)&&(Math.abs(Player.getZ()-Entity.getZ(ent[n]))<z)&&ent[n]!=Player.getEntity()){
    nearEnt.push(ent[n]);
   }
  }
 return nearEnt;
} 

#!syntax javascript Player.getClosestEntity = () => {
 var ent = Entity.getAll();
 var closest = [Infinity, null];
 for(let n = 0; n < ent.length; n++){
  var dist = Math.sqrt(Math.pow(Player.getX() - Entity.getX(ent[n]), 2) + Math.pow(Player.getY() - Entity.getY(ent[n]), 2) + Math.pow(Player.getZ() - Entity.getZ(ent[n]), 2));
  if(closest[0] > dist){
   closest[0] = dist;
   closest[1] = n;
  }
 }
 return ent[closest[1]];
} 

5. .modpkg

스크립트 파일과 텍스쳐팩을 한 파일 안에 넣어서 스크립트처럼 적용하는 것이다.
확장자는 .modpkg이며, 일반 스크립트와 적용법이 같다. 과거, .modpkg 파일을 적용할 때 시간이 굉장히 오래 걸렸던 시절이 있다.
'고퀄 텍팩'이라고도 불리는 해상도가 높은 텍스쳐 파일을 사용하여 만드는 경우, 갤럭시 S8+ 누가 블록런처 버전 1.15.7 기준으로 오류가 발생했으니, 참고할 것.

5.1. 개요

비교적 최근데 나온 것으로, 무려 사운드[46],택스쳐팩,스크립트한꺼번에 적용할 수 있는 확장자다. 적용 방식은 스크립트와 같다. 사실 텍스쳐팩을 포함한다고 볼 수 있는 리소스팩의 경우, 소리 파일이나 언어 파일, 마크 내의 문구들도 수정이 가능하다. 즉, 스크립트 + 리소스팩.

5.2. 제작법

폴더 내부에 script 폴더를 만들고, 그 안에 스크립트 파일을 넣고 압축하면 된다. 그리고 확장자는 .zip[47]에서 .modpkg 로 바꾸면 된다.
텍스쳐를 사용하려는 경우 사용하려는 텍스쳐에 따라 다른 이름의 폴더를 만든다. 그리고 그 안에 텍스쳐를 넣는다. 텍스쳐 별 폴더 이름은 다음과 같다.사실 텍스쳐팩 만드는 법과 동일하다. 사운드는?
텍스쳐에 따라 텍스쳐 파일명이 달라진다. 어떤 텍스쳐는 파일명 뒤에 '_0', '_1' 등을 붙여야 하는 경우도 있다.

6. 여담

한국에서 카페 및 여러 블로그 등지에서 많이 배포된다. 직접 하나하나 찾는다면 실력자를 많이 볼 수 있다. 이외에는 블로그, 타 카페 등에서 공유한다.

이 문서는 수정이 많이 필요한 문서이다. 아무나 와서 고칠 수는 있다만, 웬만하면 수정본을 복사하고 저장하는 것이 좋을 것이다.

예전 ModPE 스크립트는 PC에 비해 퀄리티가 낮았다. 하지만 점점 발전하며 아래와 같은 높은 퀄리티의 작품도 나오기 시작했다.

사실 이론상으로는 스크립트 만으로도 .modpkg가 구현이 가능하다. 이는 스크립트에 웹상에서 텍스쳐팩 파일을 받아서 적용하는 함수[48]가 있기 때문. 잘 오용하면 이론상으로는 다른 파일들도 적용할 수 있다. 근데, 이건 어디까지나 이론상. 실제로는 적용만 된다. 스킨 파일이나 GUI 파일들은 스크립트가 적용되었음을 인식하는데, 다른 파일(아이템, 터레인 등)은 적용되어있어도 적용된 것으로 인식하지 않는다.

스크립트 개발이 가장 활발했던 시기는 2번째 시기이다. 1번째 시기는 블록런처가 처음 알려졌을때 기존의 자바스크립트나 안드로이드를 좀 만질줄 아는 사람이 ModPE 스크립트를 개발해 내 많은 사람들이 스크립트 개발을 시작했으며, 이때부터 스크립트를 만들기 시작한 사람 중 대작을 만들어낸 사람이 굉장히 많다. 2번째 시기는 마인크래프트 버전 0.13.X ~ 0.14.X 일 때가 제일 활발했다. 당시에는 마인크래프트 업데이트가상당히 느렸기 때문에 블록런처의 개발자인 주웨이 장이 개발을 더 집중적으로 할 수 있었고, 거의 모든 메서드가 정상적으로 작동돼서 완성도가 높은 스크립트가 어마어마하게 많이 나왔다.[49] 여담으로, BE 버전이 꾸준히 업데이트되어 JE 버전의 기능을 대거 수용하게 되기 전[50]까지만 해도 JE의 기능을 추가해 주는 스크립트들이 인기를 끌었다. 네더월드 엔더월드는 물론이고 BE(당시 PE)에 없던 몹들과 블록, 기능들을 대거 추가시켰다. 심지어는 명령어와 명령 블록까지 있었다.

스폰알의 아이템 데미지가 해당 엔티티의 엔티티 타입 아이디이다. PC에서는 허스크의 엔티티가 좀비의 엔티티와 같고, 스트레이 / 위더 스켈레톤의 엔티티는 스켈레톤의 엔티티와 같으며, 좀비 말 / 해골 말 / 당나귀 / 노새의 엔티티는 일반 말과 같다. 참고로, PE에서도 스켈레톤과 위더 스텔레톤의 엔티티 타입 아이디가 0.14.3까지는 34로 동일했었다.

6.1. 동영상



저 영상은 5년 전 리뷰로 현재 ModPE 스크립트 수준은 퀄리티가 낮은 PC의 모드를 따라잡을 수 있는 수준으로 발전하게 되었다.[51] 그래도 아직은 PC의 모드를 따라잡기에는 모자란 퀄리티이다[52]

[1] 닉네임은 500 ISE인데 언제부터인가 실명으로 더 자주 불리게 되었다. [2] 둘 다 스크립트라고 읽는다. [3] 진저브레드는 아직 Switch가 추가되기 전 버전이다. [4] 생성자 호출시 Context를 넘겨주면 정상적으로 작동한다. [5] 다만 현재 서비스가 종료되어서 사용하는 것은 권장하지 않다. [6] MCPE Master는 procCmd도 안된다는 소문이 있다. [7] 당연히 이 두개는 블록런처 네이티브 함수를 사용할 수 없다. 단, 툴박스는 예외적으로 callScriptMethod();가 사용 가능했었다. 디컴파일하면 보인다. [8] 이는 Level.setTile(); 같은 메소드들도 정상적으로 작동한다는 말이 아니라 [9] Pocket Tool Patch [10] 1.1의 변경사항 때문에 업데이트가 어려워졌다고 한다. [11] 참고로 음수를 쓰면 아이템을 가져간다. [12] 인자가 실제 좌표를 적는것이다 [13] 인자가 원래 위치값에서 더하는 값이 된다. [14] 쓰래드로 1밀리초씩 딜레이를줘서 쓰면 된다는 소문이 있다 [15] 출처 링크 [16] 명령어 실행 결과가 아니다. [17] 함수 호출 시 인자 생략 => undefined가 넘어옴 => boolean형으로 형변환 => false로 바뀜 => 팅김. [18] 스플릿 컨트롤 시 십자가 부분이 바라보고 있는 부분이지만 일반 컨트롤 시 마지막으로 터치한 위치가 바라보는 곳이 된다. 화면을 움직이려고 하는 스와이프도 포함. 참고로, 플레이어 시선의 각도를 잘 지지고 볶아서 레이캐스트처럼 앞으로 for문을 날리는 방식으로 구현이 가능하다. [19] 여기에는 효과에 따라 다른 값을 넣는다. 여기에 무엇을 넣어야 할 지는 아래쪽의 포션 효과 상수 목록을 참조하여라 [20] 엔티티 코드라고도 불리나, 올바르지 않은 표현이다. [21] ScriptManager.java에는 계속 남아 있다. 단지, nativeSendChat();을 구현하는 부분의 소스가 없을 뿐이다. 심볼 안에 없다. [22] 만약 플레이 하고 싶은 스크린을 구하기를 원한다면 hud_screen을 쓰는것을 추천, in_game_play_screen은 게임자체가 돌아가는 월드 스크린이고 hud_screen은 GUI부분의 스크린이다. 따라서 다른스크린으로 왔다가 다시올때는 hud_screen만 호출이 되니 hud_screen을 쓰는것을 추천 [23] 예를들어 레벨 10에서 12가 되었다면, levelIsAdded는 2가 반환된다. [24] 예: /give @p spawn_egg 64 33이라고 치면 64개의 크리퍼 스폰알을 얻는다. [25] 마크 0.17.0(1.0)에서는 얻을수 없는듯 하다. spawn_egg라는 아이템이 존재하지 않는다고 나온다 설명에 나왔다. 그냥 포켓인벤에디터 등으로 383번 아이템을 가져오면 된다. [26] 당연히 MCPE 마스터와 ToolBox에서는 사용할 수 없다. 단, 툴박스에서는 예외적으로 callScriptMethod(); 사용 가능. [27] 마인크래프트 pe 0.10.5를 지원하는 가장 높은 버전의 블록런처 [28] 컴파일의 반대과정. 기계어를 프로그래밍 언어로 바꾸는 작업이다. [29] 원래 스킨 크기. 지금은 64×64인 경우도 있다. [30] 스크립트 자체를 접은 것 같다. 또는 군입대 문제로 추정. [31] 제작자 팬동이 블로그를 통해 모든 스크립트를 2차 수정 및 공유 허용을 하였다. [32] 이는 MCPE의 버전이 업데이트 되면서 호환 문제인 것으로 보인다. [33] 팔리기 전의 MCPE KOREA에서 나름 활발히 활동했던 스크립터이다. [34] 보통 공백이라고 부른다. [35] 현재는 Toolbox for Minecraft: PE 라는 이름으로 런처 및 ModPE 스크립트 인터프리터의 역할도 한다. [36] MrArm [37] 스크립트 뿐 아니라 다른 쪽에서도 활발히 활동 하는 프로그래머이다. 지금은 ModPE에 손을 아예 놓아서 인지 아예 업데이트가 없는 상태. [38] 한 번 로그 사용을 하면 웬만한 건 다 기록 되었다. 플레이어 접속, 아이템(블록) 설치/사용, 타격, 죽음, 폭발 등 스크립트로는 가져올 수 없는 아이피를 제외하면 기록할 수 있는 건 다 기록하도록 만들어서인지 테러범 잡기에도 수월했다. [39] 1.0.3 버전 까지는 직접 명령어를 치는 방식이였으나, 1.0.4부터 GUI로 변경되었다. [40] 원래 제작자는 2.0.0을 마지막 버전으로 하기로 계획했었다. 하지만 2.0.0버전을 이미 업로드 하고 나서 일부 기능들에 오류가 있다는 것을 뒤늦게 알아채는 바람에(...) 결국 2.0.x 버전으로 계속 업데이트 하게 되었다. [41] 손을 놓은 건 맞으나, 폰을 새로 바꾼 후 데이터를 옮기는 과정에서 스크립트 파일들을 빼고 옮겨버렸고, 미처 그걸 생각치 못하고 공장 초기화 까지 해버려서 가장 최근까지 작업했던 것들이 날라가 버렸다(...) [42] 블록런처가 업데이트되면서 ModPE 스크립트는 서버에서 작동할 수 없게 되었다. (LAN은 제외). 제작자의 허용 없이 해당 스크립트들을 파는 사람들이 있으니, 주의할 것. 대부분 개발자의 블로그나 깃허브, 트위터 등을 뒤적거리면 찾을 수 있다. [43] 원래, 한국 Google Play에서는 뜨지 않았으나 언제인지 뜨게 되었다 [44] 지금은 다시 지원하고 있다. [45] 공유가 기준이지, 완성이 기준인 것은 아니다. [46] android.media.MediaPlayer나 android.media.SoundPool가 아니라, Level.playSound(); 부분이다 [47] 압축을 할 때, 보안을 강화하려는 등의 이유로 암호를 걸어놓으면 적용할 수 없다. [48] ModPE.overrideTexture(); [49] 밑의 스마트무빙 모드는 6.0 이라 부르는데 0.9.x 시절이고 0.13.x 시절에는 국내 카페 MK 에서 공유한 0isback 이 만든 스마트 무빙 1.0~1.1 이 엄청난 인기를 끌었다. 스마트 무빙 6.0 도 이 버전에서 적용이 되었지만 버그가 아주 많았다.. 1.1은 자바 에디션의 그랩과 그랩 사용 시 나오는 화살표와 스프린트 사용 시 뜨는 번개 표시, 슈퍼점프에 이어 여우무빙 까지 구현한 당시 혁신적인 모드. 1.1 버전까지 공유하고 1.6 엔 모션과 더 많은 기능을 추가했지만 일부 테스터들에게만 공유하고 업뎃으로 인한 각종 코드 변환으로 개발 중단.. 인 줄 알았으나 1.2.x 까지 적용되는 모드를 새로 개발, 공유하고 중단. 1.1 버전은 현재 카페가 바뀌면서 다운로드 글은 비공개 상태이지만 후자는 현재까지도 블로그에서 공유 중이다. [50] 위에서 말한 2번째 시기도 여기에 포함된다. [51] 저 모드는 스마트무빙모드. [52] 다만 최근 버전에는 리소스팩, 행동팩이 추가되어서 스크립트와 병행하여 사용하면 봐줄만 한 퀄리티는 나올 수 있다.