CommandBlock [command_blocks]Créez vos épées personnalisées très simplement !

The_MurmeX

In the beginning was a cookie...
4 Juin 2014
174
16
75
Bonjour à tous !
Aujourd'hui je vous présente un système de command_blocks permet de sélectionner précisément la cible frappée par une épée afin de lui mettre divers effets de potion où de le martyriser avec des événements :mad: foudre,téléportation,lave...). Suite à des demandes (et d'ailleurs je comptais le faire de toute façon), je vais non seulement vous montrer comment ça fonctionne, mais aussi vous décrire précisément (si,si...) comment le reproduire. Le tuto se divise en trois parties :
1-Le principe
2-le tuto "précis et clair" ^^
a)Le système simple
b)Le système double, triple...
3-l'adaptation au multijoueur (en pvp)
Bonne lecture ! (et vous en aurez besoin :D)
Si vous avez la flemme d'apprendre comment faire, voici une commande qui, si tapée (enfin copiée/collée) dans un command_block placé dans un endroit plat et découvert, construira le système à votre place dans une version plus compacte que dans le tuto. Ce système fait fonctionner une épée "de gel", je vous laisse découvrir ses effets:
summon FallingSand ~ ~1 ~ {Time:1,Block:redstone_block,Riding:
{id:FallingSand,Time:1,Block:command_block,TileEntityData:{Command:"/fill ~ ~ ~2 ~ ~-17 ~ air 0"},Riding:{
id:FallingSand,Time:1,Riding:{
id:FallingSand,Block:redstone_block,Time:1,Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"fill ~ ~3 ~1 ~ ~-13 ~1 redstone_block 0"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"scoreboard objectives add Effect dummy"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"fill ~2 ~-11 ~ ~3 ~-11 ~ redstone_block 0"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"gamerule commandBlockOutput false"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~6 ~-10 ~ command_block 0 replace {Command:\"give @p minecraft:diamond_sword 1 0 {ench:[{id:20,lvl:11520}],HideFlags:1}\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~3 ~-8 ~-1 command_block 0 replace {Command:\"execute @e[score_Effect_min=1,score_Effect=1] ~ ~ ~ particle snowshovel ~ ~1 ~ 0 0 0 0.5 10\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~3 ~-6 ~ command_block 0 replace {Command:\"effect @e[score_Effect_min=1,score_Effect=1] 2 5 100\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~3 ~-6 ~1 command_block 0 replace {Command:\"scoreboard players set @e[score_Effect_min=1,score_Effect=1] Effect 0\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~3 ~-6 ~ command_block 0 replace {Command:\"effect @e[score_Effect_min=1,score_Effect=1] 8 5 200 true\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~2 ~-4 ~-1 command_block 0 replace {Command:\"execute @a[score_Effect_min=1,score_Effect=1] ~ ~ ~ setblock ~ ~ ~ water 5\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~2 ~-3 ~1 command_block 0 replace {Command:\"entitydata @e[score_Effect_min=1,score_Effect=1] {Fire:0s}\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~2 ~-3 ~ command_block 0 replace {Command:\"fill ~ ~1 ~ ~1 ~1 ~ stone 0 replace redstone_block\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~2 ~ ~ command_block 0 replace {Command:\"fill ~ ~-1 ~ ~1 ~-1 ~ redstone_block 0 replace stone\"}"},Riding:{
id:FallingSand,Block:command_block,Time:1,TileEntityData:{Command:"setblock ~1 ~ ~ command_block 0 replace {Command:\"scoreboard players set @e Effect 1 {Fire:4096s}\"}"}}}}}}}}}}}}}}}}}}}


1-Le principe
J'ai d'abord cherché à déterminer la cible par un indicateur de dégâts mais sans succès (de toutes façons le système théorique était beaucoup trop gros). Puis un soir j'ai eu la RÉVÉLATION O:) -oh l'aut' comme y s'la pète !- :
ça existe déjà dans minecraft ! Vous ne voyez pas ? Essayez de devinez...C'est l'aura de feu voyons !
Ainsi l'épée est enchantée avec aura de feu et le système détecte qui est enflammé (et pour combien de temps) pour lui assigner les effets.
Le principe est le suivant :
-une clock ultra rapide donne aux entités enflammées pour une durée particulière une certaine scoreboard
-elle éteint ensuite ces pauvres entités
-elle leur fait avoir des tas de crasses ensuite
-elle enlève la scoreboard
Voilà c'est tout pour le principe, la suite comprend un tuto pour ceux qui veulent faire leur propre système


2-Le tuto

a)le système "simple"
Avant toute chose, il vous faut réalisez une clock très rapide, celle que je vous propose est composée de deux blocs de commandes :
le 1er :
Code:
fill ~ ~-1 ~ ~8 ~-1 ~ redstone_block 0 replace stone
Le 2ème:
Code:
fill ~ ~1 ~ ~8 ~1 ~ stone 0 replace redstone_block
Vous n'avez plus qu'à poser un block de redstone entre les deux blocs de commandes (Voir la sreen ci-dessous pour la position). La clock va alterner très vite les blocs de redstone et de stone pour faire une chaine très rapide (de l'ordre d'1/20 de seconde).

Image explicative ici

