Comment bloquer l'utilisation d'un bouton pendant X temps ?

Rakasuki

Architecte en herbe
20 Avril 2011
79
0
103
Bonjour.

J'aimerais créer un système sur mon serveur pour faire poper des cochons (à partir d’œuf de cochons que j'aurais mis dans des Dispenser) pour toute la communauté.
Ça, ce n'est pas trop difficile mais j'aimerais un système (redstone ou command block) afin que l'utilisateur X ne puise utiliser cliquer sur ce boutons pendant Y temps.

En gros, tout les joueurs pourront cliquer sur le bouton mais pourront l"utiliser qu'une seule fois dans la journée.

Est-ce possible ? Si oui, comment ?

Merci d'avance.
 

PneuX

Architecte en herbe
3 Janvier 2015
134
45
140
rediscovercraft.eu
Bonjour Rakasuki.

Derrière ton Dispenser, laisse un espace vide vers lequel nous allons faire apparaitre un redstone_block via un commandblock qui sera activé avec le bouton don tu parles.

Avec ce command_block on va donc faire de sorte qu'un redstone_block soit posé derrière le dispenser (et donc l'activer) uniquement si le joueur se trouvant juste devant le bouton n'a pas déjà appuyé dessus depuis un certain temps.

Code:
/execute @p[c=1,r=0,x=,y=,z=,score_playOneMinute_min=] ~ ~ ~ /setblock x y z minecraft:redstone_block

Où :
- [x=,y=,z=] représente les coordonnées du bouton en enlevant 1 aux Y.
- [score_playOneMinute_min=] représente le nombre de tick minimum à partir duquel le joueur peut à nouveau activer le dispenser. Tu devras donc créer cet objectif de type stat.playOneMinute avec la commande suivante :
Code:
/scoreboard objectives add playOneMinute stat.playOneMinute
(Une journée minecraftienne représente 24.000 ticks)
- x y z situé après setblock représente les coordonnées où le block de redstone sera posé.

Ensuite il te faut faire de sorte que lorsque le bloc de redstone apparait, il soit remplacé presque instantanément par de l'air pour que le système fonctionne pour le prochain joueur.
Pour cela, place un commandblock collé à l'emplacement où apparaîtra le bloc de redstone, et inscris-y :
Code:
/setblock x y z minecraft:air

x y z sont les coordonnées de l'emplacement du bloc de redstone. Ainsi, aussitôt le bloc de redstone apparaîtra, aussitôt il disparaîtra.

Enfin, la dernière chose à faire est de reset le score playOneMinute du joueur venant d'activer le dispenser.
Pour cela, place un dernier commandblock collé à l'emplacement où apparaîtra le bloc de redstone, et inscris-y :
Code:
/scoreboard players reset @p[c=1,r=0,x=,y=,z=,score_playOneMinute_min=] playOneMinute

Où tout ce qui se trouve entre crochet est identique à ce qui se trouve dans la commande /execute... du début.

Minecraftiennement.
 

Rakasuki

Architecte en herbe
20 Avril 2011
79
0
103
Hello
Merci pour ta réponse !
J'ai donc bien suivi tes instructions mais quand j'appui sur le bouton, mon dispenser disparaît. J'a vérifié les coordonnées et tout est bon.
Voilà mon setup :
http://hpics.li/791d5da

EDIT :
Le plus simple je pense, c'est qu'il faut limiter le nombre de cochons/mobs dans une zone de X taille.

Par exemple, je veux que dans une zone de 10x10, il ne peut qu'avoir 20 mobs (voir mieux, cochons du coup) max.
 

PneuX

Architecte en herbe
3 Janvier 2015
134
45
140
rediscovercraft.eu
Place le commandblock qui contient la commande execute contre ton bloc de dark_oak_planks

Tous les autres commandblock, tu les places autour de l'endroit où tu fais apparaître ton bloc de redstone.

Si tu places tout ainsi, tu ne dois pas avoir besoin de placer une seule poudre de redstone.

Si le dispenser disparaît, et est remplacé par de l'air, il y a une erreur de coordonnée dans le commandblock où tu as écrit la commande setblock
 

Rakasuki

Architecte en herbe
20 Avril 2011
79
0
103
Le plus simple je pense, c'est qu'il faut limiter le nombre de cochons/mobs dans une zone de X taille.

Par exemple, je veux que dans une zone de 10x10, il ne peut qu'avoir 20 mobs (voir mieux, cochons du coup) max.

OU

Quand je clic sur le bouton, ça kill tout les mobs dans une zone de X sur X blocs et grâce à un système redstone classique, ça refait poper les cochons.
 

PneuX

Architecte en herbe
3 Janvier 2015
134
45
140
rediscovercraft.eu
Dans ce cas, pose un repeater à la sorti de ton bloc de planche de chene noir envoyant le signal dans un commandblock avec la commande:

/kill @e[type=Pig,r=,x=,y=,z=]

Puis à la sortie un autre repeater renvoyant le courant dans ton dispenser.

Si tu veux pas que tes cochons drop de loot en se faisant kill par la commande, remplace kill par un tp à 200 blocs en dessous:

/tp @e[type=Pig,r=] ~ ~-200 ~
 

PneuX

Architecte en herbe
3 Janvier 2015
134
45
140
rediscovercraft.eu
Si tu as besoin d'être précis, ou que la zone des cochons est plus éloignée du bouton, tu y mets les coordonnées du centre de la zone en question.
 

Rakasuki

Architecte en herbe
20 Avril 2011
79
0
103
Hmm.

Ne fonctionne pas.. J'ai oublié de préciser que je suis en 1.7.10 donc le /kill ne doit pas fonctionner, si ?

J'ai mis /kill @e[type=Pig,r=,x=,y=,z=] mais ce que je comprends pas dans cette commande, c'est qu'est-ce qui indique la zone où il doit exécuter le /kill ?
 

PneuX

Architecte en herbe
3 Janvier 2015
134
45
140
rediscovercraft.eu
C'est le r= qui correspond au rayon de cette zone, dont le centre est indiqué par x y z

Kill doit marcher en 1.7.10.

Execute non par contre.