BigCraftablesData
Essa classe representa um objeto do tipo Big Craftable, utilizado para criar itens grandes interativos no jogo, como máquinas, decorações ou móveis. Ela facilita a criação e o registro desses itens no Content Patcher, com uma sintaxe simples e limpa.
Construtor
def __init__(self,
key: str,
Name: str,
DisplayName: str,
Description: str,
Price: Optional[int] = None,
Fragility: Optional[int]= None,
CanBePlacedOutdoors: Optional[bool] = None,
CanBePlacedIndoors: Optional[bool] = None,
IsLamp: Optional[bool] = None,
Texture: Optional[str] = None,
SpriteIndex: Optional[int] = None,
ContextTags: Optional[List[str]] = None,
CustomFields: Optional[dict[str,str]] = None
)
Propriedades disponíveis
| Nome | Tipo | Descrissão |
|---|---|---|
key |
(str) |
Identificador único do Item. |
Name |
(str) |
Nome interno do item. |
DisplayName |
str |
Nome que será exibido no jogo. |
Description |
(str) |
Descrição do item. |
Price |
(int) |
Preço base do Item. |
Fragility |
(int) |
Como o item pode ser coletado. Os valores possíveis são 0 (coletado com qualquer ferramenta), 1 (destruído se atingido por um machado/enxada/picareta ou coletado com qualquer outra ferramenta) ou 2 (não pode ser removido após ser colocado). Padrão 0. |
CanBePlacedOutdoors |
(bool) |
Indica se o item pode ser colocado em ambientes externos. Padrão: verdadeiro. |
CanBePlacedIndoors |
(bool) |
Indica se o item pode ser colocado em ambientes internos. Padrão: verdadeiro. |
IsLamp |
(bool) |
Define se é uma luminária deve produzir luz quando está escuro. Padrão falso. |
Texture |
(bool) O nome do recurso para a textura que contém o sprite do item. Geralmente definido na função Load, no parâmetro Target. |
|
SpriteIndex |
(bool) |
Índice do sprite no arquivo de textura. |
ContextTags |
(List[str]) |
As tags de contexto personalizadas a serem adicionadas a este item (além das tags adicionadas automaticamente com base nos outros dados do objeto). Elas são formatadas como uma lista |
CustomFields |
(dict[str, str]) |
Campos customizados adicionais. |
Comportamento
Instâncias de BigCraftablesData 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 BigCraftablesData 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/Objects. Essa abordagem estruturada ajuda os desenvolvedores a evitar erros comuns associados a arquivos JSON manuais. Criando um novo objeto usando BigCraftablesData Para criar um novo objeto, você primeiro instancia a classe BigCraftablesData com todos os detalhes necessários para o novo item. Em seguida, você usa esta instância BigCraftablesData dentro do dicionário Entries de uma ação EditData, mapeando a chave do BigCraftablesData para sua representação JSON obtida via novo_item.getJson(). A ação EditData deve ter Data/BigCraftables como alvo (Target).
Criando um novo objeto
ModEntry.py:
from StardewValley import Manifest, EditData
from StardewValley.Data import BigCraftablesData
# no registryContetData
novo_craftable=BigCraftablesData(
key=f"{self.content.Manifest.UniqueID}_custom_object",
Name=f"{self.content.Manifest.UniqueID}_custom_object",
DisplayName="{{i18n:CustomObject.name}}",
Description="{{i18n:CustomObject.description}}",
Price=500,
Fragility=0,
CanBePlacedIndoors=True,
CanBePlacedOutdoors=True,
IsLamp=True,
Texture=True,
SpriteIndex=True
)
self.content.registryContentData(
EditData(
Target="Data/BigCraftables",
Entries={
novo_craftable.key: novo_craftable.getJson()
}
)
)
Criando um novo item usando classe personalizada
Para usar uma classe personalizada, você pode criar um novo arquivo ou no mesmo arquivo criar uma classe:
NovoCraftable.py
from StardewValley.Data import BigCraftablesData
from StardewValley.Helper import Helper
class NovoCraftable(BigCraftablesData, mod: Helper):
def __init__(self):
self.key=f"{mod.content.Manifest.UniqueID}_custom_object"
self.Name=f"{mod.content.Manifest.UniqueID}_custom_object"
self.DisplayName="{{i18n:CustomObject.name}}" # Pode escrever diretamente o nome aqui ou uma referencia pro i18n
self.Description="{{i18n:CustomObject.description}}" # Pode escrever diretamente a descrissão aqui ou uma referencia pro i18n
self.Price=500
self.Fragility=0
self.CanBePlacedIndoors=True
self.CanBePlacedOutdoors=True
self.IsLamp=True
self.Texture=True
self.SpriteIndex=True
ModEntry.py
from StardewValley import Manifest, EditData
from StardewValley.Helper import Helper
from NovoCraftable import NovoCraftable
# no registryContetData
self.content.registryContentData(
EditData(
Target="Data/BigCraftables",
Entries={
NovoCraftable().key: NovoCraftable().getJson()
}
)
)