def __init__(self, master=None): self.mc_linked = False self.img_loaded = False self.result_made = False self.bytes = 0 self.maxbytes = 0 super().__init__(master) self.master = master self.image = "" master.title("PyMcBuilder") master.geometry("325x280") master.iconbitmap(os.path.join(os.getcwd(), 'images\\Logo.ico')) self.pack() try: self.mc = minecraft.Minecraft.create() pymc.chat(self.mc, "Minecraft is linked!") self.mc_linked = True except: pass try: json_file = open("blocks.json") self.json_put = json.load(json_file) except: messagebox.showerror( "PyMcBuilder", "blocks.json is not found!\nplease reinstall PyMcBuilder.") sys.exit(1) self.create_widgets()
def link_minecraft(self): try: self.mc = minecraft.Minecraft.create() pymc.chat(self.mc, "Minecraft is linked!") self.mc_linked = True except ConnectionRefusedError: messagebox.showerror( "PyMcBuilder", "Minecraft is not linked!\nDo you have the RaspberryJamMod and is Minecraft open?" )
def change_label_text(self): if self.img_loaded == False: self.img_loaded = True else: if self.mc_linked == False: self.alerts_label['fg'] = 'red' self.alerts_label['text'] = 'Minecraft is not linked!' self.print_img['state'] = 'disabled' else: if self.result_made == False: self.alerts_label['fg'] = 'red' self.alerts_label['text'] = 'No MC version image made!' self.print_img['state'] = 'disabled' else: self.alerts_label['fg'] = 'black' self.alerts_label['text'] = 'Ready!' pymc.chat(self.mc, "Ready!") self.print_img['state'] = 'active'
def print_image(self): oldPos = self.mc.player.getPos() playerPos = [round(oldPos.x), round(oldPos.y), round(oldPos.z)] pymc.chat(self.mc, "Building image!") num_temp = self.imhei * self.imwid - 1 for hei in range(self.imhei): for wid in range(self.imwid): #print(used[wid + (imhei * hei)]) gblock = get_block(self.bused[num_temp]) self.mc.setBlock(playerPos[0] + wid, playerPos[1] + hei, playerPos[2], gblock) num_temp -= 1 pymc.chat(self.mc, "Done!!") pymc.chat(self.mc, "Please star us on github if you like the result!", 2)
from PIL import Image as pillow from blockid import get_block import mcpi.block as block import functions as pymc from tqdm import tqdm import tkinter as tk # Functions # Main code mc = minecraft.Minecraft.create() try: json_file = open("blocks.json") json_put = json.load(json_file) except: pymc.chat(mc, "blocks.json not found, exiting!", 0) sys.exit(1) try: rim = pillow.open(sys.argv[1]) except: pymc.chat(mc, "bad image, exiting!", 0) sys.exit(1) orders = [] used = [] imwid, imhei = rim.size if imhei > 200: maxheight = 200 rim.thumbnail((200, maxheight), pillow.ANTIALIAS) imwid, imhei = rim.size pymc.chat(mc, "image is over 200 pixels, reducing height.", 1)
def main(): ''' The bot's main loop ''' botComm = functions.getSocket(cfg.NICK, cfg.PASS, cfg.JOIN) #hostComm = functions.getSocket(cfg.JOIN, cfg.HOSTPASS, cfg.JOIN) CHAT_MSG = re.compile(r"^:\w+!\w+@\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :") #functions.chat(sock, "Booting up...") # Fire the one-off functions to be performed on boot functions.checkDatabaseExists() functions.setAllToLurker() # Create asynchronous, recurring child processes... fillOpList = Process(target=functions.threadFillOpList, daemon=True) updateDatabase = Process(target=functions.threadUpdateDatabase, args=([botComm]),\ daemon=True) subscribeTimer = Process(target=functions.timer, args=('subscribe', 3600,\ [botComm, cfg.JOIN.lower()]), daemon=True) #typeAsHost = Process(target=functions.hostChat, args=([hostComm,\ # os.fdopen(os.dup(sys.stdin.fileno()))]), daemon=True) thankLatest = Process(target=functions.thankLatest, args=([botComm]),\ daemon=True) # ...and start them fillOpList.start() updateDatabase.start() subscribeTimer.start() typeAsHost.start() thankLatest.start() previousStreamState = False while True: currentStreamState = functions.streamIsUp() if currentStreamState != None: if (currentStreamState is True) and (currentStreamState != previousStreamState): printv("STREAM ACTIVE!", 1) previousStreamState = currentStreamState elif (currentStreamState is False) and (currentStreamState != previousStreamState): printv("STREAM INACTIVE!", 1) functions.setAllToLurker() previousStreamState = currentStreamState #hostResponse = hostComm.recv(1024).decode("utf-8") #if hostResponse == "PING :tmi.twitch.tv\r\n": # hostComm.send("PONG :tmi.twitch.tv\r\n".encode("utf-8")) response = botComm.recv(1024).decode("utf-8") if response == "PING :tmi.twitch.tv\r\n": botComm.send("PONG :tmi.twitch.tv\r\n".encode("utf-8")) else: try: username = re.search(r"\w+", response).group(0) except AttributeError: continue functions.updateLurkerStatus(username) message = CHAT_MSG.sub("", response) if username != 'bot': functions.printv("\n" + username + ": " + message, 1) if len(message) > 0: if message.strip()[0] == "!": # A command has been issued fullMessage = message.strip().split(' ') command = fullMessage[0][1:] username = response[response.index(':') + 1: response.index('!')] arguments = [botComm, username] + fullMessage[1:] if command in cfg.opOnlyCommands: if not functions.isOp(username): functions.chat(botComm, "You don't have permission to run that command!") continue try: getattr(commands, command)(arguments) except (AttributeError, TypeError) as e: functions.printv(e, 4) functions.printv("No function by the name " + command + "!", 4) else: # Increment the number of sent messages if username.lower() not in ['tmi', cfg.NICK.lower(), cfg.JOIN.lower()]: functions.incrementNumberOfChatMessages() # Read chat and execute commands based on what people are talking about if "discord" in message.lower(): getattr(commands, 'discord')([botComm, username]) elif "twitter" in message.lower(): getattr(commands, 'twitter')([botComm, username]) # Sleep and then rerun loop T.sleep(1)