Condividi tramite


Introduzione ai pacchetti di comportamenti

Prima di realizzare il tuo primo componente aggiuntivo per Minecraft: Bedrock Edition, dovrai creare un pacchetto per contenere i tuoi contenuti personalizzati. Sono due i tipi di pacchetti che un creatore può realizzare: i pacchetti di risorse e i pacchetti di comportamenti. Un pacchetto di comportamenti è una struttura di cartella contenente file che guidano i comportamenti dell'entità, i rilasci di bottino, le regole di generazione, gli oggetti, le ricette e le tabelle degli scambi. Questo tutorial spiega come creare i pacchetti di comportamenti e come aggiungere comportamenti a un'entità mucca nel gioco per renderla aggressiva.

Immagine di una mucca che insegue Steve

In questo tutorial imparerai quanto segue:

  • Che è possibile cambiare il comportamento di un'entità in Minecraft: Bedrock Edition.
  • Come collegare un pacchetto di comportamenti a un pacchetto di risorse.

Requisiti

Prima di iniziare questo tutorial, ti consigliamo di completare i seguenti passaggi:

Creazione del pacchetto di comportamenti

Un pacchetto di comportamenti contiene file che i creatori (come te) utilizzano per aggiungere, rimuovere o modificare il comportamento di gioco delle entità in Minecraft. Grazie al file di comportamento di un'entità, ogni entità compie determinate azioni, ad esempio un pollo segue un giocatore che ha dei semi.

Affinché Minecraft trovi e utilizzi i tuoi file di comportamento, devi impostare le cartelle e i file in una struttura specifica. Il tutorial ti servirà da guida per creare questa struttura di cartelle e file.

Immagine della struttura di file e cartelle del pacchetto di comportamenti

Creare una cartella

In questa sezione creerai una cartella denominata My_BEHAVIOR_Pack. Beh, in realtà non devi chiamarla così. In effetti, puoi chiamare questa cartella come preferisci, tuttavia le altre cartelle devono essere denominate esattamente come indicato nel tutorial in modo che Minecraft sappia dove cercare.

  1. Apri la cartella com.mojang.
  2. Apri la cartella development_behavior_packs.
  3. All'interno della cartella development_behavior_packs crea una nuova cartella e denominala My_BEHAVIOR_Pack.
  4. Apri la cartella My_BEHAVIOR_Pack. Immagine della cartella My_BEHAVIOR_Pack situata nella cartella com.mojang development_behavior_packs

Creare il file manifest

Per caricare un pacchetto di comportamenti in Minecraft è necessario creare un file manifest. Il file manifest del pacchetto di comportamenti è simile a quello creato per il pacchetto di risorse, ma contiene due sezioni aggiuntive.

  • moduli: definisce il pacchetto in modo che Minecraft sappia come applicarlo al mondo. I pacchetti di comportamenti utilizzano il tipo di dati.
  • dipendenze: crea un collegamento tra i pacchetti di comportamento e i pacchetti di risorse per aggiungere texture e immagini personalizzate a Minecraft.
  1. Crea un nuovo documento nella cartella My_BEHAVIOR_Pack e denominalo manifest.json.
    1. Dovrai modificare l'estensione del file da .txt a .json. Se nella finestra Esplora file le estensioni dei file non sono visibili, puoi attivarle nella scheda Visualizza. Immagine del file manifest.json, all'interno della cartella My_BEHAVIOR_Pack
  2. Fai doppio clic sul file manifest.json per aprirlo in un editor di testo.
  3. Copia e incolla il seguente codice nel tuo file.
{
  "format_version": 2,
  "header": {
    "description": "My attack cow behavior pack Add-On!",
    "name": "My Behavior Pack",
    "uuid":"",
    "version": [1, 0, 0],
    "min_engine_version": [1, 16, 0]
  },
  "modules":
    [
      {
        "description": "My First Add-On!",
          "type": "data",
          "uuid": "",
          "version": [1, 0, 0]
      }
    ],
  "dependencies": [
    {
     "uuid":"UUID from the header section of manifest.json in My_RESOURCE_Pack",
      "version":[1,0,0]
    }
 ]
}

Inserimento degli UUID

Come per il file manifest del pacchetto di risorse, sarà necessario generare due UUID diversi per le sezioni Intestazione e Moduli del tuo file manifest. Puoi ottenere gli UUID da un generatore online come https://www.uuidgenerator.net/.

