吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 921|回复: 6
收起左侧

[Python 原创] minecraft文档转成书

[复制链接]
cbbl 发表于 2024-4-16 02:29
本帖最后由 cbbl 于 2024-4-17 05:58 编辑

新人学习,代码有问题欢迎讨论指正
[Python] 纯文本查看 复制代码
import pyperclip


def modified_width(char):
    global width
    char_width = {'%': 10, '^': 10, '&': 10, '*': 6, '(': 6, ')': 6, '_': 10, '-': 10, '+': 10, '=': 10, '{': 6,
                  '[': 6, '}': 6, ']': 6, '|': 2, '\\': 10, ';': 2, ':': 2, '"': 6, "'": 6, '<': 8, '>': 8, ',': 2,
                  '.': 2, '?': 10, '/': 10, 't': 6, 'i': 2, 'I': 6, 'f': 8, 'k': 8, 'l': 4, ' ': 6, ' ': 16, '”': 6,
                  '“': 6}
    if char in char_width:  # 半角符号 部分英文 空格
        width += char_width[char]
    elif 0x20 <= ord(char) <= 0x7E:  # 部分英文
        width += 10
    elif 0x4e00 <= ord(char) <= 0x9fff:  # 汉字
        width += (15 + 1)
    elif 0x3000 <= ord(char) <= 0x303F:  # 中文符号
        if char == '…':
            width += 14
    else:
        width += (15 + 1)
    width += 2


def arch_pages(_page):  # 归档page
    global page
    page = r'\\n'.join(_page)
    page = f"'{{\"text\":\"{page}\"}}'"
    pages.append(page)
    page = []


# 书拆分成句子
with open("book.txt", "r", encoding="UTF-8") as f:  # 需要转换的文档book.txt
    char_list = []
    line_list = []
    while True:
        para = f.readline()
        if para:
            # 处理上一段落末尾
            if char_list:
                line_list.append(''.join(char_list).strip('\n'))  # 归档这一行
            width = 0
            if char_list:
                modified_width(char)
            char_list = []
            for char in para:
                modified_width(char)  # 长度修正
                if width > 228:
                    line_list.append(''.join(char_list).strip('\n'))  # 归档这一行
                    width = 0
                    modified_width(char)
                    char_list = [char]
                else:
                    # 补充行列表
                    char_list.append(char)
        if not para:
            # 处理文章末尾
            if char_list:
                line_list.append(''.join(char_list).strip('\n'))  # 归档这一行
                width = 0
                modified_width(char)
            break

# 句子打包成页
i = 0
page = []
pages = []

for line in line_list:
    i += 1
    if i <= 14:
        pass
    else:
        i = 1
        arch_pages(page)
    page.append(line)
if page:  # 处理文章末页
    arch_pages(page)
pages = ','.join(pages)

# 书籍信息
title = '书名'
author = 'cbbl'
display = '{Lore:["书籍介绍"]}'
version = '1.20'  # 修改为需要导入的版本

if int(version.replace('1.', '')) <= 12:
    number = ' 1 0 '
else:
    number = ''
if int(version.replace('1.', '')) >= 15:
    pass
else:
    pages = pages.replace('"text"', r'\"text\"')
if int(version.replace('1.', '')) < 8:
    print('该版本give指令仅支持空白成书')
else:
    command = f'give @p written_book{number}{{pages:[{pages}],title:{title},author:{author},display:{display}}}'
    command.replace(r'\\n', '')
    pyperclip.copy(command)
    print('指令已复制到剪贴板')


补充,游戏内指令输入长度有限制,可以用数据包方式导入指令
已修改一个版本号处理上的错误

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

codeaftercode 发表于 2024-4-16 08:18
很久没玩过minecraft啦
smartfind 发表于 2024-4-16 08:40
三滑稽甲苯 发表于 2024-4-16 09:57
hjxhjxjx 发表于 2024-4-16 12:22
???有点看不懂,是mc游戏存档吗?里面的书?
 楼主| cbbl 发表于 2024-4-17 02:02
hjxhjxjx 发表于 2024-4-16 12:22
???有点看不懂,是mc游戏存档吗?里面的书?

mc允许玩家用它自带的指令给予玩家修改好自定内容的成书物品,这个的作用是是把外部文字整合成游戏给定的格式以供导入游戏
Gxd1703 发表于 2024-4-18 06:32
这个不错,谢谢分享。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表