BundlesData
A classe BundlesData é usada para editar pacotes (bundles) do jogo.
Arquivo de conteúdo alvo: Data/Bundles
Construtor
def __init__(
self,
roomID: str,
spriteIndex:str,
bundle_name: str,
reward: Reward,
requirements: list[Requirements],
color: JunimoNoteColor,
item_count: int,
display_name: str
)
Parâmetros
| Name | Type | Description |
|---|---|---|
| roomID | str |
Identificação da localização da sala onde está o pacote. |
| spriteIndex | str |
Índice do sprite do pacote no objeto LooseSprites/JunimoNote. Usado junto com roomID para formar a chave única do pacote. |
| bundle_name | str |
O nome interno do pacote. |
| reward | Reward |
O objeto ou estrutura de dados que define a recompensa concedida ao completar o pacote. |
| requirements | list[Requirements] |
Uma lista de objetos que definem os itens e/ou condições necessárias para completar o pacote. |
| color | JunimoNoteColor |
Cor do caderno de Junimos. Valores validos: JunimoNoteColor.Green, JunimoNoteColor.Purple, JunimoNoteColor.Orange, JunimoNoteColor.Yellow, JunimoNoteColor.Red, JunimoNoteColor.Blue, JunimoNoteColor.Teal |
| item_count | int |
O número de itens distintos necessários para completar o pacote, ou em branco para corresponder ao número de itens necessários. Pode ser um valor entre 1 e 12 (números maiores quebrarão o layout da interface). |
| Por exemplo, se você tiver seis entradas no campo "requisitos" e definir como 4, o jogador precisará preencher o pacote com quaisquer quatro dos seis itens necessários. | ||
| display_name | str |
O nome de exibição do pacote, conforme visto pelo jogador no jogo. |
Comportamento
Instâncias de BundlesData são projetadas para serem usadas dentro do campo Entries de uma ação EditData.
O dados devem ser escritos no arquivo alvo Data/Bundles.
Criando um novo objeto
ModEntry.py:
from StardewValley import Manifest, EditData, Helper
from StardewValley.Data import BundlesData, Reward, Requirements
from StardewValley.Data.GameData import ItemType, JunimoNoteColor
#... (dentro de um método como contents(self) na sua classe de mod)
bundle=Bundles(
roomID="Pantry",
spriteIndex=0,
bundle_name="Spring Crops",
reward=Reward(
itemType=ItemType.Object,
itemID="472",
count=20
),
requirements=[
Requirements("24", 1, 0),
Requirements("188", 1, 0),
Requirements("190", 1, 0),
Requirements("192", 1, 0)
],
color=JunimoNoteColor.Green,
item_count=4,
display_name="Spring Crops"
)
self.content.registryContentData(
EditData(
LogName="Editando bundle",
Target="Data/Bundles",
Entries={
# Mapeia a chave do seu objeto para a representação JSON do objeto
bundle.key: bundle.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:
bundle.py
from StardewValley import Helper
from StardewValley.Data import BundlesData, Reward, Requirements
from StardewValley.Data.GameData import ItemType, JunimoNoteColor
class SpringCropsBundle(BundlesData):
def __init__(self, mod: Helper):
self.roomID="Pantry"
self.spriteIndex=0
self.bundle_name="Spring Crops"
self.reward=Reward(
itemType=ItemType.Object,
itemID="472",
count=20
),
self.requirements=[
Requirements("24", 1, 0),
Requirements("188", 1, 0),
Requirements("190", 1, 0),
Requirements("192", 1, 0)
],
color=JunimoNoteColor.Green,
item_count=4,
display_name="Spring Crops"
ModEntry.py
from StardewValley import Manifest, EditData, Helper
from bundle import SpringCropsBundle# Importando classe personalizada
#... (dentro de um método como contents(self) na sua classe de mod)
bundle=SpringCropsBundle(self)
self.content.registryContentData(
EditData(
LogName="Editando bundle",
Target="Data/Bundles",
Entries={
# Mapeia a chave do seu objeto para a representação JSON do objeto
bundle.key: bundle.getJson()
}
)
)