Comment créer un block incassable ?

Clen

pessimiste repenti
22 Février 2016
1 507
286
167
21
Lille
Je synthétise pour les autres, car j'ai mis 5mn à comprendre ce que tu voulais dire à cause du désordre, des erreurs, des imprécisions et des anglicismes (que je ne citerai pas afin de conserver la stabilité de Victor Hugo dans sa tombe) :





Voici un système posant un bloc à des emplacements choisis grâce à un objet jeté. Ce bloc sera replacé à chaque destruction.

Le système utilise
/execute @e[type=armor_stand] ~ ~ ~ detect ~ ~ ~ minecraft:air setblock ~ ~ ~ bookshelf
pour placer un bloc (de bibliothèque dans mon exemple) à l'emplacement de tous les portes-armures situés dans un bloc d'air.
Pour créer ces portes-armures (donc commander l'emplacement des blocs), on peut utiliser
/execute @e[type=item, Item=[id:"minecraft:wooden_hoe"]] ~ ~ ~ summon armor_stand
ce qui invoquera un porte-armure à chaque endroit où une houe en bois est posée. Le porte-armure peut devenir invisible en modifiant la commande ainsi :
/execute @e[type=item, Item=[id:"minecraft:wooden_hoe"]] ~ ~ ~ summon armor_stand ~ ~ ~ {Invisible:true}

C'est plus simple à comprendre, non ?
 

MrAlinoë

I'm the cutest Bunny, deal with it ;)
7 Août 2016
119
21
130
24
Belgique
www.mralinoe.be
C'est plus simple à comprendre, non ?
Ouais... Cela dit, j'aurais utilisé un oeuf plutôt qu'un item droppé...

Mais cette solution (il me semble, je dis bien il me semble) a déjà été proposée et avait un point noir si le processus devait être répété pour un grand nombre de bloc...

Maintenant que j'y pense j'ai généré ça (via http://mralinoe.magix.net/tccJs/tccJs.html):
Code:
/summon FallingSand ~ ~1 ~ {Block:stone,Time:1,Passengers:[{id:FallingSand,Block:repeating_command_block,Time:1,Data:1,TileEntityData:{Command:/scoreboard players tag @e[type=Item] add tagbookshelf0 {OnGround:0b,Item:{id:minecraft:book,Damage:0s}}},Passengers:[{id:FallingSand,Block:chain_command_block,Data:1,Time:1,TileEntityData:{Command:/execute @e[type=Item,tag=tagbookshelf0] ~ ~ ~ /setblock ~ ~ ~ bookshelf},Passengers:[{id:FallingSand,Block:chain_command_block,Data:1,Time:1,TileEntityData:{Command:/kill @e[type=Item,tag=tagbookshelf0]}}]}]}]}

En principe, si je n'ai commis aucune erreur cette machine une fois activé "réparera" les bibliothèques en se payant le luxe de détruire les livres avec une marge d'erreur raisonnable... Et seulement si le bloc en question est détruit en survie (ou en aventure j'ai pas testé)...

Cette solution n'implique pas d'entités supplémentaires permanente, mais n'est cela dit pas fiable, car elle n'a pas de limite de zone (ce qui peut s'arranger)...

Code:
/summon FallingSand ~ ~1 ~ {Block:stone,Time:1,Passengers:[{id:FallingSand,Block:repeating_command_block,Time:1,Data:1,TileEntityData:{Command:/scoreboard players tag @e[type=Item] add tagbookshelf0 {OnGround:0b,Item:{id:minecraft:book,Damage:0s}}},Passengers:[{id:FallingSand,Block:chain_command_block,Data:1,Time:1,TileEntityData:{Command:/execute @e[type=ArmorStand,name=protect] ~ ~ ~ /execute @e[type=Item,tag=tagbookshelf0,r=10] ~ ~ ~ /setblock ~ ~ ~ bookshelf},Passengers:[{id:FallingSand,Block:chain_command_block,Data:1,Time:1,TileEntityData:{Command:/kill @e[type=Item,tag=tagbookshelf0]}}]}]}]}

C'est une solution théorique pour limiter la zone, faire en sorte qu'un armorstand exécute cette commande sur tous les items dans un rayon de 10 blocs (modifiable)...
 

Clen

pessimiste repenti
22 Février 2016
1 507
286
167
21
Lille
@MrAlinoë
Comme tu n'as pas expliqué ton système, je le fais :
Le système consiste à remplacer tous les livre par des bibliothèques, ainsi la destruction d'une bibliothèque libèrera des livres, ce qui replacera une bibliothèque.

Le1er bloc de commande contient
/scoreboard players tag @e[type=Item] add tagbookshelf0 {OnGround:0b,Item:{id:minecraft:book,Damage:0s}}
Cela ajoute un tag aux livres. En revanche, j'ignore pourquoi le livre doit être en l'air, vu que le système fonctionne de même sans cette condition...

Le deuxième bloc de commande contient
/execute @e[type=Item,tag=tagbookshelf0] ~ ~ ~ /setblock ~ ~ ~ bookshelf
Cela pose une bibliothèque à l'emplacement des livres possédant le tag.

Le troisième bloc contient
/kill @e[type=Item,tag=tagbookshelf0]
Il élimine les livres possédant le tag, après que la bibliothèque a été posée.

Mon avis sur ce système : Ce système a le mérite de ne pas utiliser d'entités supplémentaires, mais la marge d'erreur est très grande :
-Le système ne différencie pas les livres issus de bibliothèque détruites, des livres de joueurs.
-Toutes les bibliothèques du jeu deviennent indestructibles, sans distinction.
-Si le joueur est trop proche du bloc de bibliothèque, il est possible qu'il absorbere le livre avant que le système ne soit effectué.
 
Dernière édition:

compte inactif

Architecte en herbe
9 Juin 2014
1 382
132
187
25
Belgique
Salut, avec le fichier WorldGuard.py et MCEdit tu peux utiliser protéger des zones entières du grief rapidement sans te casser la tête avec des commandes (donc pas besoin de serveur/plugins non plus ça fonctionne en vanilla solo)
 

Clen

pessimiste repenti
22 Février 2016
1 507
286
167
21
Lille
Non, après, en quittant la zone il faut encore repasser en gms
Effectivement.

En revanche, je ne comprends pas comment on peut sélectionner un cube alors que le tag r correspond à une sphère. Le système de la vidéo procède-t-il bloc par bloc ?
Ou existe-t-il un tag cubique ?
 

compte inactif

Architecte en herbe
9 Juin 2014
1 382
132
187
25
Belgique
Effectivement.

En revanche, je ne comprends pas comment on peut sélectionner un cube alors que le tag r correspond à une sphère. Le système de la vidéo procède-t-il bloc par bloc ?
Ou existe-t-il un tag cubique ?
le tag r correspond au rayon d'un cube on est sur minecraft
eg r=3 donc cube de 3x3
va regarder sur google si ça t'intéresse