Immagine della schermata principale di UUIDGenerator.net con un UUID personalizzato generato

  1. Copia e incolla un UUID nella sezione dell'intestazione. L'UUID dovrà essere copiato nel campo "uuid" racchiuso tra virgolette ("") per poter essere letto correttamente.
  2. Aggiorna la pagina web per generare un nuovo UUID da utilizzare nella sezione Moduli.
  3. Copia e incolla il nuovo UUID nel campo "uuid" della sezione Moduli, racchiuso tra virgolette.

Creare la dipendenza

Nel file manifest.json del pacchetto di comportamenti è presente una terza sezione, chiamata "dipendenze", utilizzata per creare un collegamento tra un pacchetto di risorse e un pacchetto di comportamenti. Questo collegamento viene creato quando l'UUID situato nella sezione dell'intestazione del file manifest.json del pacchetto di risorse è lo stesso dell'UUID nella sezione Dipendenze del file manifest.json del pacchetto di comportamenti. Non è necessario disporre di un pacchetto di risorse per utilizzare un pacchetto di comportamenti e non è necessario disporre di un pacchetto di comportamenti per utilizzare un pacchetto di risorse. Se disponi di entrambi, puoi utilizzare questa soluzione per collegarli insieme in modo che quando carichi un pacchetto di comportamenti in un mondo, venga caricato e attivato automaticamente il pacchetto di risorse associato.

Immagine dell'UUID della sezione Intestazione di manifest.json del pacchetto di risorse duplicato nella sezione Dipendenze del pacchetto di comportamenti

  1. Apri il file manifest.json situato nella cartella My_RESOURCE_Pack all'interno della cartella development_resource_packs.
  2. Copia l'UUID dalla sezione intestazione del file manifest.json del pacchetto di risorse.
  3. Passa al file manifest.json situato nella cartella *My_BEHAVIOR_Pack all'interno della cartella development_behavior_packs.
  4. Incolla l'UUID nel campo "uuid" nella sezione delle dipendenze. Assicurati che tutto ciò che è racchiuso tra virgolette corrisponda esattamente.
  5. Salva il file manifest.json del pacchetto di comportamenti.

Immagine dell'UUID della sezione Intestazione di manifest.json del pacchetto di risorse duplicato nella sezione Dipendenze del pacchetto di comportamenti

Creare la cartella delle entità e aggiungere una mucca

I comportamenti di ogni entità sono definiti nel relativo file JSON presente all'interno del codice che fa funzionare Minecraft. Creerai un nuovo file di comportamento della mucca che verrà utilizzato da Minecraft al posto del file di base.

  1. Nella cartella My_BEHAVIOR_Pack crea una cartella denominata entities.
  2. Crea un file di testo nella cartella entities e denominalo cow.json.
  3. Copia e incolla il seguente codice nel tuo file cow.json. Dopo avere salvato il file, puoi iniziare quando vuoi.

Nota

Questo è l'intero file cow.json modificato. È grande perché le mucche fanno molte cose.

