AdditionalWallpaperFlooringData
A classe AdditionalWallpaperFlooringData é usada para adicionar pisos e paredes extras ao jogo.
Construtor
def __init__(
self,
key: str,
Id: str,
Texture: str,
IsFlooring: bool,
Count: int
)
Parâmetros
| Name | Type | Description |
|---|---|---|
key |
(str) |
Identificação do item |
Id |
(str) |
Identificação do item |
Texture |
(str) |
ID respectivo à textura do item |
IsFlooring |
(bool) |
Se o item é piso, se não, parede |
Count |
(int) |
Quantidade de pisos ou paredes no tilesheet |
Comportamento
Instâncias de AdditionalWallpaperFlooringData são projetadas para serem usadas dentro do campo Entries de uma ação EditData. Quando você deseja adicionar um novo objeto ou substituir completamente os dados de um objeto existente. Ao criar um objeto AdditionalWallpaperFlooringData com os parâmetros desejados e fornecer sua representação JSON (getJson()) como um valor no dicionário Entries (usando a chave do objeto), você instrui o Content Patcher a escrever esses dados no arquivo Data/AdditionalWallpaperFlooring. Essa abordagem estruturada ajuda os desenvolvedores a evitar erros comuns associados a arquivos JSON manuais. Criando um novo objeto usando AdditionalWallpaperFlooringData Para criar um novo objeto, você primeiro instancia a classe AdditionalWallpaperFlooringData com todos os detalhes necessários para o novo item. Em seguida, você usa esta instância AdditionalWallpaperFlooringData dentro do dicionário Entries de uma ação EditData, mapeando a chave do AdditionalWallpaperFlooringData para sua representação JSON obtida via novo_item.getJson(). A ação EditData deve ter Data/AdditionalWallpaperFlooring como alvo (Target).
Criando um novo objeto
ModEntry.py
from StardewValley import Manifest, EditData
from StardewValley.helper import Helper
from StardewValley.Data import AdditionalWallpaperFlooringData
# Carregando a textura
self.content.registryContentData(
Load(
LogName="NovoItem_texture",
Target=f"Mods/{self.content.Manifest.UniqueID}/NovoItem_texture",
FromFile="assets/NovoItem_texture.png"
)
)
# Criando o objeto AdditionalWallpaperFlooringData
novo_item = AdditionalWallpaperFlooringData(
key = "author.modName_NomeItem",
Id = "author.modName_NomeItem",
Texture = f"Mods/{self.content.Manifest.UniqueID}/NovoItem_texture",
IsFlooring = True, # True para piso, False para paredes
Count = 1
)
# Registrando o objeto através do EditData
self.content.registryContentData(
EditData(
LogName="Criando um novo piso/parede",
Target="Data/AdditionalWallpaperFlooring",
Entries={
# Mapeia a chave do seu objeto para a representação JSON do objeto
novo_item.key: novo_item.getJson()
}
)
)
Criando um novo objeto através de uma classe personalizada
Para usar uma classe personalizada, você pode criar um novo arquivo ou no mesmo arquivo criar uma classe:
Um novo arquivo.py:
piso_parede.py
from StardewValley.Data import AdditionalWallpaperFlooringData
from StardewValley.helper import Helper
class NovoPisoParede(AdditionalWallpaperFlooringData):
def __init__(self, mod: Helper):
self.key = f"{mod.content.Manifest.UniqueID}_NovoPisoParede"
self.Id = f"{mod.content.Manifest.UniqueID}_NovoPisoParede"
self.Texture = f"Mods/{mod.content.Manifest.UniqueID}/NovoPisoParede"
self.IsFlooring = True # True para piso, False para paredes
self.Count = 1
ModEntry.py
from StardewValley import Manifest, EditData
from StardewValley.helper import Helper
from piso_parede import NovoPisoParede # Importando classe personalizada
#... (dentro de um método como contents(self) na sua classe de mod)
novo_piso_parede = NovoPisoParede(self)
self.content.registryContentData(
EditData(
LogName="Criando um novo piso/parede",
Target="Data/AdditionalWallpaperFlooring",
Entries={
# Mapeia a chave do seu objeto para a representação JSON do objeto
novo_piso_parede.key: novo_piso_parede.getJson()
}
)
)