https://shit.pub/an/tz/1007/code/Code LibraryShareable snippets for the SHITP community.https://shit.pub/an/tz/1007/code/Code Library"https:\/\/shit.pub\/an\/tz\/1007\/code\/" — Creaddinscart

Creaddinscart.

SHITP Network

SHITP Network

— Creaddinscart

SHITP Developer

SHITP Code Library

Shareable code snippets for the SHITP community. Click "Show preview" to expand, or open the permalink for a dedicated page.

Permalink
Source code location: https://github.com/creaddinscart/MinecraftBotClient/blob/v1.3.1/src/network/version_checker.py
import json
import requests

class VersionChecker:
    BASE_URL = "https://shit.pub/s/developer/minecraft/client/MinecraftBotClient-MBC/"
    VERSION_URL = BASE_URL + "verify/txt.txt"
    ANNOUNCEMENT_URL = BASE_URL + "announcement.txt"
    TIMEOUT = 8

    def __init__(self):
        self.latest_version = None

    def _get_text(self, url):
        response = requests.get(url, timeout=self.TIMEOUT)
        response.raise_for_status()
        return response.text.strip()

    def fetch_version_info(self):
        raw = self._get_text(self.VERSION_URL)
        try:
            data = json.loads(raw)
            version = data.get("version", "")
            self.latest_version = version or None
            return self.latest_version, raw
        except (json.JSONDecodeError, ValueError):
            lines = [line.strip() for line in raw.splitlines() if line.strip()]
            self.latest_version = lines[0] if lines else None
            return self.latest_version, raw

    def fetch_announcement(self):
        raw = self._get_text(self.ANNOUNCEMENT_URL)
        lines = [line for line in raw.splitlines() if line.strip()]
        return "\n".join(lines) if lines else None

    def is_update_available(self, current_version):
        if not self.latest_version:
            try:
                self.fetch_version_info()
            except Exception:
                return False
        return bool(self.latest_version) and self.latest_version != current_version
Permalink
Source code location: https://github.com/creaddinscart/MinecraftBotClient/blob/main/src/ui/console_ui.py
import os
import random
import string
import webbrowser
from src import i18n
from src.logger import SessionLogger, strip_ansi
from src.network.version_checker import VersionChecker
from src.network.connection_manager import ConnectionManager
from src.settings.settings_manager import SettingsManager
from src.ui.console_ui import ConsoleUI
from src.features.spam import SpamManager

