Is there like a command that can strike a mob or player or both with lightning when hit with a sword? If so super cool, if not :( too bad either way thanks! Unfortunately I have no idea what you guys are talking about I'm not able to speak the language you have answered my question in sorry when your able to speak in English please let me know thanks again :)
-
1Have you made any attempt to solve this yourself? Arqade works better when askers show effort to solve their own problems; we see that you have a problem you've worked on, and answerers respond to that. You also get a more specific answer that's tailored exactly to the part you're stuck, and Arqade gets a very specific question. Everybody wins!– FrankOct 29, 2015 at 1:36
-
Unfortunately I'm not even sure of a starting point except I've tried multiple commands but don't know how to do it thus the stated question– cubelordsOct 29, 2015 at 23:32
-
Showing effort is a key component here at Arqade. Even if it doesn't work, showing us what you've tried shows us you're trying to figure it out yourself. That gives us something to build off of.– FrankOct 30, 2015 at 15:31
3 Answers
The "stat.useItem" objective-type can track when a player deals damage with a sword. Unfortunately there are some complications with targeting the struck mob. There isn't really any data to use, apart from guesswork with "HurtTime" tag that will change once the mob is struck, but that doesn't necessarily mean the mob was struck by that player in that instance. The fire damage from lightning itself may cause issues.
As such, the following set of commands (for 1.8.8.) will try to spawn lightning as accurately as possible, but just be aware that it's not possible to be perfectly accurate.
Prerequisites
Objective that automatically increases when a player hits an enemy with a diamond sword.
/scoreboard objectives add UseSword stat.useItem.minecraft.diamond_sword
Objective to track when a mob was struck via "HurtTime".
/scoreboard objectives add MobStruck dummy
Clock Commands
The following must be run in numerical order on a 20-tick-per-second clock.
First, reset the "MobStruck" score for relevant mobs. Using a straight @e will cause the /scoreboard command to be processed equal to the number of all entities, so it's not recommended to do that. This example will affect creepers and zombies only, so you may add more. This sets their score to 0 just before "HurtTime" hits 0, just to reduce command output.
/scoreboard players set @e[type=Creeper] MobStruck 0 {HurtTime:1s} /scoreboard players set @e[type=Zombie] MobStruck 0 {HurtTime:1s}
Label mobs who were recently struck. "HurtTime" will be set to 10 when the mob is struck, and then decrease by 1 per tick until it reaches 0 again. This is why a 20t/s clock is required.
/scoreboard players set @e[type=Creeper] MobStruck 1 {HurtTime:10s} /scoreboard players set @e[type=Zombie] MobStruck 1 {HurtTime:10s}
Cause players who have used their diamond sword to strike the relevant mobs within a 10-block radius (which you may change).
/execute @a[score_UseSword_min=1] ~ ~ ~ execute @e[score_MobStruck_min=1,r=10] ~ ~ ~ summon LightningBolt
And finally, reset the "UseSword" score for players that have used their sword.
/scoreboard players set @a[score_UseSword_min=1] UseSword 0
-
For making it work with only a specific weapon, I suggest adding
/scoreboard players add @a UseSword 1 {SelectedItem:{item tag}}
at the start, and changing the firstexecute
toscore_UseSword_min=2
– MrLemonOct 29, 2015 at 11:20
nah that a more great way to do that first do /scoreboard objectives add hold dummy /scoreboard players set @a hold 1 {SelectedItem:{tag}} /scoreboard players set @a hold 0 /scoreboard objectives add strike stat.damageDealt /scoreboard players set @a strike 0 /execute @a[score_hold_min=1,score_strike_min=1] ~ ~ ~ execute @e[rm=1,r=10] ~ ~ ~ summon LightningBolt use all of this with clock and this is lemon teach me XD
Make a right click detector. There are many different versions, most of them simple. Then have the RClick detector hooked up to a comparator pointing at a second command block with the /summon LightningBolt at ~0 ~10 ~0