CommandBlock Détecter l'utilisation d'un item pour incrémenter un point au score en multi BEDROCK

MrYoshi

Aventurier
9 Mai 2020
6
1
3
35
Bonjour. Je me tourne à nouveau vers la communauté car j'ai faillit dans mes recherches. Après deux jours à arpenter les sites et forum, anglophones compris, de commandes Minecraft je ne trouve pas l'info tant désiré. J'aimerais trouver, comme précisé dans le titre, une commande permettant d'ajouter un point au scoreboard d'un joueur qui se servirait d'une canne a pêche. Le but final est de créer un grappin avec cette dernière. Grâce a un tuto j'arrive à l'effet désiré, mais seulement en solo, ça plante en multi. Voici comment ce présente le bordel :

Code:
/execute @a ~ ~ ~ testfor @e[type=fishing_hook,rm=2,c=1]
DEUX REPETEUR QUATRES TICS
Code:
/execute @p ~ ~ ~ tp @p ^ ^0.5 ^1.5 facing @e[type=fishing_hook,rm=2,c=1]
REPETEUR DEUX TICS
Code:
/execute @p ~ ~ ~ kill @e[type=fishing_hook,r5]


Je me suis donc dis que pour isoler le joueur qui voudrait grappiner :fou: il fallait le tag, d'une manière ou d'une autre, et ai trouvé que l'idée du scoreboard serait pas mal. Hélas je ne trouve rien qui me permettent de mettre en pratique cette idée. J'ai trouvé quelques codes prometteurs mais qui sont pour java edition, et je ne trouve pas leur équivalence pour la version bedrock. Si quelqu'un peut me dire si c'est au moins réalisable ou s'il existe une méthode plus simple Sinon je reprendrai le code de base en le copiant pour autant de joueurs que nous sommes, avec le pseudo de chacun en place du "@a" (ex : /execute Notch ~20~20~20.....)
 
Dernière édition:

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Salut! En effet, la bedrock est pas la meilleure version question commandes, et perso, je n'y connais pas grand chose, mais ça ressemble pas mal à la 1.8 (la belle époque, lorsque dieu créa le @e)...

Mais à partir de ça, j'aurais une proposition qui marcherait avec les blocs de commande en chaine (je crois que ça existe en bedrock) :

Bloc 1 (Répétition/Inconditionnel/Toujours actif) :
Code:
execute @e[type=fishing_hook] ~ ~ ~ execute @p ~ ~ ~ tp @p ^ ^0.5 ^1.5 facing @e[type=fishing_hook,r=5,c=1]
Explication : Pour chaque hameçon, ça cible le joueur le plus proche de lui, puis le téléporte relativement à lui
Je suis pas sûr pour le "r=5", essaie d'abord et change-le selon tes besoins

Bloc 2 (Chaîne/Conditionnel/Toujours actif - À la suite du bloc 1) :
Code:
kill @e[type=fishing_hook]
Explication : tue les hameçons (qui ont déjà fait leur travail)


Je suis pas très sûr mais tu me diras si ça marche, ou si tu as trouvé une solution à partir de ça!
 

MrYoshi

Aventurier
9 Mai 2020
6
1
3
35
Merci beaucoup Eglaios pour ton aide. Effectivement le "r=5" m'a bien aidé, en tout cas il m'a mis sur la voie. Je ne savais pas qu'on pouvait faire un "/execute @e" suivis d'un "execute @a/@p" et c'est cette partie la qu'il me manquait. Grace à ça j'ai fait en sorte que l'hameçon tag le joueur pour l'isoler. Comme l'hameçon part du joueur durant le premier tic il est très proche ce qui permet de relativement bien cibler la personne voulue.

Voici les commandes pour que ça fonctionne :


1 : Dans un CB "inconditionnel", "toujours actif" et qui s'exécute au "tic 6"
Code:
/execute @a ~ ~ ~ testfor @e[type=fishing_hook,r=3,c=1]

COMPARATEUR

2 : Dans un CB "inconditionnel", "actif par redstone" et qui s'exécute au "tic 2"
Code:
/execute @e[type=fishing_hook] ~ ~ ~ execute @a[r=5] ~ ~ ~ tag @s add grappin

COMPARATEUR
REPETEUR
REDSTONE/REDSTONE
COMPARATEUR SOUSTRACTIF/COMPARATEUR SOUSTRACTIF
REDSTONE/REDSTONE

3 : Dans un CB "inconditionnel", "actif par redstone" et "délais des ticks : 1" (plus le nombre de tic seras élevé plus la tp seras saccadé. Un "s'exécute au premier tick", donc "tick 0", peut être assez déstabilisant)
Code:
/execute @a[tag=grappin] ~ ~ ~ tp @p ^ ^0.5 ^1.5 facing @e[type=fishing_hook,rm=2,c=1]

COMPARATEUR
REPETEUR

4 : Dans un CB "inconditionnel", "actif par redstone" et "delais des ticks : 20"
Code:
/execute @a[tag=grappin] ~ ~ ~ kill @e[type=fishing_hook,r=5]

5 : Dans un CB "inconditionnel", "toujours actif" et "délais des ticks : 60" IL EST INDÉPENDANT !
Code:
/execute @a[tag=grappin] ~ ~ ~ tag @a[tag=grappin] remove grappin


Tout ceci doit pouvoir être monté de manière plus propre (pas sur qu'il y ai besoin de tant de comparateur et répéteur), mais le principal est la, on peut grappiner en toute tranquillité sans trop risquer d'avoir la mort d'un camarade sur la conscience (que ton stuff repose en paix Ely).

Des petites précisions cependant. Entre le 2eme et 3eme CB les comparateurs servent à créer un extandeur(??) de signal, ils doivent être placé tête-bêche (69) et le bouton/nez doit être allumé. Pour le 5eme CB la commande doit pouvoir être plus courte d'après des précisions apportées à une autre question par Oromis, mais je n'arrive pas à la faire fonctionner donc je la conserve sous cette forme.

J'espere que l'explication du montage redstone reste compréhensible. Bon grappinage a tous !
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Je suis pas sur que le /testfor soit utile, vu qu'en fin de compte, 100% du temps, quand il y a un hook, il a été invoqué par le joueur, mais si ça t'arrange...
 

MrYoshi

Aventurier
9 Mai 2020
6
1
3
35
En fait le testfor a pour utilité d'empecher que le tag se relance trop vite et donc éviter de se re tp. Personnellement ça m'arrive souvent de clic gauche pour enlever le hook alors qu'il s'est déjà fait détruire, avec ça j'evite de me re tp 2 cases plus loin au dessus du vide par mégarde. Surtout que relancer le grappin trop vite pour aller plus loin peut etre fatal si on arrive au 60eme tick et que le dernier CB se lance, on est olus tag, du coup la chute. Dans une forêt ça va, un peu mal aux genoux mais bon.., par contre en haut d'une montagne on rigole moins.

Petite question tant que j'y pense, je ne saisi pas ce qu'est le "c=1", je l'ai récupéré du tuto ou j'ai trouvé la première version de la tp mais je n'ai pas vu la différence de l'avoir ou pas. Sais tu ce que c'est ?
 
Dernière édition: