mc1.py

Created by furicoda

Created on May 22, 2024

11.8 KB


from mc2 import*
def interfaceupdate(s):
  if s.rsmoveitem and not keydown(KEY_OK):
    s.rsmoveitem=False
  if not s.rsmoveitem and keydown(KEY_OK) and s.inInv!=0:
      s.rsmoveitem=True
      s.onmoveitem=not s.onmoveitem
      if s.onmoveitem:
        get=s.invnumbers[s.invcase]
        if keydown(KEY_RIGHT) and not s.invcase in {22,32}:
          get=ceil(get/2)
        s.inventory[36]=s.inventory[s.invcase]
        s.invnumbers[36]=get
        s.invdata[36]=s.invdata[s.invcase]
        s.invdata[s.invcase]=0
        useitem(s,s.invcase,get)
        
        if s.invcase==22 :
          debug(s.inventory[s.invcase])
          for xut in range(4):
            useitem(s,18+xut,1)
            refreshcase(s.parent,18+xut)
        elif s.invcase==32 and s.inventory[s.invcase]!="*":
          
          for xut in range(9):
            useitem(s,23+xut,1)
            refreshcase(s.parent,23+xut)
        refreshcase(s.parent,s.invcase)
        refreshcase(s.parent,36)
      else:
        if s.invcase==22 and s.inventory[s.invcase]!="*":
          s.onmoveitem=True
          if s.inventory[36]==s.inventory[22]:
            tempi=getstackvalue(s.parent,s.inventory[36])
            addo=tempi-s.invnumbers[36]
            if addo>0:
              s.invnumbers[36]+=s.invnumbers[22]
              refreshcase(s.parent,36)
              for xut in range(4):
                useitem(s,18+xut,1)
                refreshcase(s.parent,18+xut)
       
        elif s.invcase==32 and s.inventory[s.invcase]!="*":
          s.onmoveitem=True
          if s.inventory[36]==s.inventory[32]:
            tempi=getstackvalue(s.parent,s.inventory[36])
            addo=tempi-s.invnumbers[36]
            if addo>0:
              s.invnumbers[36]+=s.invnumbers[32]
              refreshcase(s.parent,36)
              for xut in range(9):
                useitem(s,23+xut,1)
                refreshcase(s.parent,23+xut)
        elif s.invcase!=35:
          topose=s.invnumbers[36]
          if keydown(KEY_LEFT):
            if topose!=1:
              s.onmoveitem=True
            topose=1
          if s.inventory[s.invcase]=="*":
            s.inventory[s.invcase]=s.inventory[36]
            s.invnumbers[s.invcase]+=topose
            s.invdata[s.invcase]=s.invdata[36]
            s.invdata[36]=0
            useitem(s,36,topose)
          elif s.inventory[s.invcase]==s.inventory[36]:
            tempi=getstackvalue(s.parent,s.inventory[36])
            addo=tempi-s.invnumbers[s.invcase]
            if topose>addo:
              useitem(s,36,addo)
              s.onmoveitem=True
              s.invnumbers[s.invcase]+=addo
            else:
              useitem(s,36,topose)
              s.invnumbers[s.invcase]+=topose
        
          else:
            s.onmoveitem=True
            s.inventory[s.invcase],s.inventory[36]=s.inventory[36],s.inventory[s.invcase]
            s.invnumbers[s.invcase],s.invnumbers[36]=s.invnumbers[36],s.invnumbers[s.invcase]
            s.invdata[s.invcase],s.invdata[36]=s.invdata[36],s.invdata[s.invcase]
           
          refreshcase(s.parent,s.invcase)
          refreshcase(s.parent,36)
          
  if s.inInv==0:
    for ele in {0,1,2,3,4,5}:
      if keydown(s.keyindex[ele]):
        s.invcase=ele
        hotbarrefresh(s)
        return
  else:
    for ele in s.prerangedihuit:
        if keydown(s.keyindex[ele]):
            s.invcase=ele
            hotbarrefresh(s)
            
    if s.inInv==1:
      minicraftupdate(s)
    elif s.inInv==2:
      bigcraftupdate(s)
    elif s.inInv==3:
      furnaceupdate(s)
    
def furnaceupdate(s):
  if s.inventory[33] in s.parent.cookable:
    if s.inventory[34] in s.parent.fuels:
      if 0==0:
        useitem(s,34,1)
      
  tp={30:33,42:34,39:35}
  for ele in tp.keys():
    if keydown(ele):
      s.invcase=tp[ele]
      hotbarrefresh(s)
      break
                   
def minicraftupdate(s):
 tp={30:18,31:19,36:20,37:21,39:22}
 for l in tp.keys():
  if keydown(l):s.invcase=tp[l];hotbarrefresh(s);break
 m=s.inventory[18]+s.inventory[19]+s.inventory[20]+s.inventory[21]
 t=get_item_craft_mini(m)
 if s.inventory[22]!=t[0]:s.inventory[22]=t[0];s.invnumbers[22]=t[1];refreshcase(s.parent,22)
def bigcraftupdate(s):
  tp={30:23,31:24,32:25,36:26,37:27,38:28,42:29,43:30,44:31,39:32}
  for ele in tp.keys():
    if keydown(ele):
      s.invcase=tp[ele]
      hotbarrefresh(s)
      break
            
  bigcraftis=s.inventory
  temp=get_item_craft_big(bigcraftis)
  if s.inventory[32]!=temp[0]:
    tempo=s.parent.invcaseposition[32]
    s.inventory[32]=temp[0]
    s.invnumbers[32]=temp[1]
    s.invdata[32]=100  
    refreshcase(s.parent,32)


def updatebloc(gamegeror,xb,yb,to,canreplace,extra={}):
  blockpos=xb+yb*16
  
  temp=gamegeror.actualchunk
  if not canreplace and temp[blockpos]!="*":
    return False
  gamegeror.actualchunkticker[xb+yb*16]=getblocticks(to)
  tp=temp[0:blockpos]+to+temp[blockpos+1:144]
  gamegeror.actualchunk=tp
  afftex(xb*20,yb*20,to,gamegeror)
  return temp[blockpos]




def hotbarrefresh(p):
  if p.invcase==p.oldinvcase:return
  temp=p.parent.invcaseposition
  refreshcase(p.parent,p.invcase)
  refreshcase(p.parent,p.oldinvcase)
  p.oldinvcase=p.invcase
def hotbarprint(player):
  for spx in range(6):
    refreshcase(player.parent,spx)
def physicupdate(s,dt,game):
    ret={"wall":[]}
    if s.speedx!=0:
      nbofchecks=2+s.colly//20
      dep=s.colly/nbofchecks-1
      checks=[s.Py+dep*ad for ad in range(nbofchecks+1)]
      s.Px+=s.speedx*dt
      condis=[]
      xpos=s.Px+s.collx*(s.speedx>0)
      for ycheck in checks:
          ypos=int(ycheck/20)
          if ypos<9:
            tp=getblock(int(xpos/20),ypos,game)
            condis.append(tp in s.parent.traversable)
            ret["wall"].append(tp)
          else:
              condis.append(True)
      if False in condis:
          s.Px-=s.speedx*dt
      s.speedx=0
    s.speedy-=dt*9.81
    nbofchecks=2+s.collx//20
    dep=s.collx/nbofchecks-1
    checks=[s.Px+dep*ad for ad in range(nbofchecks+1)]
    maxh=False
    if s.speedy>0:
        maxh=True
  
    if maxh and s.speedy<0 :
        s.lastmaxheight=s.Py
    descente=s.speedy<0
    s.Py-=s.speedy
    condis=[]
    if descente:
          ypos=int((s.Py+s.colly-1)/20)
    else:
          ypos=int((s.Py)/20)
    for xcheck in checks:
          if ypos<9:
              condis.append(getblock(int((xcheck)/20),ypos,game)in s.parent.traversable)
          else:
              condis.append(True)
    if False in condis:
          
  
        if descente:
              s.onground=True
              dif=s.Py-s.lastmaxheight
              if dif>60:
                dam=int(dif/20)-2
                changelife(s,-dam)
              s.lastmaxheight=s.Py
        s.Py+=s.speedy
        s.speedy=0
          
    else:
        if descente:
              s.onground=False
          
    return ret
