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

AnimationDescriptionsData

A classe AnimationDescriptionsData Ʃ usada para criar animaƧƵes personalizadas para os NPCs. Modifica o arquivo Data/animationDescriptions.

AnimationDescriptionsData herda de modelsData que fornece a estrutura base e integração com o Content Patcher [4].

Construtor

def __init__(
        self,
        key: str,
        frames:list[int],
        repeatframes: list[int],
        leavingframes: list[int],
        messagekey:Optional[str]=None,
        laying_down: Optional[str]=None,
        offset: Optional[Position]=None
    )

Parâmetros

Name Type Description
key (str) ID unica da animação.
frames (list[int]) IDs das imagens usadas no começo animação.
repeatframes (list[int]) IDs das imagens usadas no centro da animação.
leavingframes (list[int]) IDs das imagens usadas no final da animação.
messagekey (Optional[str], default=None) Chave da mensagem usada na animação.
laying_down (Optional[bool], default=None) Chave da mensagem usada quando o NPC estiver deitado.
offset (Optional[Position], default=None) Deslocamento da animação.

Comportamento

Instâncias de AnimationDescriptionsData são projetadas para serem usadas dentro do campo Entries de uma ação EditData. Quando você deseja criar uma animação substituir os dados de uma animação existente. Ao criar um objeto AnimationDescriptionsData 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/animationDescriptions. Essa abordagem estruturada ajuda os desenvolvedores a evitar erros comuns associados a arquivos JSON manuais.

Para criar uma nova animação, você primeiro instancia a classe AnimationDescriptionsData com todos os detalhes necessÔrios para o novo item. Em seguida, você usa esta instância AnimationDescriptionsData dentro do dicionÔrio Entries de uma ação EditData, mapeando a chave do AnimationDescriptionsData para sua representação JSON obtida via novo_item.getJson(). A ação EditData deve ter Data/Objects como alvo (Target).

Criando uma nova animação

ModEntry.py:

from StardewValley import Manifest, EditData
from StardewValley.Data import AnimationDescriptionsData

# no registryContetData

self.content.registryContentData(
    EditData(
        Target="Strings/animationDescriptions",
        Entries={
            "npc_brinks": "A npc sendo desenvolvida com uma animação aqui."
        }
    )
)

nova_animacao=AnimationDescriptionsData(
    key="key_nova_animacao",
    frames=[16,17],
    repeatframes=[18,18,18,18,19,19,19,19,18,18,18,18,20,20,20],
    leavingframes=[21,22,23,23,24],
    messagekey="Strings\\animationDescriptions:npc_brinks",
    offset=Position(20,21)
)

self.content.registryContentData(
    EditData(
        Target="Data/animationDescriptions",
        Entries={
            nova_animacao.key: nova_animacao.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:

animation.py

from StardewValley import Manifest, EditData
from StardewValley.Helper import Helper
from StardewValley.Data import AnimationDescriptionsData

class animation(AnimationDescriptionsData):
    def __init__(self, mod:Helper):
        self.key=f"{mod.Manifest.UniqueID}_animacao"
        self.frames=[16,17]
        self.repeatframes=[18,18,18,18,19,19,19,19,18,18,18,18,20,20,20]
        self.leavingframes=[21,22,23,23,24]
        self.messagekey="Strings\\animationDescriptions:npc_brinks"
        self.offset=Position(20,21)

ModEntry.py

from StardewValley import Manifest, EditData
from StardewValley.Helper import Helper
from animation import animation

# no registryContetData
animation_1=animation(self)
self.content.registryContentData(
    EditData(
        Target="Data/animationDescriptions",
        Entries={
            animation_1.key: animation_1.getJson()
        }
    )
)