Skip to content
🚧 Esta documentação ainda está em desenvolvimento e pode conter informações incompletas.

AdditionalFarmsData

A classe AdditionalFarmsData é usada para adicionar fazendas extras ao jogo.

Arquivo de conteúdo: Data/AdditionalFarms

Construtor

def __init__(
    self,
    key: int,
    Id: str,
    TooltipStringPath: str,
    MapName: str,
    IconTexture: str,
    WorldMapTexture: str,
    SpawnMonstersByDefault: bool = False,
    ModData: Optional[Dict[str, Any]] = None,
    CustomFields:  Optional[dict[str,str]] = None
)

Parâmetros

Name Type Description
key (int) Identificação da fazenda
Id (str) Identificação da fazenda
TooltipStringPath (str) ID respectivo à descrição para exibição da fazenda
MapName (str) ID respectivo ao asset de exibição da fazenda na janela de criação
IconTexture (str) ID respectivo ao asset de exibição da fazenda na janela de criação
WorldMapTexture (str) ID respectivo ao asset de exibição da fazenda no mapa em jogo
SpawnMonstersByDefault (bool) Spawna monstros na fazenda
ModData (dict[str, Any], Opcional) Dados da fazenda utilizados pelo jogo
CustomFields (dict[str, str], Opcional) Campos personalizados

Comportamento

Instâncias de AdditionalFarmsData 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 AdditionalFarmsData 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/AdditionalFarms. Essa abordagem estruturada ajuda os desenvolvedores a evitar erros comuns associados a arquivos JSON manuais. Criando um novo objeto usando AdditionalFarmsData Para criar um novo objeto, você primeiro instancia a classe AdditionalFarmsData com todos os detalhes necessários para o novo item. Em seguida, você usa esta instância AdditionalFarmsData dentro do dicionário Entries de uma ação EditData, mapeando a chave do AdditionalFarmsData para sua representação JSON obtida via novo_item.getJson(). A ação EditData deve ter Data/AdditionalFarms como alvo (Target).

Criando um novo objeto

ModEntry.py:

from StardewValley import Manifest, EditData, Load, Helper
from StardewValley.Data import AdditionalFarmsData

# Carregando assets (Icone da fazenda)
self.content.registryContentData(
    Load(
        LogName = "Novafazenda_icon",
        Target = "LooseSprites/Novafazenda_icon",
        FromFile = "assets/Novafazenda_icon.png"
    )
)

# Carregando assets (Mapa da fazenda)
self.content.registryContentData(
    Load(
        LogName = "Novafazenda_map",
        Target = "LooseSprites/Novafazenda_map",
        FromFile = "assets/Novafazenda_map.png"
    )
)

# Registrando a descrição da nova fazenda
self.content.registryContentData(
    EditData(
        LogName="Novafazenda_description",
        Target="Strings/UI",
        Entries={
            # Mapeia a chave do seu objeto para a representação JSON do objeto
            "Novafazenda_description": "Descrição da nova fazenda, sem dúvidas, uma ótima fazenda"
        }
    )
)

# Criando o objeto AdditionalFarmsData
nova_fazenda = AdditionalFarmsData(
    key="author.modName/Novafazenda",
    Id="author.modName/Novafazenda",
    TooltipStringPath="Strings/UI:Novafazenda_description",
    MapName="Novafazenda_nome",
    IconTexture="LooseSprites/Novafazenda_icon",
    WorldMapTexture="LooseSprites/Novafazenda_map",
    SpawnMonstersByDefault = False
)

self.content.registryContentData(
    EditData(
        LogName="Criando uma nova fazenda",
        Target="Data/AdditionalFarms",
        Entries={
            # Mapeia a chave do seu objeto para a representação JSON do objeto
            nova_fazenda.key: nova_fazenda.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:

nova_fazenda.py

from StardewValley.Data import AdditionalFarmsData
from StardewValley import Helper

class NovaFazenda(AdditionalFarmsData):
    def __init__(self, mod: Helper):
        self.key = f"{mod.content.Manifest.UniqueID}/Novafazenda"
        self.Id = f"{mod.content.Manifest.UniqueID}/Novafazenda"
        self.TooltipStringPath = "Strings/UI:Novafazenda_description"
        self.MapName = "Novafazenda_nome"
        self.IconTexture = "LooseSprites/Novafazenda_icon"
        self.WorldMapTexture = "LooseSprites/Novafazenda_map"
        self.SpawnMonstersByDefault = False

ModEntry.py

from StardewValley import Manifest, EditData, Helper
from nova_fazenda import NovaFazenda # Importando classe personalizada

#... (dentro de um método como contents(self) na sua classe de mod)

#... (Após os outros detalhes adicionados no exemplo anterior: as duas imagens carregas e a edição do arquivo Strings/UI)
nova_fazendinha = NovaFazenda(self)
self.content.registryContentData(
    EditData(
        LogName="Criando uma nova fazenda",
        Target="Data/AdditionalFarms",
        Entries={
            # Mapeia a chave do seu objeto para a representação JSON do objeto
            nova_fazendinha.key: nova_fazendinha.getJson()
        }
    )
)