def AffBigCraft(player):
  temp=player.parent.invcaseposition
  for x in range(9):
    refreshcase(player.parent,23+x)
  refreshcase(player.parent,32)
  
  bx=temp[32][0]-25
  by=temp[32][1]+10
  f(bx,by,15,6,"gray")
  for x in range(6):
    f(bx+20-x,by+x+4,1,-2*(x+1),"gray")
def BlocKSelectRefresh(p):
    p.destimer=0
    if int(p.Py/20)-p.Blolistpos[p.Bloselectn][1]<9:
      tempbl=getblock(int(p.Px/20)+p.Blolistpos[p.Bloselectn][0],int(p.Py/20)-p.Blolistpos[p.Bloselectn][1],p.parent)
      if tempbl in p.parent.blocksbreakstime.keys():
        p.blocktodestime=p.parent.blocksbreakstime[tempbl]
      else:
        p.blocktodestime=2000
      
      
    else:
      p.blocktodestime=2000
    if int(p.Py/20)-p.Blolistpos[p.Bloselectn][1]<9:
      f(p.BlX*20,p.BlY*20,20,1,"black")
      f(p.BlX*20,p.BlY*20+19,20,1,"black")
      f(p.BlX*20,p.BlY*20,1,20,"black")
      f(p.BlX*20+19,p.BlY*20,1,20,"black")
      if p.oldBlX+p.oldBlY*16<144:
        afftex(p.oldBlX*20,p.oldBlY*20,p.parent.actualchunk[p.oldBlX+p.oldBlY*16],p.parent)
      
      p.oldBlX=p.BlX
      p.oldBlY=p.BlY
      p.lsblx=int(p.Px/20)
      p.lsbly=int(p.Py/20)
class mob():
  def __init__(s,game,posx=0,posy=0,typ=0,dim=0):
    s.dimension=dim
    s.lastmaxheight=300
    if typ==0:
      s.collx=10
    if typ==1:
      s.collx=20
    s.colly=20
    s.col=20
    s.life=20
    s.typ=typ
    s.Px=posx
    s.Py=posy
    s.lPx=posx
    s.lPy=posy
    s.parent=game
    s.mov=0
    s.onground=False
    s.speedy=0
    s.speedx=0
    s.speedmax=30
    s.movloader=0
    s.theplayer=game.player
    s.Chx=game.player.Chx
    s.Chy=game.player.Chy
  def update(s,game):
    if s.theplayer.inInv :
      return
    if s.Chx!=game.player.Chx or s.Chy!=game.player.Chy or s.dimension!=game.player.dimension:
      return
    if s.life<=0:
      f(int(s.lPx),int(s.lPy),s.collx,s.colly,game.skycolor)
      if s.typ==1:
        debug("yyy")
        s.parent.itemgeror.append(grounditem(int(s.Px),int(s.Py),s.Chx,s.Chy,s.dimension,{"nb":1,"typ":"Y"}))
      game.mobgeror.remove(s)
      del s
      return
    if s.typ==0:
      zombieupdate(s,game)
    elif s.typ==1:
      blazeupdate(s,game)
