Las entidaes en mi opinion son lo mas dificil, pues tenemos que imaginarlas como unas piezas de lego, pues son bloques que tenemos que ir armando, pero para hacerlo mas visual usaremos diagramas de flujo no a su maxima profundidad como lo usamos en programacion pero si lo usaremos para darnos una idea. Entonces las entidades tienen 3 bases, componentes, grupos de componentes y eventos. Los componentes son aquellos con los que la entidad nace, por ejemplo
"minecraft:physics"
Sí la entidad no tuviera este componente al nacer la entidad no tendria sentido, porque este componente tiene "has_gravity" sin el saldria volando, estos componentes son de suma importancia ya que es la base principal, ahora podemos agregar eventos en ciertas situaciones, por ejemplo podemos agregar un evento al detectar x distancia:
"minecraft:target_nearby_sensor": {
"inside_range": 2,
"outside_range": 3,
"on_outside_range": {
"event": "snowball",
"target": "self"
},
"on_inside_range": {
"event": "minecraft:entity_spawned",
"target": "self"
}
}
Aunque es ambiguo el evento llama al evento que definiremos, este evento es el nexo a nuestros grupos de componentes. En los grupos de componentes podemos definir varias situaciones, lo podemos asimilar a un if, por ejemplo, sí detecta a la entidad en x distancia -> snowball, sí no -> entity_spawned, pero este ejemplo es muy basico a comparacion del potencial que tiene, porque podemos tener tantos grupos de componentes para situaciones como queramos, por esta manera les recomiendo usar diagramas de flujo o mapas mentales. Los componentes los pueden ver en la wiki de bedrock.dev. Por otro lado en el paquete de recursos no hay mucha dificultad, pues bridge ya hace la gran mayoria, solamente quedaria ver los sonidos, los sonidos se pueden encontrar en /tuaddon/rp/sounds/. En sounds podemos definir los sonidos que hara nuestra entidad en ciertas situaciones.
"rg:h2o": {
"events": {
"ambient": "mob.blaze.breathe",
"death": "mob.blaze.death",
"hurt": "mob.blaze.hit",
"shoot": "mob.blaze.shoot"
},
"pitch": [
0.8,
1.2
],
"volume": 1
}
En este caso, definimos "mob.blaze.breathe" para el ambiente, mientras que "mob.blaze.shoot" para el disparo, etc... finalmente pitch sirve como un escalar para la frecuencia, o sea para hacer mas grave o agudo el sonido, finalmente el volumen es un valor float.