Как мне правильно сохранить файл .nbt с новым объектом nbtlib.tag.File?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как мне правильно сохранить файл .nbt с новым объектом nbtlib.tag.File?

Сообщение Anonymous »

Я пытаюсь создать и сохранить файлы .nbt (структурный блок) в Minecraft, используя nbtlib. Сначала я попробовал посмотреть, смогу ли я отредактировать с его помощью существующий файл, и это сработало хорошо, но я пытаюсь создать новый с нуля. Проблема, с которой я столкнулся, заключается в том, что когда я пытаюсь сохранить эту новую, в чате Minecraft появляется сообщение «Структура «minecraft:t3» недоступна» («t3» — это имя структуры, которую я сохраняю).
Я пытался выяснить, не делаю ли я неправильный формат, класс или что-то еще, поэтому я сравнил тот, который изначально сохранял, с тем, который я создавал с нуля (структура сам по себе один и тот же для обоих) с простой настройкой типа print(initial == mine), которая возвращала True. Это меня очень смутило, потому что это было одно и то же, но один работал, а другой нет, хотя они были одинаковыми?
Я использую это впервые, поэтому я возможно, что-то не так с библиотекой.
Это код:
from nbtlib import tag, File
import os

folderPath = r"C:\Users\fullw\AppData\Roaming\.minecraft\saves\Python Generated\generated\minecraft\structures"

def path(name: str) -> str:
return os.path.join(folderPath, name + ".nbt")

# Load the .nbt file
file = File.load(path("t4"), gzipped=True)

def toNBT(data: dict | list | int | str) -> tag.Base:
if isinstance(data, dict):
return tag.Compound({key: toNBT(value) for key, value in data.items()})
elif isinstance(data, list):
return tag.List([toNBT(element) for element in data])
elif isinstance(data, int):
return tag.Int(data)
elif isinstance(data, str):
return tag.String(data)
else:
raise ValueError(f"Unsupported data type: {type(data)}")

class Structure():
def __init__(self, size: list[int], replaceWithAir: str = False):
self.replaceWithAir = replaceWithAir
self.structure = {"size": size, "blocks": [], "palette": [], "entities": [], "DataVersion": 3700}

def finaliseStructure(self) -> File:
result = File()
for key, value in self.structure.items():
result[key] = toNBT(value)
return result

def save(self, name: str) -> None:
file = self.finaliseStructure()
file.save(path(name))

struct = Structure([1,1,1])
print(struct.finaliseStructure() == file) # prints True
file = struct.finaliseStructure() # If this is uncommented, it doesn't work. If it is commented, it does.
file.save(path("t6"))

Это код, который я использовал для редактирования только одного, прежде чем создать приведенный выше код:
from nbtlib import File, tag
import os

folderPath = r"C:\Users\fullw\AppData\Roaming\.minecraft\saves\Python Generated\generated\minecraft\structures"

def path(name: str) -> str:
return os.path.join(folderPath, name + ".nbt")

# Load the .nbt file
file = File.load(path("t1"), gzipped=True)

# Access and modify data
file["blocks"][0]["state"] = tag.Int(1)
del file["blocks"][0]

# Save the changes back to the file
file.save(path("t6"))


Подробнее здесь: https://stackoverflow.com/questions/783 ... ile-object
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • React Native File File File File Error Type Ошибка ошибки
    Anonymous » » в форуме Android
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • React Native File File File File Error Type Ошибка ошибки
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • React Native File File File File Error Type Ошибка ошибки
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между экземпляром, объектом, объектом класса и объектом экземпляра в Python? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    51 Просмотры
    Последнее сообщение Anonymous
  • Как отредактировать данные NBT игрока Minecraft Forge
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»