Il faut ensuite placer des blocs de redstone et de commande comme sur l'image l'orientation est importante.
Ce système est simplifié afin de bien montrer l'ordre d'activation des blocs de commandes ; libre à vous d'en changer tant que vous respectez cet ordre.
Je présenterais ensuite chaque command_block dans leur ordre d'activation.
Testez le joueur enflammé :
Code:
scoreboard players set @e Effect 1 {Fire:4096s}
Cette commande donne un score Effect de 1 à l'entité enflammée que nous appellerons M.Dupont pour plus de praticité ^^. Le nombre 4096 correspond à une durée ; nous verront ça dans la 2ème sous-partie. Bien sûr il est nécessaire de "déclarer" l'objectif Effect :
Code:
/scoreboard objectives add Effect dummy
Voilà qui est fait ! Maintenant ont connais notre victime (Mr.Dupont)

Éteindre le feu :
Pour ne pas que M.Dupont meure trop rapidement :yeeaaahh:(ce serait pas drôle sinon :diable:)Il faut le débarrasser de ses flammes :
Code:
entitydata @e[score_Effect_min=1,score_Effect=1] {Fire:0s}
Voilà, mais çà ne fonctionne que pour les entités. Et si Mr.Dupont est un joueur? Nous traiterons cette question dans la 3ème partie ;) (en attendant, je vous conseil de laisser de la place pour un second bloc de commande).

Torturer notre victime :
Maintenant, vous pouvez laisser libre cours à votre imagination de sadique et inventer de beaux châtiment pour M.Dupont, voici des exemples :
Effet de potion :
Code:
effect @e[score_Effect_min=1,score_Effect=1] 0 0 0
Particules (pour le style :yeah:):
Code:
execute @e[score_Effect_min=1,score_Effect=1] ~ ~ ~ particle snowshovel ~ ~1 ~ 0 0 0 0.5 10
Éclair (le bourreau devient alors à moitié la victime,vous comprendrez si vous testez):
Code:
execute @e[score_Effect_min=1,score_Effect=1] ~ ~ ~ summon LightningBolt
N'hésitez pas à partager vos créations dans les commentaires ! ;)

La libérer de son calvaire :
Il faut enfin reset le score afin de que M.Dupont ne se voit pas foudroyer en boucle :
Code:
scoreboard players set @e[score_Effect_min=1,score_Effect=1] Effect 0

Le give de l'épée :
Sans ça, le système aurais nettement moins d’intérêt :D :
Code:
give @p minecraft:diamond_sword 1 0 {ench:[{id:20,lvl:11520}],HideFlags:1,display:{Name:"Epee de la mort !!!!"}}
Et voilà ! Vous avez créé votre première épée ! Vous en voulez encore? La seconde sous-partie va vous apprendre à créer plusieurs épées aux pouvoirs différents sans qu'elles interférent entre elles.
b)Le système double, triple quadruple....
Évidement vous ne pouvez pas combiné plusieurs système sans de fâcheuse conséquences ; ici nous allons voir comment adapter le deuxième,appliqués à M.Dupond, pour faire 3 épées voir 4 ou 5, c'est le même principe. Toutes les modifications que je vous conseillerai sont à appliquer seulement au(x) système(s )additionnel(s).

La scoreboard :
Pour que M.Dupond n'ait pas les mêmes effets que Mr.Dupont, il lui faut une valeur de scoreboard différente; ainsi, à la place de :
Code:
scoreboard players set @e Effect 1 [...]
nous mettrons:
Code:
scoreboard players set @e Effect 2
Il en découle que pour toute les autres commandes nous remplacerons :
Code:
[score_Effect_min=1,score_Effect=1]
par :
Code:
[score_Effect_min=2,score_Effect=2]

L'enchantement :
Pour différentier l'épée, la valeur de l'enchantement dois être réduite de 1 niveau, on à donc :
Code:
give @p minecraft:diamond_sword 1 0 {ench:[{id:20,lvl:11520}],HideFlags:1,display:{Name:"Epee de la destruction !!!!"}}

La durée des flammes :
L'enchantement ayant baissé, la durée du feu sur M.Dupond est modifiée. Revenons donc à:
Code:
scoreboard players set @e Effect 1 {Fire:4096s}
Ici le nombre 4096 représente le temps avat que le feu s'éteigne.Ne prêtez pas attention au "s" mais sachez qu'il est important. Pour chaque niveau d'enchantement, cette durée diminue de 80. On a donc :
Code:
scoreboard players set @e Effect 1 {Fire:4016s}
Pour le 3ème système se sera 3936s puis 3856s pour le 4ème ect.
M.Dupond peut maintenant être torturé sans interférer avec M.Dupont !


3-L'adaptation au pvp

Prochainement, il est tard et je ne suis pas encore au top la dessus donc je vous laisse cette partie en suspense.


C'EST FINI! -ouf !- Vous en savez normalement maintenant autant que moi sur mon système (Je ne garantit pas l’exclusivité car Youtube est spammé de vidéos sur des systèmes plus classiques qui cachent peut-être déjà un système comme le mien). Si vous avez malgré tout des problème, je vous invite à me les dire par commentaire ou MP ; je me ferais plaisir en vous aidant ;) .

Sur ce, bonne journée, merci d'avoir lu ce tuto et à bientôt !
 

The_MurmeX

In the beginning was a cookie...
4 Juin 2014
174
16
75
De mn coté j'ai testé sur serveur et sur plusieurs map : ca fonctionne. L'effect est difficile à voir ya que quelques particules. Essaie en Survie pour que le mob bouge sinon c'est difficile de constater qu'il est immobile
 

The_MurmeX

In the beginning was a cookie...
4 Juin 2014
174
16
75
J'ai retesté : ca marche. Tu a bien copiée a commande? Je vois vraiment pas.
Je ne pense pas que ca vienne de ca mais je précise pour les suivant que le bloc de depart dois etre dans un endroit plat.
Quelqu'un d'autre a testé?