67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
from mc import *
|
|
from time import sleep
|
|
from sys import argv
|
|
import input
|
|
|
|
mc = Minecraft()
|
|
|
|
player = True
|
|
|
|
if len(argv)>=2 and argv[1] != "me":
|
|
playerPos = mc.player.getPos()
|
|
playerYaw = mc.player.getRotation()
|
|
entity = mc.spawnEntity(argv[1], playerPos.x - sin(radians(playerYaw)), playerPos.z,
|
|
playerPos.z + cos(radians(playerYaw)), "{NoAI:1}")
|
|
player = False
|
|
else:
|
|
entity = mc.getPlayerId()
|
|
|
|
lastPlatform = None
|
|
lastPlatformBlock = None
|
|
|
|
UNSOLID = set([WATER_FLOWING.id,WATER_STATIONARY.id,AIR.id,LAVA_FLOWING.id,LAVA_STATIONARY.id])
|
|
|
|
while True:
|
|
pos = mc.entity.getPos(entity)
|
|
yaw = mc.entity.getRotation(entity)
|
|
move = False
|
|
if input.wasPressedSinceLast(input.NEXT):
|
|
pos.y -= 1
|
|
move = True
|
|
if input.wasPressedSinceLast(input.PRIOR):
|
|
pos.y += 1
|
|
move = True
|
|
if input.wasPressedSinceLast(input.LEFT):
|
|
yaw -= 15
|
|
mc.entity.setRotation(entity,yaw)
|
|
if input.wasPressedSinceLast(input.RIGHT):
|
|
yaw += 15
|
|
mc.entity.setRotation(entity,yaw)
|
|
if input.wasPressedSinceLast(input.UP):
|
|
pos.x += .5 * -sin(radians(yaw))
|
|
pos.z += .5 * cos(radians(yaw))
|
|
move = True
|
|
if input.wasPressedSinceLast(input.DOWN):
|
|
pos.x -= .5 * -sin(radians(yaw))
|
|
pos.z -= .5 * cos(radians(yaw))
|
|
move = True
|
|
if move:
|
|
if player:
|
|
under = (int(floor(pos.x)),int(floor(pos.y))-1,int(floor(pos.z)))
|
|
block = mc.getBlock(under)
|
|
if block in UNSOLID:
|
|
drew = under
|
|
mc.setBlock(drew,GLASS)
|
|
else:
|
|
drew = None
|
|
mc.entity.setPos(entity,pos)
|
|
if lastPlatform != under:
|
|
mc.setBlock(lastPlatform,AIR)
|
|
lastPlatform = None
|
|
if drew:
|
|
lastPlatform = drew
|
|
lastPlatformBlock = block
|
|
else:
|
|
mc.entity.setPos(entity,pos)
|
|
sleep(0.2)
|
|
|