commande minecraft:interaction

oma

La Lumière
22 Février 2011
231
28
134
Bonjour,

je me tourne ici, car malgré mes recherches et mes tests, je bloque un peu :3
je fais un datapack de téléportation avec notamment un sélecteur de destinations via des minecraft:interactions, il y 'a un sélecteur devant chaque portail, et il y a 20 portails
et chaque selecteur contient 21 entity:interact,
2024-09-29_13.52.00.png

j'ai reussi a faire que tout fonctionne, avec 1 ou 2 ou même 4 portail ca va, mais quand je test en posant les 20 portails, le jeu se met a surveiller, les 20 bouton des 20 sélecteurs.. ce qui fait que le jeu part dans les 1000Ms et du coup tout bug...

mon souci vient de cette série commande (qui est répété 21 fois donc. Pour 20 autres boutons avec des tag diffèrent) :

Code:
#reactions interactions dialing
execute as @e[type=minecraft:interaction,tag=dial] unless entity @e[tag=stargate,scores={gate_active=1..}] if entity @e[tag=stargate,scores={adresse=0..20}] if data entity @s interaction on target run tellraw @s "activation stargate"
execute as @e[type=minecraft:interaction,tag=dial] unless entity @e[tag=stargate,scores={gate_active=1..}] if entity @e[tag=stargate,scores={adresse=0..20}] if data entity @s interaction on target at @s run playsound minecraft:custom.pegasus_dhd_button master @a[distance=0..40] ~ ~ ~ 0.05
execute as @e[type=minecraft:interaction,tag=dial] unless entity @e[tag=stargate,scores={gate_active=1..}] if entity @e[tag=stargate,scores={adresse=0..20}] if data entity @s interaction on target at @s run scoreboard players set @e[tag=stargate,distance=0..15] dialing 1
execute as @e[type=minecraft:interaction,tag=dial] if data entity @s interaction run data remove entity @s interaction
c'est elle qui fait qu'elle teste tout les minecraft:interaction de touttt mes selecteurs dans le monde...

pour bien faire, il faudrait que seulement les interaction a [distance=0..10] d'un joueur soit surveillé..
mais je n'y parviens pas ...

si jamais un pro passe par la et a la réponse, j'inclue sa tete dans mon datapack en guise de crédit :)


merci
 
alors je m'y connais quasiment pas mais c'est pas parce que tu lui dit de faire toutes @e les interaction avec le tag dial [type=minecraft:interaction, tag=dial] ???
après je dis peut être n'importe quoi mais je m'y connais quasiment pas.
et sinon c'est peut être parce que tu a utilisé deux tag différent, dial et stargate, mais je sais pas comment çà marche donc je peut être bêtises:confused:
 
  • J'aime
Reactions: oma
Bonjour,

Pourrais-tu expliquer ton raisonnement de la commande ?
Code:
execute
(1) as @e[type=minecraft:interaction,tag=dial]
(2) unless entity @e[tag=stargate,scores={gate_active=1..}]
(3) if entity @e[tag=stargate,scores={adresse=0..20}]
(4) if data entity @s interaction on target
(5) at @s run [...]
  1. Sélectionne les boutons...
  2. ...seulement si aucun portail n'est actif dans tout le monde ?
  3. ...seulement les 21 premières destinations
  4. ...?
  5. ...exécute la commande

Cordialement,
ShE3py
 
  • J'aime
Reactions: oma
salut,

je vais détailler
Code:
#reactions interactions dialing
execute as @e[type=minecraft:interaction,tag=dial] unless entity @e[tag=stargate,scores={gate_active=1..}] if entity @e[tag=stargate,scores={adresse=0..20}] if data entity @s interaction on target run tellraw @s "activation stargate"
execute as @e[type=minecraft:interaction,tag=dial] unless entity @e[tag=stargate,scores={gate_active=1..}] if entity @e[tag=stargate,scores={adresse=0..20}] if data entity @s interaction on target at @s run playsound minecraft:custom.pegasus_dhd_button master @a[distance=0..40] ~ ~ ~ 0.05
execute as @e[type=minecraft:interaction,tag=dial] unless entity @e[tag=stargate,scores={gate_active=1..}] if entity @e[tag=stargate,scores={adresse=0..20}] if data entity @s interaction on target at @s run scoreboard players set @e[tag=stargate,distance=0..15] dialing 1
execute as @e[type=minecraft:interaction,tag=dial] if data entity @s interaction run data remove entity @s interaction

déjà, pour le contexte :
ca c'est la suite de commande qui surveille et s'occupe du bouton "dial" uniquement
c'est celui qui active le portail si les condition sont reunies, a savoir, si aucun portail n'a de scores={gate_active=1..} supérieur a 1,
et si seulement on a choisi une destination entre 0 et 20

les 20 autres boutons son la pour choisir une destination ils n'ont donc pas la conditions adresse 0..20.

j'avoue que c'est la plupart des modèle de commande que l'on trouve pour déclencher une action si interaction. du joueur sur une minecraft:interactions

j'interprète ainsi ma suite de commande :

1/ selection des boutons -
si aucunes @e n'a de scores superieur a 1 -
et si l'entité @e[tag=stargate,scores={adresse=0..20}] a un score d'adresse
si l'entité contient des data interaction (le clic droit sur l'entité minecraft:interaction
alors on tellraw a la cible qui a cliqué sur le bouton

2/
idem que la 1, mais on envoie un son lorsqu'on a cliquer

3/
idem que les 2 autres, mais on score l'entité @e[tag=stargate,distance=0..15] dialing 1 (ce qui lance une function differente qui applique le meme score a l'armorstand du portail d'arrivé

4/ on reset la data interaction du bouton

ps, cette suite de commande fonctionne "tres bien dans la selection et l'activation des mes portail, et la remise a zero des data des boutons" , mon souci se situe sur le fait que losque je pose les 20 portails, j'imagine que ca surveille tout les tableau de selection, et non pas qu'un seul, donc le jeu se met a ramer
avec 3 ou 4 de posé, on, sent absolument rien en terme de lag


ce qui donne ca :


en fait l'ideal serait de pouvoir faire un truc comme ca :

Code:
execute at @e[type=minecraft:interaction,tag=dial] if entity @p[distance=0..10]

mais ca ne fonctionne pas, j'ai beau essayer d'adapter la suite de la commande en ce sens, le bouton ne marche plus :/
 
Dernière édition:
Tu peux essayer de réduire la portée des sélecteurs :
Code:
execute
  as @a at @s
  as @e[range=..6,type=minecraft:interaction,tag=dial] at @s
  if data entity @s interaction on target
  unless entity @e[range=..2,tag=stargate,scores={gate_active=1..}]
  run [...]
 
  • J'aime
Reactions: oma
je vais pousser plus loin les test (j'ai tester que sur un bouton)
mais ca a l'air de fonctionner, les ms s'emballent moins

je m'embrouille toujours avec les at, les as....
merci bcp pour tes réponses en tout cas