예제 #1
0
    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()
예제 #2
0
 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?"
         )
예제 #3
0
 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'
예제 #4
0
 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)
예제 #5
0
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)
예제 #6
0
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)