본문 바로가기
프로그래밍/마인크래프트

파이썬 마인크래프트 : 파이썬을 멀티로 사용하는 방법

by 인성패밀리 2022. 6. 22.
반응형

얼마전 파이썬으로 마인크래프트가 가능하다는 점을 알고 멀티로도 사용이 가능한지 테스트를 해보았는데 다른 사용자들도 사용이 가능하였습니다.

 

저는 대부분이 사용하는 스피곳을 이용하여 서버를 열고 라즈베리주스를 통해서 파이썬과 연동시키는 방법으로 멀티 서버를 열었습니다. 연동 과정은 상세히 추후 올리겠습니다.

 

보통 player class를 많이 사용하는데 entity class를 사용하면 됩니다.

 

아래 코드는 일반적으로 내가 가고 싶은 방향을 갈때 쓰는 코드입니다. player class 함수를 사용한 것입니다.

from mcpi.minecraft import Minecraft


# 파이썬과 마인크래프트의 각 축의 괴리값
X_AXIS = 240
Y_AXIS = -78
Z_AXIS = -208

mc = Minecraft.create()  # 서버와 연결

# 내가 가고 싶은 좌표 -230 63 355
mc.player.setTilePos(-230 + X_AXIS, 63 + Y_AXIS, 355 + Z_AXIS)

 

entity를 사용하려면 플레이어의 id값을 알아야합니다.

id 값을 알아보는 방법은 두 가지입니다. 우선 코드를 통해서 알아보겠습니다.

from mcpi.minecraft import Minecraft

mc = Minecraft.create()  # 서버와 연결

temp = mc.getPlayerEntityIds()
print(temp)

# 결과값은 리스트로 보이게 됩니다.

getPlayerEntityIds method를 사용하면 됩니다.

 

서버를 실행했을 시 cmd 창에서도 이 값을 볼 수 있습니다.

유저가 접속했을 때 "entity id 264" 라고 ID 값이 보이게 됩니다. 

각각의 유저가 고유한 값을 가지고 있습니다. 이 값을 이용하여 플레이어를 원하는 위치로 이동해보겠습니다.

from mcpi.minecraft import Minecraft


# 파이썬과 마인크래프트의 각 축의 괴리값
X_AXIS = 240
Y_AXIS = -78
Z_AXIS = -208

mc = Minecraft.create("서버 관리자 ip주소 필요")  # 서버와 연결

mc.entity.setTilePos(256, -230+X_AXIS, 63+Y_AXIS, 355+Z_AXIS)

다음의 코드처럼 player class 대신 entity class 함수로 id 속성을 추가하여 사용이 가능합니다. 다른 함수들도 id 속성을 추가하여 사용한다면 다른 플레이어도 서버 관리자에게 적용이 되지 않고 자기를 기준으로 사용이 가능합니다.

 

이때 mc = Mincraft.create() 서버와 연결하는 코드에 서버 관리자의 ip주소를 문자열로 넣어야만이 사용 가능합니다.

 

반응형

댓글