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

Content Patcher

Content Patcher é um framework/mod do stardew valley feito pelo PathosChild, que contém muitos recursos poderosos, para modificação do Stardew Valley, desde carregar sprites, editar dados, música, etc.

Na biblioteca do stardewmodpy, o content patcher tem o seguinte construtor:


def __init__(self, manifest:"Manifest"):
    self.Manifest=manifest
    self.Manifest.ContentPackFor={
        "UniqueID": "Pathoschild.ContentPatcher"
    }

    self.fileName="content.json"

    self.contentFile={
        "Format": "2.5.0",
        "Changes": []
    }

    self.contentFiles={}

    self.extraContents={}

📌 Explicação das variáveis e métodos:

  • self.Manifest (Manifest) - Guarda o objeto da classe Manifest, que é responsavel pelo arquivo manifest

  • self.FileName (str) - Arquivo principal que o framework salva

  • self.contentFile (dict) - Dicionário principal preparado para salvar no arquivo principal

  • self.contentFiles (dict) - Dicionário para arquivos separados

  • self.extraContents (dict) - Conteúdo extra (nao usado)

self.registryContentData

  • contentData (Include|Load|EditData|EditImage|EditMap) - Parâmetro que define qual tipo de modificação está sendo feita, eles podem ser: Include, Load, EditData, EditImage, EditMap

  • contentFile (str) - Nome do arquivo.json a ser adicionado ao mod, para uso do content patcher.

self.addCustomLocation

  • **customLocations - O recurso CustomLocations permite adicionar novos locais no jogo, com seus próprios mapas e warps.

self.addConfigSchema

  • **confifSchema - O recurso ConfigSchema permite adicionar variáveis dinâmicas pre-setadas ao content patcher.

Usando o Framework

Include

Para adicionar novos arquivos .json no content Patcher para deixar o projeto mais organizado, voce pode usar a classe Include.

Exemplo adicionando um novo arquivo:

from StardewValley import Manifest,Include
from StardewValley.helper import Helper

class ModEntry(Helper):
    #...

    #conteudo
    def contents(self):
        #acrescenta um arquivo novo no assets
        self.content.registryContentData(
            Include(
                FromFile="novoArquivo"
            )
        )

Para mais detalhes, consultar a pagina da classe Include

🧩 Load

Aqui está um exemplo de substituição do sprite da Abigail:

from StardewValley import Manifest,Load
from StardewValley.helper import Helper

class ModEntry(Helper):
    #...

    #conteudo
    def contents(self):
        self.content.registryContentData(
            Load(
                LogName="Substituindo sprite",
                Target="Characters/Abigail",
                FromFile="assets/Abigail.png"
            )
        )

📌 Explicação dos Parâmetros:

  • "LogName": Nome que aparecerá no log do SMAPI ao aplicar o patch.
  • "Characters/Abigail": Caminho para o recurso original do jogo que está sendo substituído.
  • "assets/Abigail.png": Caminho para o novo arquivo dentro da pasta do mod.

📁 Certifique-se de que sua pasta assets contém o arquivo

Certifique-se de que o arquivo Abigail.png esteja presente na pasta assets do seu projeto, pois ele será copiado automaticamente durante a compilação do mod.

  • Para mais detalhes, consultar a pagina da classe Load

Outras classes que você pode usar para conteúdos:

EditData

EditImage

EditMap