{
    "format_version": "1.16.0",
    "minecraft:entity": {
        "description": {
            "identifier": "minecraft:cow",
            "is_spawnable": true,
            "is_summonable": true,
            "is_experimental": false
        },
        "component_groups": {
            "minecraft:cow_baby": {
                "minecraft:is_baby": {},
                "minecraft:scale": {
                    "value": 0.5
                },
                "minecraft:ageable": {
                    "duration": 1200,
                    "feed_items": "wheat",
                    "grow_up": {
                        "event": "minecraft:ageable_grow_up",
                        "target": "self"
                    }
                },
                "minecraft:behavior.follow_parent": {
                    "priority": 6,
                    "speed_multiplier": 1.1
                }
            },
            "minecraft:cow_adult": {
                "minecraft:experience_reward": {
                    "on_bred": "Math.Random(1,7)",
                    "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
                },
                "minecraft:loot": {
                    "table": "loot_tables/entities/cow.json"
                },
                "minecraft:behavior.breed": {
                    "priority": 3,
                    "speed_multiplier": 1.0
                },
                "minecraft:breedable": {
                    "require_tame": false,
                    "breed_items": "wheat",
                    "breeds_with": {
                        "mate_type": "minecraft:cow",
                        "baby_type": "minecraft:cow",
                        "breed_event": {
                            "event": "minecraft:entity_born",
                            "target": "baby"
                        }
                    }
                },
                "minecraft:interact": {
                    "interactions": [
                        {
                            "on_interact": {
                                "filters": {
                                    "all_of": [
                                        {
                                            "test": "is_family",
                                            "subject": "other",
                                            "value": "player"
                                        },
                                        {
                                            "test": "has_equipment",
                                            "domain": "hand",
                                            "subject": "other",
                                            "value": "bucket:0"
                                        }
                                    ]
                                }
                            },
                            "use_item": true,
                            "transform_to_item": "bucket:1",
                            "play_sounds": "milk",
                            "interact_text": "action.interact.milk"
                        }
                    ]
                }
            }
        },
        "components": {
            "minecraft:is_hidden_when_invisible": {},
            "minecraft:type_family": {
                "family": [
                    "cow",
                    "mob"
                ]
            },
            "minecraft:breathable": {
                "total_supply": 15,
                "suffocate_time": 0
            },
            "minecraft:navigation.walk": {
                "can_path_over_water": true,
                "avoid_water": true,
                "avoid_damage_blocks": true
            },
            "minecraft:movement.basic": {},
            "minecraft:jump.static": {},
            "minecraft:can_climb": {},
            "minecraft:collision_box": {
                "width": 0.9,
                "height": 1.3
            },
            "minecraft:nameable": {},
            "minecraft:health": {
                "value": 10,
                "max": 10
            },
            "minecraft:hurt_on_condition": {
                "damage_conditions": [
                    {
                        "filters": {
                            "test": "in_lava",
                            "subject": "self",
                            "operator": "==",
                            "value": true
                        },
                        "cause": "lava",
                        "damage_per_tick": 4
                    }
                ]
            },
            "minecraft:movement": {
                "value": 0.25
            },
            "minecraft:despawn": {
                "despawn_from_distance": {}
            },
            "minecraft:behavior.float": {
                "priority": 0
            },
            "minecraft:behavior.panic": {
                "priority": 1,
                "speed_multiplier": 1.25
            },
            "minecraft:behavior.mount_pathing": {
                "priority": 2,
                "speed_multiplier": 1.5,
                "target_dist": 0.0,
                "track_target": true
            },
            "minecraft:behavior.breed": {
                "priority": 3,
                "speed_multiplier": 1.0
            },
            "minecraft:behavior.tempt": {
                "priority": 4,
                "speed_multiplier": 1.25,
                "items": [
                    "wheat"
                ]
            },
            "minecraft:behavior.follow_parent": {
                "priority": 5,
                "speed_multiplier": 1.1
            },
            "minecraft:behavior.random_stroll": {
                "priority": 6,
                "speed_multiplier": 0.8
            },
            "minecraft:behavior.look_at_player": {
                "priority": 7,
                "look_distance": 6.0,
                "probability": 0.02
            },
            "minecraft:behavior.random_look_around": {
                "priority": 9
            },
            "minecraft:leashable": {
                "soft_distance": 4.0,
                "hard_distance": 6.0,
                "max_distance": 10.0
            },
            "minecraft:balloonable": {},
            "minecraft:rideable": {
                "seat_count": 1,
                "family_types": [
                    "zombie"
                ],
                "seats": {
                    "position": [
                        0.0,
                        1.105,
                        0.0
                    ]
                }
            },
            "minecraft:physics": {},
            "minecraft:pushable": {
                "is_pushable": true,
                "is_pushable_by_piston": true
            },
            "minecraft:conditional_bandwidth_optimization": {},
            "minecraft:behavior.nearest_attackable_target": {
                "priority": 2,
                "must_see": true,
                "reselect_targets": true,
                "within_radius": 25.0,
                "entity_types": [
                    {
                        "filters": {
                            "test": "is_family",
                            "subject": "other",
                            "value": "player"
                        },
                        "max_dist": 32
                    }
                ]
            },
            "minecraft:behavior.melee_attack": {
                "priority": 3
            },
            "minecraft:attack": {
                "damage": 3
            }
        },
        "events": {
            "minecraft:entity_spawned": {
                "randomize": [
                    {
                        "weight": 95,
                        "trigger": "minecraft:spawn_adult"
                    },
                    {
                        "weight": 5,
                        "add": {
                            "component_groups": [
                                "minecraft:cow_baby"
                            ]
                        }
                    }
                ]
            },
            "minecraft:entity_born": {
                "add": {
                    "component_groups": [
                        "minecraft:cow_baby"
                    ]
                }
            },
            "minecraft:entity_transformed": {
                "remove": {},
                "add": {
                    "component_groups": [
                        "minecraft:cow_adult"
                    ]
                }
            },
            "minecraft:ageable_grow_up": {
                "remove": {
                    "component_groups": [
                        "minecraft:cow_baby"
                    ]
                },
                "add": {
                    "component_groups": [
                        "minecraft:cow_adult"
                    ]
                }
            },
            "minecraft:spawn_adult": {
                "add": {
                    "component_groups": [
                        "minecraft:cow_adult"
                    ]
                }
            }
        }
    }
}

