CommandBlock Résolu Mettre une latence ou désactiver le clic droit temporairement

michris

Aventurier
8 Mai 2019
33
1
9
31
Bonjour , je fais actuellement un market avec des panneaux qui setblock de la redstone mais en cliquant sur 2 items qui ont le meme prix en meme temps , les commandblock s'activent quand meme et give les items voulu pour le prix d'un seul donc j'aimerais bien savoir si on peut mettre une latence aux clic droit (avec mining fatigue j'y arrive pas mais peut être que c'est possible) ou complètement désactiver le clic droit (avec un scoreboard qui détecté le clic droit et fait en sorte qu'on puisse pas cliquer pendant 2s ou quoi) svp
Version : 1.8.9 vanilla
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Si tu détectes un clic sur des panneaux, le mieux, c'est d'invoquer temporairement une entité invisible, sans particules, invulnérable, silent, NoAI, NoGravity etc.
Le but étant de recouvrir temporairement le panneau avec une hitbox invisible, rendant un clic droit dessus impossible.

Autre méthode : le scoreboard. Comme tu peux mettre jusqu'à 4 clickEvents sur un panneaux, tu peux mettre la première commande comme "execute @p[score_<un score>=0] ~ ~ ~ setblock redstone block...", puis la deuxième commande en "scoreboard players set @p <un score> 1"
Donc quand le joueur clique, ça place le bloc s'il n'a pas un score de 1, puis ça le lui met à 1. Tant qu'il n'est pas remis à 0, recliquer ne fera rien. Tu peux remettre son score à 0 via le système activé par le panneau
(Du coup, en multijoueur, ça risque de ne pas marcher...)

Tu aurais un screenshot du système que tu utilises avec le panneau?
 

michris

Aventurier
8 Mai 2019
33
1
9
31
upload_2019-5-20_16-29-24.png