class MinecraftBotClient:
    def __init__(self):
        self.settings = SettingsManager()
        i18n.set_language(self.settings.get_language())
        self.ui = ConsoleUI()
        self.version_checker = VersionChecker()
        self.connection_manager = ConnectionManager()
        self.logger = SessionLogger(self.settings.get_base_dir(), enabled=self.settings.get_log_enabled())
        self.spam = None
        self.username = None
        self.connected = False

    def run(self):
        self.ui.clear_screen()
        self.ui.print_banner()
        self.logger.log("START", f"MBC {self.settings.get_current_version()} launched, language={self.settings.get_language()}")

        self.remote_check()
        self.apply_config()

        while True:
            if not self.connected:
                self.connect_to_server()
            if self.connected:
                action = self.chat_loop()
                if action == 'exit':
                    break
                self.connected = False
            action = self.idle_loop()
            if action == 'exit':
                break

        self.logger.log("STOP", "MBC exited")
        self.logger.close()
        self.ui.print_success(i18n.t('label_goodbye'))

    def remote_check(self):
        try:
            latest, _ = self.version_checker.fetch_version_info()
            current = self.settings.get_current_version()
            if latest and latest != current:
                self._ui_event('print_warning', 'UPDATE', i18n.t('label_new_version', ver=latest, cur=current))
            else:
                self._ui_event('print_info', 'VERSION', i18n.t('label_version_same', cur=current))
        except Exception:
            self.logger.log("VERSION", "Version check failed (offline?)")

        self.ui.print_section(i18n.t('section_announcement'))
        try:
            announcement = self.version_checker.fetch_announcement()
            if announcement:
                for line in announcement.splitlines():
                    self.ui.print_raw(line)
                    self.logger.log("ANNOUNCE", strip_ansi(line))
            else:
                self.ui.print_info(i18n.t('label_announcement_none'))
        except Exception:
            self.ui.print_info(i18n.t('label_announcement_fail'))
            self.logger.log("ANNOUNCE", "Announcement fetch failed")

    def apply_config(self):
        self.username = self.settings.get_username().strip() or self.generate_random_username()
        self.ui.print_section(i18n.t('section_player_info'))
        self._ui_event('print_info', 'CONFIG', f"{i18n.t('label_server')}: {self.settings.get_server_address()}")
        self._ui_event('print_info', 'CONFIG', f"{i18n.t('label_version')}: {self.settings.get_minecraft_version()}")
        self._ui_event('print_info', 'CONFIG', f"{i18n.t('label_username')}: {self.username}")
        log_state = i18n.t('label_log_state_on') if self.logger.enabled else i18n.t('label_log_state_off')
        self._ui_event('print_info', 'CONFIG', log_state)

    def generate_random_username(self):
        prefixes = ["Bot", "Player", "Client", "Agent", "Miner", "Digger"]
        prefix = random.choice(prefixes)
        suffix = ''.join(random.choices(string.digits, k=4))
        return f"{prefix}{suffix}"

    def connect_to_server(self):
        self.ui.print_section(i18n.t('section_connecting'))

        server_address = self.settings.get_server_address()
        version = self.settings.get_minecraft_version()

        protocol_id, exact = ConnectionManager.resolve_protocol(version)
        if not self.connection_manager.is_version_supported(version):
            self._ui_event('print_warning', 'VERSION', i18n.t('label_unknown_version', ver=version))
        elif not exact:
            self._ui_event('print_info', 'VERSION', i18n.t('label_version_mapped', ver=version, pid=protocol_id))

        self._ui_event('print_info', 'CONNECT', i18n.t('label_connecting_to', addr=server_address))

        try:
            self.connection_manager.connect(
                server_address=server_address,
                username=self.username,
                protocol_version=version,
                on_chat=self.on_chat_received,
                on_disconnect=self.on_disconnected,
                log_func=self._net_log
            )
            self.connected = True
            self._ui_event('print_success', 'CONNECT', i18n.t('label_connected'))
            self._ui_event('print_info', 'CONNECT', i18n.t('label_prompt_exit'))

            self.spam = SpamManager(
                self.connection_manager,
                log_func=lambda m: self._ui_event('print_info', 'SPAM', m),
                sent_func=lambda m: self._ui_event('print_sent', 'SPAM', m)
            )
            self.spam.rate = self.settings.get_spam_rate()
            self.spam.messages = self.settings.get_spam_messages()
            if self.settings.get_spam_enabled() and self.spam.messages:
                self.spam.start()

        except Exception as e:
            self._ui_event('print_error', 'CONNECT', i18n.t('label_connection_failed', err=str(e)))
            self.connected = False

    def _net_log(self, message):
        self.ui.print_info(message)
        self.logger.log("NET", message)

    def _ui_event(self, method, category, message):
        getattr(self.ui, method)(message)
        self.logger.log(category, message)

    def on_chat_received(self, text):
        self.ui.print_chat(i18n.t('label_chat', text=text))
        self.logger.log("CHAT", strip_ansi(text))

    def on_disconnected(self):
        if self.spam and self.spam.enabled:
            self.spam.stop()
        if self.connected:
            self._ui_event('print_warning', 'DISCONNECT', i18n.t('label_disconnected_by_server'))

    def chat_loop(self):
        while self.connected:
            try:
                message = self.ui.get_input(i18n.t('label_prompt_input', user=self.username)).strip()

                if not message:
                    continue

                if message.startswith("//"):
                    action = self.handle_client_command(message, allow_connect=False)
                    if action == 'exit':
                        return 'exit'
                    if action == 'esc':
                        return 'esc'
                    continue

                if message.startswith("/"):
                    self.connection_manager.send_chat(message)
                    self._ui_event('print_sent', 'SERVERCMD', i18n.t('label_sent', text=message))
                else:
                    self.connection_manager.send_chat(message)
                    self._ui_event('print_sent', 'SEND', i18n.t('label_sent', text=message))

            except EOFError:
                self.disconnect()
                return 'exit'
            except KeyboardInterrupt:
                self.disconnect()
                return 'exit'
            except Exception as e:
                self._ui_event('print_error', 'ERROR', i18n.t('label_error', err=str(e)))
                if not self.connection_manager.is_alive():
                    self.connected = False

        return 'esc'

    def idle_loop(self):
        self.ui.print_info(i18n.t('label_not_connected_hint'))
        self.logger.log("IDLE", "Entered idle state")
        while True:
            try:
                message = self.ui.get_input(i18n.t('label_idle_prompt')).strip()
            except (EOFError, KeyboardInterrupt):
                return 'exit'

            if not message:
                continue

            if message.startswith("//"):
                action = self.handle_client_command(message, allow_connect=True)
                if action == 'exit':
                    return 'exit'
                if action == 'reconnect':
                    return 'reconnect'
            else:
                self.ui.print_info(i18n.t('label_not_connected_hint'))

    def handle_client_command(self, message, allow_connect):
        parts = message[2:].strip().split()
        cmd = parts[0].lower() if parts else "help"
        args = parts[1:]
        self.logger.log("MBC", f"Client command: {message}")

        if cmd == "help":
            self.show_help()
            return None

        if cmd == "esc":
            if self.connected:
                self.disconnect()
            self._ui_event('print_warning', 'MBC', i18n.t('label_esc_done'))
            return 'esc'

        if cmd == "exit":
            if self.connected:
                self.disconnect()
            return 'exit'

        if cmd == "connect":
            if self.connected:
                self.ui.print_info(i18n.t('label_already_connected'))
                return None
            if allow_connect:
                self.ui.print_info(i18n.t('label_reconnecting'))
                return 'reconnect'
            return None

        if cmd == "log":
            return self.handle_log_command(args)

        if cmd == "spam":
            return self.handle_spam_command(args)

        self._ui_event('print_warning', 'MBC', i18n.t('label_unknown_command'))
        return None

    def handle_log_command(self, args):
        if not args:
            self.ui.print_info(i18n.t('label_log_usage'))
            state = i18n.t('label_log_state_on') if self.logger.enabled else i18n.t('label_log_state_off')
            self.ui.print_info(state)
            return None

        value = args[0].lower()
        if value in ("true", "on", "1", "enable", "enabled"):
            path = self.logger.enable()
            self.settings.set_log_enabled(True)
            if path:
                self._ui_event('print_success', 'LOG', i18n.t('label_log_on', path=path))
            else:
                self.ui.print_error(i18n.t('label_log_usage'))
        elif value in ("false", "off", "0", "disable", "disabled"):
            self.logger.disable()
            self.settings.set_log_enabled(False)
            self._ui_event('print_info', 'LOG', i18n.t('label_log_off'))
        else:
            self.ui.print_info(i18n.t('label_log_usage'))
        return None

    def handle_spam_command(self, args):
        if not self.spam:
            self.ui.print_info(i18n.t('label_spam_not_ready'))
            return None

        if not args:
            self.spam.show_status()
            self.settings.save_spam_config(self.spam.enabled, self.spam.rate, self.spam.messages)
            return None

        sub = args[0].lower()
        remaining = args[1:]

        if sub in ("on", "start"):
            self.spam.start()
        elif sub in ("off", "stop"):
            self.spam.stop()
        elif sub == "rate":
            if not remaining:
                self.ui.print_info(f"Rate: {self.spam.rate} msg/s")
            else:
                self.spam.set_rate(remaining[0])
        elif sub == "add":
            if not remaining:
                self.ui.print_info(i18n.t('label_spam_usage'))
            else:
                self.spam.add_message(" ".join(remaining))
        elif sub == "remove":
            if not remaining:
                self.ui.print_info(i18n.t('label_spam_usage'))
            else:
                self.spam.remove_message(remaining[0])
        elif sub == "list":
            self.spam.list_messages()
        elif sub == "clear":
            self.spam.clear_messages()
        elif sub == "status":
            self.spam.show_status()
        else:
            self.ui.print_info(i18n.t('label_spam_usage'))

        self.settings.save_spam_config(self.spam.enabled, self.spam.rate, self.spam.messages)
        return None

    def show_help(self):
        self.ui.print_section(i18n.t('section_help'))
        commands = [
            (i18n.t('label_command_help'), i18n.t('label_command_desc_help')),
            (i18n.t('label_command_esc'), i18n.t('label_command_desc_esc')),
            (i18n.t('label_command_connect'), i18n.t('label_command_desc_connect')),
            (i18n.t('label_command_log'), i18n.t('label_command_desc_log')),
            (i18n.t('label_command_spam'), i18n.t('label_command_desc_spam')),
            (i18n.t('label_command_exit'), i18n.t('label_command_desc_exit')),
            (i18n.t('label_command_server'), i18n.t('label_command_desc_server')),
            (i18n.t('label_command_chat'), i18n.t('label_command_desc_chat')),
        ]
        for cmd, desc in commands:
            self.ui.print_info(f"{cmd:<22} - {desc}")
        self.ui.print_info("")
        self.ui.print_info(i18n.t('label_website', url=i18n.WEBSITE_URL))
        try:
            webbrowser.open(i18n.WEBSITE_URL)
            self.ui.print_info(i18n.t('label_website_opening'))
        except Exception:
            pass

    def disconnect(self):
        if self.spam and self.spam.enabled:
            self.spam.stop()
            self.settings.save_spam_config(self.spam.enabled, self.spam.rate, self.spam.messages)
        try:
            self.connection_manager.disconnect()
        except Exception:
            pass
        self.connected = False
        self.logger.log("DISCONNECT", "Disconnected from server")
        self.ui.print_success(i18n.t('label_disconnected'))
No snippets match your search.