Skip to content

jhoonpark-codes/mincraft_with_python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 

Repository files navigation

image image image

minecraft_with_python

작성자 : 박정훈

Python으로 Minecraft 조작하여 데이터셋 생성하기

required list

Install

pip install javascript
pip install mcpi
pip install mineflayer

Usage

STEP 1. activate local server

  • Minecraft V1.12 implement 'server.js'

STEP 2. create mcpi obj with create() (23.12.31 수정)

# mcpi
from mcpi.minecraft import Minecraft
from mcpi.connection import Connection
import mcpi.block as block

address, port = 'localhost', 4711
conn = Connection(address, port)

mc = Minecraft(conn).create()

STEP 3. import javascript and require mineflayer

KEEP IN MIND

  • MineFlayer -> JavaScript로 구성
  • Minecraft가 서버와 HTTP를 주고받으며 통신하기 때문에 Javascript로 쓰여진 MineFlayer의 명령어를 Python단에서 require을 통해 호출하는 방법으로 작동
from javascript import require
mineflayer = require('mineflayer')

현재까지 진행 정도

Scale-up test demo video

HISTORY

MCPI API critical issues (23.12.20)

"One of the questions I get asked a lot about the Minecraft: Pi edition APi is "how can I get the direction the player is facing?" and I have always had to say "sorry you can't do that"

  • Block을 생성해서 의자, 책상을 만들어도 방향 설정이 자유롭지 않기 때문에 스크린캡처 시 올바른 방향 설정 불가능

MineFlayer로 확장 중 (23.12.22)

  • MineFlayer API를 통해 bot을 생성하여 필요한 행동을 명령 내리는 형태로 진행 됨
  • MineFlayer 실행 시 참고할 점

Node.js 설치해야 함 (https://nodejs.org/en) third party plugin도 있음 (https://github.com/PrismarineJS/mineflayer#third-party-plugins)

from javascript import require, once
mineflayer = require('mineflayer')

bot = mineflayer.createBot({ 'host': HOST, 'port': PORT_NO, 'username': BOT_USERNAME, 'hideErrors': False })

once(bot, 'login')
bot.chat('I Spawned')
  • 중간결론
  • MineFlayer은 bot을 만들어서 액션하게 하는 모듈
  • bot으로 block은 생성할 수 있으나 봇의 시야에서 스크린을 캡처할 수 없음
  • 결국 mcpi와 마찬가지로 시야 및 방향에서 문제가 생김
  • (24.01.03 Update) 99% 자동화까진 가능할 것으로 보임

Picraft 도입 검토 중 (23.12.31)

  • mcpi와 비슷한 Picraft 라이브러리 사용 가능
  • mcpi와 비슷한 기능을 하나 mcpi에선 안 되는 기능들이 다수 존재

참조 사이트 : https://picraft.readthedocs.io/en/release-1.0/install.html

치명적 결함 (24.01.01)

기존 Minecraft 서버에 로그인 되지 않을 때 해결법 (24.01.06)

  • 현상 : 이미 사용중인 이름이라는 메세지와 함께 기존 계정으로 로그인 할 수 없으며 Microsoft 계정에 MineCraft가 없다는 메세지가 뜨며 에러 발생
  • 해결 1 : Minecraft 홈페이지에서 Microsoft 계정으로 로그인
  • 해결 2 : 런처 재다운로드
  • 완료

이거 때문에 갑자기 안 되는 줄 알고 많이 쫄았다.

SCALE-UP test DONE! (24.01.16 updated)

  • main.py
  • block -> 벽 : block.STONE 의자 : block.WOOD 컵 : block.GOLD_ORE
  • 10회 반복 생성에 걸리는 시간 3초 미만
  • screenshot : PIL.ImageGrab, cv2.cvtColor, cv2.imshow, cv2.waitkey, cv2.imwrite
  • screenshot 생성 완료
  • random.random으로 의자의 위/아래/좌/우를 랜덤하게 선택하여 스크린 캡처 완료

DONE(24.01.16):

  1. 만들고 -> 찍고 -> 지우고 -> 다시 만들고 자동화 TODO
  2. 의자, 컵이 이쁘진 않긴 함

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published