Sa donne ça , le panneau place un bloc de redstone allumant le commandblock 1 et 2 ( qui setblock air + testfor l'inventaire de l'item voulu ) , la 3 qui testfor un 2e stack (vu que j'ai besoin de 128 emeraudes donc 2 stack ( je detecte par slot ) , le commandblock 4 pour setblock le commandblock 2 et 3 pour les desactiver , et 5 pour clear/give et title. mais le problème est que quand on clique sur 2 panneaux ou + en même temps , les systèmes s'allument tous et détectent l'inventaire avant qu'il soit clear donc on peut glitch un peu le système , sinon , je pense que si je rajoute le /scoreboard (dans les panneaux) qui /summon une entity invisible dans le joueur le suivant partout et en le /kill juste après (par exemple a coté de commandblock 4) , je pense que même en multi , sa devrait marché ? par exemple un /execute @a[r=10] ~ ~ ~ kill @e[type=(mob)]

EDIT : je viens de trouver une autre solution plutôt simpliste mais assez efficace je trouve : j'active le panneau , donc tout marche bien , seulement , j'ai /fill en bas du market des commandblocks qui ont pour commandes :
/summon ArmorStand ~ ~63 ~ {Invisible:1,Invulnerable:1,DisabledSlots:2039583}
Qui sera activé par le panneau , ce qui fait que le market entier sera rempli d'armorstand invulnérable , invisible pour pas gêner et disableslot pour éviter de poser un item dessus , et à côté des commandes de give/clear etc... je mettrais un commandblock pour activer un autre commandblock au centre du market avec une commande :
/kill @e[type=ArmorStand,r=15]
(la redstone sera instant supprimé avec un /setblock ~ ~1 ~ air) , c'est pratique mais je sais pas si sa laguera beaucoup (en multi) de /summon 450 entity (la surface de mon market) à chaque achat
 
Dernière édition:

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Ah oui!
Mais je vois que tu utilises un système avec torches de redstone et tout, c'est un peu galère, je vais voir si tu ne peux pas juste optimiser le système
 

michris

Aventurier
8 Mai 2019
33
1
9
31
J'utilise ce système en profondeur car j'ai environ 50 systèmes un peu collés , donc j'ai pas l'espace de construire sur la longueur, sinon je viens de tester ma méthode et elle marche bien en solo pour l'instant.

EDIT : Enfaites je le met pas à l'endroit où l'achat est effectué mais l'endroit ou les commandblock sont reset car si quelqu'un fait un achat sans avoir les items requis , il y aura les armorstand qui seront pas kill
 

michris

Aventurier
8 Mai 2019
33
1
9
31
upload_2019-5-20_18-6-53.png

Petit problème enfaites que je viens de remarquer en gamemode 3 , les armorstands protègent pas des coins ,même si la zone est recouverte , ce n'est pas protégé , du coup pour y remédier , j'aimerais savoir si on peut pas faire un tp permanent d'un armorstand a l'endroit où regarde un joueur ? car dans le joueur , s'il avance sa ne marche pas. Ou une autre méthode si tu as les connaissances requises.
Sinon ta technique marche pas en multi ? car elle m'a l'air faisable :/execute score -> setblock puis /score add et /score reset dans le système ? pour le joueur @p
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Je sais pas mais je viens de te faire un système que tu vas aimer, je pense...
Hmmm... bravo mon minecraft vient de planter, je redémarre et je t'envoie ça lol
 

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Avant tout, crée un objectif "Buying" de type dummy.
déJà, voici la commande que tu utiliseras pour la pancarte de shop :

/setblock ~ ~1 ~ wall_sign 1 0 {Text1:"{\"text\":\"LIGNE 1\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/scoreboard players set @p Buying 1\"}}",Text2:"{\"text\":\"LIGNE 2\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/setblock -227 6 -416 redstone_block\"}}"}
Traduction : Met le score de Buying du joueur activateur à 1, puis place un bloc de redstone aux coordonnées spécifiées

Mets le texte que tu veux, l'important, c'est les clickEvent. Tu devras ensuite construire ceci (voir ci-dessous). Après, tu remplaceras les coordonnées du setblock de la commande ci-dessus de façon à placer le bloc de redstone à l'endroit où j'ai dessiné ce magnifique cube bleu!

Avant de passer aux commandes, assure-toi que la pancarte place bien le bloc de redstone à l'emplacement prévu.
2019-05-20_14.39.56.png


Si la pancarte est bien configurée, tu peux passer aux commandes :

Bloc 1 :
Code:
/setblock ~ ~1 ~ air
Sert à retirer le bloc de redstone

Bloc 2 :
Code:
clear @p[score_Buying=1,score_Buying_min=1] minecraft:emerald 0 0
Sert à compter le nombre d'émeraudes dans l'inventaire de tout joueur ayant un score Buying de 1 (donc ayant cliqué)

Bloc 3 :
Code:
stats block ~-1 ~ ~ set AffectedItems @p[score_Buying=1,score_Buying_min=1] Buying
Sert à stocker le nombre d'émeraudes dans l'inventaire du joueur directement dans son score Buying.
/!\Important/!\ Remplace "~ ~-1 ~" de façon à cibler la position du bloc 2!!

Bloc 4 :
Code:
tellraw @a[score_Buying=127] ["",{"text":"Tu n'as pas assez d'émeraudes!","color":"red"}]
Envoie un message si le joueur a moins de 128 émeraudes

Bloc 5 :
Code:
tellraw @a[score_Buying_min=128] ["",{"text":"Achat effectué avec succès!","color":"green"}]
Envoie un message si le joueur a 128 émeraudes ou plus

Bloc 6 :
Code:
give @p[score_Buying_min=128] minecraft:dragon_egg
Donne l'objet acheté au joueur s'il a 128 émeraudes ou plus

Bloc 7 :
Code:
clear @p[score_Buying_min=128] minecraft:emerald 0 128
Clear 128 émeraudes si l'achat a été validé

Bloc 8 :
Code:
/scoreboard players reset @a[score_Buying_min=0] Buying
Reset le score Buying; une fois l'achat terminé, le joueur ne sera plus affecté si le système est réactivé par un autre joueur
 
  • J'aime
Reactions: michris

Eglaios

Crétin de la commu
14 Avril 2018
310
42
89
25
Ce système est vraiment pas mal : Compatible en multijoueur, temps d'exécution : ~1 tick, le panneau est spammable, système très compact,... Tu me diras ce que tu en penses...
 
  • J'aime
Reactions: michris

michris

Aventurier
8 Mai 2019
33
1
9
31
Merci , j'essaierai de faire sa meme si avec le manque de place sa va être dur mais je me deboruillerai