def blazeupdate(s,g):
  f(int(s.lPx),int(s.lPy),s.collx,s.colly,g.skycolor)
  px=int(s.Px)
  py=int(s.Py)
  f(px+6,py,8,6,"yellow")
  f(px+6,py+6,8,2,"brown")
  se(px+7,py+2,"white")
  se(px+12,py+2,"white")
  se(px+8,py+2,"black")
  se(px+11,py+2,"black")
  f(px+2,py+3,2,7,"yellow")
  f(px+17,py,2,7,"yellow")
  f(px+2,py+3,2,7,"yellow")
  
  f(px+7,py+5,2,7,"yellow")
  f(px+13,py+4,2,7,"yellow")
  f(px+3,py+11,2,7,"yellow")
  f(px+10,py+12,2,7,"yellow")
  f(px+16,py+11,2,7,"yellow")
def zombieupdate(s,g):
  if s.Px>s.theplayer.Px:
      s.mov=2
      s.speedx=-s.speedmax
  else:
      s.mov=1
      s.speedx=s.speedmax
      
      
  if distance2(s.Px,s.Py,s.theplayer.Px,s.theplayer.Py)<1600:
      changelife(s.theplayer,-1)
      
  temp=physicupdate(s,game.dt,game)["wall"]
  for ele in temp:
      if ele not in game.traversable:
        if s.onground:
          s.speedy=0.4
  refresh(s,zombie=True)

class grounditem():
  def __init__(s,px,py,cx,cy,dim,info):
    s.collx=10
    s.colly=10
    s.speedy=0
    s.speedx=0
    s.Px=px
    s.Py=py
    s.lPx=px
    s.lPy=py
    s.Chx=cx
    s.Chy=cy
    s.iteminfo=info
    s.lastmaxheight=0
    s.dimension=dim
    s.life=9
    s.inte=randint(0,9)
    s.ain=0
  def update(se,g):
    if se.Chx!=g.player.Chx or se.Chy!=g.player.Chy or se.dimension!=g.player.dimension:
      return
    
    se.ain+=1
    if se.ain==10:
      se.ain=0
    if se.inte!=se.ain:
      return
    se.parent=g
    f(int(se.lPx),int(se.lPy),se.collx,se.colly,g.skycolor)
    if se.Py>160:
      g.itemgeror.remove(se)
      f(int(se.Px),int(se.Py),10,10,g.skycolor)
      del se
      return
    physicupdate(se,g.dt*10,g)
    f(int(se.Px),int(se.Py),10,10,color(240, 216, 129))
    f(int(se.Px),int(se.Py),10,2,color(120,96,9))
    se.lPx=se.Px
    se.lPy=se.Py
    if distance2(se.Px,se.Py,g.player.Px,g.player.Py)<1600:
      temp=addinventory(g.player,se.iteminfo["typ"],se.iteminfo["nb"],False)
      if temp!="Nope":
        g.itemgeror.remove(se)
        f(int(se.Px),int(se.Py),10,10,g.skycolor)
        del se
        return
def addinventory(s,objid,nbof,cre=True):#to make
    gamegeror=s.parent
    ret=[]
    for ele in range(18):
      if s.inventory[ele]==objid:
        tempi=getstackvalue(s.parent,s.inventory[ele])
        addmax=tempi-s.invnumbers[ele]
        ret.append(ele)
        if addmax>=nbof:
          s.invnumbers[ele]+=nbof
          if ele<6:
            refreshcase(s.parent,ele)
          return ret
        else:
          s.invnumbers[ele]+=addmax
          nbof-=addmax
    for ele in range(18):
      if s.inventory[ele]=="*":
        s.inventory[ele]=objid
        s.invnumbers[ele]=nbof
        ret.append(ele)
        if ele<6:
          refreshcase(s.parent,ele)
        return ret
    if cre:
      curx=int(s.Px/20)+s.Blolistpos[s.Bloselectn][0]
      cury=int(s.Py/20)-s.Blolistpos[s.Bloselectn][1]
      s.parent.itemgeror.append(grounditem(curx*20+5,cury*20+5,s.Chx,s.Chy,s.dimension,{"nb":nbof,"typ":objid}))
    return "Nope"

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.