My thought is to use a structure block, to clone the entity.
So this is what I'd do it:
- First, spawn an armor stand (as a marker) in the location of the entity to be cloned.
- Move the entity to a predefined location.
- Clone it with the structure blocks.
- Then move the entity back to the marker, and the new one where you want it.
- Finally remove the marker.
I'll just show how to set up the structure blocks. I'll assume you know what your doing with the teleportation of the entities.
So the cloning device should look like this:
(The command block in the second picture removes the stone block when a red stone block is placed there.)
So the structure block on the left is the saving block, you place the entities to be cloned on top of it.
You must have "Include Entities" set to on, or it won't clone entities.
The block on the right loads the entities. (If you use red stone to save, it will only save to RAM, not your disk, which is good.)
(The structure name doesn't have to be "cloner", but it just has to be the same in both blocks.)
When you have the cloning device set up, you just have to teleport an entity on top of the structure block on the left, place a red stone block in place of the stone one, then one red stone tick later, you'll have two identical entities.
Necro edit: I though I'd clarify why there has to be a red stone tick between them, its because structure blocks are "slow" (compared to command blocks) and require time to save the structure data. A single red stone tick is simply easy to do, but it can be any amount of time, as long as it gives the structure blocks time to do their thing.
You cannot use the "~" character in selectors, meaning you'd need to rely on command syntax and not selector syntax. You cannot use relative coordinates with /testfor
as its command syntax does not support it.
You would instead need to place an entity at the desired position and execute from it relatively using /execute
:
/execute <target> X Y Z <command>
"target" is the target entity to change the coordinate origin to, while XYZ is going to further modify the origin. Using relative coordinates would cause "command" to be executed relative from the target's position.
Sample armor stand to create:
/summon ArmorStand X Y Z {Tags:["anchor"]}
For example, assuming there is an armor stand tagged with "anchor" at the intended location, the following tests for players relative to the armor stand:
/execute @e[type=ArmorStand,tag=anchor] ~1 ~4 ~-3 /testfor @a[dx=0,dz=0,dy=102]
/execute @e[type=ArmorStand,tag=anchor] ~1 ~4 ~3 /testfor @a[dx=0,dz=0,dy=102]
Best Answer
type=sheep
- Look for a sheep.x=-155
..y=
..z=
... - Start search at these coordinatesr=1
- Look in a radius of 1 block