Test del pacchetto

Ora che il pacchetto di comportamenti ha un file manifest e un'entità mucca, è giunto il momento di avviare Minecraft e testare il nuovo componente aggiuntivo. Come indicato nel tutorial del pacchetto di risorse, l'accatastamento dei pacchetti funzionerà anche per i pacchetti di comportamenti. Questo significa che al momento del caricamento, il contenuto classico viene caricato per primo, seguito da eventuali componenti aggiuntivi. Poiché tutte le mucche sono controllate dal file di comportamento cow.json, tutte le mucche che si riproducono nel tuo mondo avranno il nuovo comportamento.

  1. Avvia Minecraft e seleziona Gioca.
  2. Seleziona Crea nuovo mondo.
  3. Nella sezione Impostazioni, scorri verso il basso fino alla sezione Componenti aggiuntivi.
  4. Fai clic su Pacchetti di comportamenti per visualizzare tutti i pacchetti disponibili.
  5. Fai clic sul menu a discesa I MIEI PACCHETTI per aprirlo.
  6. Seleziona My BEHAVIOR Pack e fai clic su Attiva per aggiungere il pacchetto di comportamenti al mondo.
  7. Fai clic su Crea per creare il tuo mondo.
  8. Vai a cercare una mucca.

Risoluzione di problemi

Problemi con i pacchetti di comportamenti? La risoluzione dei problemi è una parte normale di qualsiasi processo di sviluppo. Ecco alcuni punti da cui avviare la risoluzione dei problemi di un pacchetto di comportamenti.

Il pacchetto di comportamenti non appare in Minecraft

Se il tuo pacchetto di risorse non appare nella sezione dei componenti aggiuntivi, vi è un problema con il file manifest.json. Iniziamo da qui.

  • Ci sono due UUID diversi nelle sezioni dei moduli e dell'intestazione di manifest.json? Per ulteriori informazioni, consulta la sezione UUID.
  • Hai attivato le estensioni dei file e i percorsi? manifest.json potrebbe non essere manifest.json. Se nella finestra Esplora file le estensioni dei nomi dei file non sono visibili, puoi attivarle nella scheda Visualizza.
  • Ricontrolla parentesi e parentesi graffe di JSON. Gli strumenti di linting JSON possono essere di aiuto.
  • Nel caso vi sia un problema relativo a un pacchetto di comportamenti attivo, sarà presente un punto esclamativo rosso sotto a Pacchetti di comportamenti nella sezione dei componenti aggiuntivi.
    • Il pacchetto di comportamenti avrà più informazioni. Può segnalare una dipendenza mancante o eseguire la diagnostica di altri problemi.

Il pacchetto di comportamenti viene visualizzato, il contenuto non funziona

  • Controlla che la cartella entities si trovi nella posizione corretta e che il nome sia stato digitato correttamente. Controlla quindi tutte le grafie di cow.
  • Assicurati che l'UUID nella sezione dependencies corrisponda a un pacchetto di risorse esistente (e che sia anche funzionante).
  • Sposta il tuo pacchetto sopra gli altri per assicurarti che il pacchetto di comportamenti sia caricato per primo. L'accatastamento di pacchetti potrebbe causare la mancata visualizzazione delle tue modifiche.

E adesso?

Ora che hai osservato un pacchetto di comportamenti in azione, puoi scoprire di più su come funziona e per cos'altro puoi utilizzarlo.

Per vedere esempi di file di risorse e comportamenti non modificati, dai un'occhiata al pacchetto di risorse base e al pacchetto di comportamenti base di Minecraft.