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()
}
)
)