🇮🇹 Italiano (Italian)
🇮🇹 Italiano (Italian)
Aspetto
🇮🇹 Italiano (Italian)
🇮🇹 Italiano (Italian)
Aspetto
Questa pagina si applica alla versione:
1.21
Questa pagina si applica alla versione:
1.21
I tipi di danno definiscono tipi di danno che le entità possono subire. A partire da Minecraft 1.19.4, la creazione di nuovi tipi di danno è basata sui dati, per cui essi sono creati tramite file JSON.
Creiamo un tipo di danno personalizzato chiamato Tater. Inizieremo creando un file JSON per il tuo danno personalizzato. Il file sarà posizionato nella cartella data
della tua mod, in una sottocartella chiamata damage_type
.
resources/data/fabric-docs-reference/damage_type/tater.json
Ha la struttura seguente:
{
"exhaustion": 0.1,
"message_id": "tater",
"scaling": "when_caused_by_living_non_player"
}
Questo tipo di danno personalizzato causa un aumento di 0.1 nel livello di esaurimento (exhaustion level) ogni volta che il giocatore prende danno, quando il danno è causato da una fonte vivente che non sia un giocatore (per esempio un blocco). Inoltre, la quantità di danno subita cambierà a seconda della difficoltà del mondo
INFO
Affidati alla Minecraft Wiki per tutte le possibili chiavi e valori.
Quando abbiamo bisogno di accedere al nostro tipo di danno personalizzato tramite codice, useremo la sua RegistryKey
per costruire un'istanza di DamageSource
.
La RegistryKey
può essere ottenuta nel modo seguente:
public static final RegistryKey<DamageType> TATER_DAMAGE = RegistryKey.of(RegistryKeys.DAMAGE_TYPE, Identifier.of("fabric-docs-reference", "tater"));
Per mostrare l'uso dei tipi di danno personalizzati, useremo un blocco personalizzato chiamato Blocco di Tater. Facciamo in modo che quando un'entità calpesta un Blocco di Tater, esso causa danno Tater.
Puoi fare override di onSteppedOn
per infliggere questo danno.
Cominciamo creando una DamageSource
del nostro tipo di danno personalizzato.
DamageSource damageSource = new DamageSource(
world.getRegistryManager()
.get(RegistryKeys.DAMAGE_TYPE)
.entryOf(FabricDocsReferenceDamageTypes.TATER_DAMAGE));
Poi, chiamiamo entity.damage()
con la nostra DamageSource
e con una quantità.
entity.damage(damageSource, 5.0f);
L'intera implementazione del blocco:
public class TaterBlock extends Block {
public TaterBlock(Settings settings) {
super(settings);
}
@Override
public void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity) {
if (entity instanceof LivingEntity) {
DamageSource damageSource = new DamageSource(
world.getRegistryManager()
.get(RegistryKeys.DAMAGE_TYPE)
.entryOf(FabricDocsReferenceDamageTypes.TATER_DAMAGE));
entity.damage(damageSource, 5.0f);
}
}
}
Ora quando un'entità vivente calpesta il nostro blocco personalizzato, subirà 5 di danno (2.5 cuori) usando il nostro tipo di danno personalizzato.
Puoi definire un messaggio di morte per il tipo di danno nel formato death.attack.<message_id>
nel file en_us.json
della nostra mod.
"item.minecraft.potion.effect.tater": "Tater Potion",
Al momento della morte dal nostro tipo di danno personalizzato, vedrete il messaggio di morte seguente:
Alcuni tipi di danno possono bypassare armatura, bypassare effetti di stato, o simili. I tag sono usati per controllare questo genere di proprietà dei tipi di danno.
Puoi trovare tipi di danno già esistenti in data/minecraft/tags/damage_type
.
INFO
Affidati alla Minecraft Wiki per una lista completa dei tag dei tipi di danno.
Aggiungiamo il nostro tipo di danno Tater al tag bypasses_armor
dei tipi di danno.
Per aggiungere il nostro tipo di danno a uno di questi tag, creeremo un file JSON nel namespace minecraft
.
data/minecraft/tags/damage_type/bypasses_armor.json
Con il contenuto seguente:
{
"replace": false,
"values": ["fabric-docs-reference:tater"]
}
Assicurati che il tuo tag non sostituisca il tag esistente impostando la chiave replace
a false
.