This script pattern to use custom events in Custom NPC Minecraft mod
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
- ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ ΠΏΠ°ΠΏΠΊΡ custom_events Π² ΠΏΠ°ΠΏΠΊΡ ΠΌΠΈΡΠ°: .minecraft\saves[ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΈΡΠ°]
- ΠΠ΅ΡΠ΅Π½Π΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ» eventAPI Π² ΠΏΠ°ΠΏΠΊΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²: .minecraft\saves[ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΈΡΠ°]\customnpcs\scripts\ecmascript ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅: ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ²Π΅Π½ΡΡ Π² ΠΎΠ΄Π½ΠΈΡ Π½ΠΏΡ/Π±Π»ΠΎΠΊΠ°Ρ /ΠΈΠ³ΡΠΎΠΊΠ°Ρ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎ - ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΡΡΠ³ΠΈΡ Π½ΠΏΡ/Π±Π»ΠΎΠΊΠΎΠ²/ΠΈΠ³ΡΠΎΠΊΠΎΠ². ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ²Π΅Π½Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ custom_events, ΠΏΡΠΈΠΌΠ΅Ρ: 1 "event1": { 2 "name": "say_name", 3 "args": { 4 "value1": 0 5 }, 6 "description": "ΠΡΠΎΡ ΠΈΠ²Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π΅ΡΠ΅Π»ΡΡ" 7 }
Π§ΡΠΎ Π·Π΄Π΅ΡΡ ΠΊ ΡΠ΅ΠΌΡ, Ρ ΠΎΠ±ΡΡΡΠ½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ°, ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΡΠ΅, Π° ΠΏΠΎΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° Π½ΠΏΡ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π½ΠΏΡ ΠΏΡΠΎΠΈΠ·Π½Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ: function interact(e){ SEND_TO_ALL_NPCS(INSTANCE( "event1", {value1:e.npc.name} )) }
ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΌΡ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π² Π½ΠΏΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅ΠΌ Π½Π°ΠΆΠΈΠΌΠ°ΡΡ. Π ΠΊΠ°Π²ΡΡΠΊΠ°Ρ Π·Π΄Π΅ΡΡ - id ΠΈΠ²Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΡΠΎΠΊΠ΅ β1 ΠΈΠ²Π΅Π½ΡΠ° Π² ΠΏΠ°ΠΏΠΊΠ΅. Π ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ - Π·Π°Π΄Π°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (ΡΡΡΠΎΠΊΠΈ β3 ΠΈ β4 Π² ΡΠΊΡΠΈΠΏΡΠ΅). ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π²ΠΎ Π²ΡΠΎΡΠΎΠ³ΠΎ Π½ΠΏΡ. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΈΡΠ»Π°, ΡΡΡΠΎΠΊΠΈ (ΠΈΡ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ ) ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ (Ρ Π½Π°Ρ Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ - e.npc.name, ΠΊΠΎΡΠΎΡΡΠΉ Π±Π΅ΡΡΡ ΠΈΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½ΠΏΡ). Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ Π½ΠΏΡ: 1 var npc; 2 function init(e){npc = e.npc} 3 function say_name(e){ 4 npc.say(e.value1)}
Π’ΡΡ say_name Π² ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΡΡΠΎΡΠΊΠ΅ - ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ²Π΅Π½ΡΠ° (ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠ΅ β2 ΡΠΊΡΠΈΠΏΡΠ° Π² ΡΠ°ΠΉΠ»Π΅, ΡΠΌ. Π²ΡΡΠ΅). ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΡΠ°ΡΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ id ΠΈΠ²Π΅Π½ΡΠ° Π² ΡΠ°ΠΉΠ»Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ. Π’ΠΎΠ³Π΄Π° ΠΈ Π² Π½ΠΏΡ-ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Π΅ ΠΈ Π² Π½ΠΏΡ-ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΊΡΠΈΠΏΡ ΠΏΡΠΈΠΌΡΡ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Π½ΠΏΡ Π² ΠΌΠΈΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΡ Π² ΠΎΠΊΠ½Π΅ ΡΠΊΡΠΈΠΏΡΠ° Π΅ΡΡΡ "function say_name" ΠΈ Π²ΡΠ΅ Π½Π°ΡΠ½ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠΈΠΌ ΠΈΠ²Π΅Π½ΡΠΎΠΌ. ΠΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Ρ Π²ΡΠ΅Ρ ΡΠ°Π·Π½ΡΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ· Π½ΠΏΡ ΡΠΊΡΠΈΠΏΡ Π² Π±Π»ΠΎΠΊ: 1 function interact(e){ 2 var w = e.npc.world 3 var blocks = [w.getBlock(15,102,2),w.getBlock(15,108,2)] 4 SEND_TO_BLOCKS(INSTANCE( "event1", {value1:456} ), blocks) }
ΠΡΡ ΡΠ°ΡΡΡ ΠΌΡ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π² Π½ΠΏΡ. Π ΡΠ΅Π»ΠΎΠΌ, ΡΡΡ Π²ΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΡΠΎΠΊΠ΅ β3 Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ (ΡΠ΅ΡΠ΅Π· getBlock ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ) ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΎΠ², ΠΊΡΠ΄Π° Π²Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠΊΡΠΈΠΏΡ. Π Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ Π΅ΡΡΡ "function say_name", ΡΠΎ ΠΎΠ½ΠΈ Π΅Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΡΡΡ.
ΠΡΡ ΡΠ°ΡΡΡ Π² Π±Π»ΠΎΠΊ:
var block; function init(e){block = e.block} function say_name(e){ block.world.setBlock(block.x,block.y+1,block.z,'minecraft:stone',0)}
ΠΠ»ΠΎΠΊ, ΠΏΡΠΈΠ½ΡΠ²ΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ, ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π±Π»ΠΎΠΊ ΠΊΠ°ΠΌΠ½Ρ Π½Π°Π΄ ΡΠΎΠ±ΠΎΠΉ.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠΊΡΠΈΠΏΡΠ° Π² ΠΈΠ³ΡΠΎΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π½ΠΏΡ, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ SEND_TO_ALL_NPCS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ SEND_TO_ALL_PLAYERS. ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡ Π² ΠΈΠ³ΡΠΎΠΊΠ΅, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΈΠ²Π΅Π½Ρ:
var player; function interact(e){player = e.player} function say_name(e){ player.showDialog(14,"Π‘ΠΊΠΈΠ½")}
Π‘ΠΊΡΠΈΠΏΡ ΠΎΡΠΊΡΠΎΠ΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ Ρ id 14.