Bonjour, je viens à vous pour éclairer ma lanterne, la commande /dialog permet d'afficher un menu cliquable, et permet entre autre de jouer des commandes.
mon problème est que les commandes sont joué par la personne qui clique, alors que je voudrais que ce soit joué par le serveur.
Je met en situation, joueur 1 passe un portail, le menu s'affiche avec les destinations, il choisit SPAWN, mais comme il n'est pas opérateur il n'a pas accès à la commande /tp ni même à la commande /function du coup il ne peut pas se téléporter, et j'aimerais que quand le joueur 1 passe le portail et choisit un endroit, le serveur detecte que joueur 1 a cliqué et le téléporte.
Pensez vous que c'est possible ? y a t'il des spécifications à rentré en plus ? je souhaite le faire sans plugin de perm si possible.
J'utilise : https://misode.github.io/dialog/?version=1.21.6 pour m'aider.
Et voilà le json qui est tout simple, et c'est surement là que je me trompe, si quelqu'un est capable de m'aider, je vous serait très reconnaissant.
Silam
Hello, I'm coming to you for some help.
The /dialog command displays a clickable menu and allows, among other things, for commands to be executed. My problem is that the commands are executed by the person who clicks, whereas I would like them to be executed by the server.
Let me explain the situation: Player 1 goes through a portal, the menu appears with the destinations, they choose SPAWN, but since they are not an operator, they don't have access to the /tp command or even the /function command, so they can't teleport.
I would like it so that when Player 1 goes through the portal and chooses a location, the server detects that Player 1 clicked and teleports them. Do you think this is possible? Are there any additional specifications I need to include?
I would like to do this without a permissions plugin if possible.
mon problème est que les commandes sont joué par la personne qui clique, alors que je voudrais que ce soit joué par le serveur.
Je met en situation, joueur 1 passe un portail, le menu s'affiche avec les destinations, il choisit SPAWN, mais comme il n'est pas opérateur il n'a pas accès à la commande /tp ni même à la commande /function du coup il ne peut pas se téléporter, et j'aimerais que quand le joueur 1 passe le portail et choisit un endroit, le serveur detecte que joueur 1 a cliqué et le téléporte.
Pensez vous que c'est possible ? y a t'il des spécifications à rentré en plus ? je souhaite le faire sans plugin de perm si possible.
J'utilise : https://misode.github.io/dialog/?version=1.21.6 pour m'aider.
Title of Expandable Spoiler
{
"type": "minecraft:multi_action",
"title": "SLM Portail",
"can_close_with_escape": true,
"pause": false,
"actions": [
{
"label": "Home",
"action": {
"type": "minecraft:run_command",
"command": "function slm_portail:zaap/test"
}
},
{
"label": "Spawn",
"action": {
"type": "minecraft:run_command",
"command": "tp @s 412 90 215"
}
}
]
}
"type": "minecraft:multi_action",
"title": "SLM Portail",
"can_close_with_escape": true,
"pause": false,
"actions": [
{
"label": "Home",
"action": {
"type": "minecraft:run_command",
"command": "function slm_portail:zaap/test"
}
},
{
"label": "Spawn",
"action": {
"type": "minecraft:run_command",
"command": "tp @s 412 90 215"
}
}
]
}
Et voilà le json qui est tout simple, et c'est surement là que je me trompe, si quelqu'un est capable de m'aider, je vous serait très reconnaissant.
Silam
Hello, I'm coming to you for some help.
The /dialog command displays a clickable menu and allows, among other things, for commands to be executed. My problem is that the commands are executed by the person who clicks, whereas I would like them to be executed by the server.
Let me explain the situation: Player 1 goes through a portal, the menu appears with the destinations, they choose SPAWN, but since they are not an operator, they don't have access to the /tp command or even the /function command, so they can't teleport.
I would like it so that when Player 1 goes through the portal and chooses a location, the server detects that Player 1 clicked and teleports them. Do you think this is possible? Are there any additional specifications I need to include?
I would like to do this without a permissions plugin if possible.
1
J'ai trouvé la solution, pour que cela fonctionne il faut passer par un scoreboard trigger, qui permet à quelqu'un sans droit sur serveur de modifier un scoreboard et du coup en fonction du score le serveur peu faire l'action voulu.
d'abord on créer un scoreboard :
*scoreboard objectives add destination trigger*
pour ma part j'ai ensuite créer dans un datapack un .mcfunction qui détecte quand quelqu'un est tag ou ce trouve dans le portail :
*scoreboard players enable @a[tag=list_portail,tag=!dialzaap] destination*
ceci va autoriser le joueur à modifier son score via /trigger (qui sera executé par le /dialog)
dans le même mcfunction j'y ajoute :
*execute at @a[tag=list_portail,tag=!dialzaap] run dialog show @a[tag=list_portail,tag=!dialzaap] slm_portail:main*
et
*execute at @a[tag=list_portail,tag=!dialzaap] run tag @a[tag=list_portail,tag=!dialzaap] add dialzaap*
ça va ouvrir le dialog.json que j'ai ciblé.
ensuite on créer un autre mcfunction qui cherche en boucle si un joueur à le score destination à 1 ou 2 (les résultats qu'on peu avoir en cliquant sur les dialog):
*execute at @a[scores={destination=1}] run function slm_portail:zaap/spawn*
on créer aussi un mcfunction pour téléporter au spawn :
execute at @a[scores={destination=1}] run tag @a[scores={destination=1}] remove dialzaap
execute at @a[scores={destination=1}] run tp @a[scores={destination=1}] 421 89 242 -180 -3
execute at @a[scores={destination=1}] run tag @a[scores={destination=1}] remove list_portail
execute at @a[scores={destination=1}] run scoreboard players set @a[scores={destination=1}] destination 0
Voilà je pense que c'est assez flou comme explication mais si vous avez des question dite le, et je pense que quelqu'un qui à un minimum de connaissance en datapack ça pourra l'aider.
d'abord on créer un scoreboard :
*scoreboard objectives add destination trigger*
pour ma part j'ai ensuite créer dans un datapack un .mcfunction qui détecte quand quelqu'un est tag ou ce trouve dans le portail :
*scoreboard players enable @a[tag=list_portail,tag=!dialzaap] destination*
ceci va autoriser le joueur à modifier son score via /trigger (qui sera executé par le /dialog)
dans le même mcfunction j'y ajoute :
*execute at @a[tag=list_portail,tag=!dialzaap] run dialog show @a[tag=list_portail,tag=!dialzaap] slm_portail:main*
et
*execute at @a[tag=list_portail,tag=!dialzaap] run tag @a[tag=list_portail,tag=!dialzaap] add dialzaap*
ça va ouvrir le dialog.json que j'ai ciblé.
dialog.json
{
"type": "minecraft:multi_action",
"title": {
"text": "Liste des Portails",
"color": "aqua",
"bold": true,
"italic": false
},
"can_close_with_escape": false,
"pause": true,
"after_action": "close",
"actions": [
{
"label": {
"text": "Spawn",
"color": "green"
},
"tooltip": {
"text": "Zone Spawn, accès class/lootbox/bateau etc..."
},
"action": {
"type": "minecraft:run_command",
"command": "trigger destination set 1"
}
},
{
"label": "Survie Nord",
"tooltip": {
"text": "Survie de Silam, Wayter04 & Tiitofu (2025)"
},
"action": {
"type": "minecraft:run_command",
"command": "trigger destination set 2"
}
}
]
}
"type": "minecraft:multi_action",
"title": {
"text": "Liste des Portails",
"color": "aqua",
"bold": true,
"italic": false
},
"can_close_with_escape": false,
"pause": true,
"after_action": "close",
"actions": [
{
"label": {
"text": "Spawn",
"color": "green"
},
"tooltip": {
"text": "Zone Spawn, accès class/lootbox/bateau etc..."
},
"action": {
"type": "minecraft:run_command",
"command": "trigger destination set 1"
}
},
{
"label": "Survie Nord",
"tooltip": {
"text": "Survie de Silam, Wayter04 & Tiitofu (2025)"
},
"action": {
"type": "minecraft:run_command",
"command": "trigger destination set 2"
}
}
]
}
ensuite on créer un autre mcfunction qui cherche en boucle si un joueur à le score destination à 1 ou 2 (les résultats qu'on peu avoir en cliquant sur les dialog):
*execute at @a[scores={destination=1}] run function slm_portail:zaap/spawn*
on créer aussi un mcfunction pour téléporter au spawn :
execute at @a[scores={destination=1}] run tag @a[scores={destination=1}] remove dialzaap
execute at @a[scores={destination=1}] run tp @a[scores={destination=1}] 421 89 242 -180 -3
execute at @a[scores={destination=1}] run tag @a[scores={destination=1}] remove list_portail
execute at @a[scores={destination=1}] run scoreboard players set @a[scores={destination=1}] destination 0
Voilà je pense que c'est assez flou comme explication mais si vous avez des question dite le, et je pense que quelqu'un qui à un minimum de connaissance en datapack ça pourra l'aider.
