Skip to content

Commit

Permalink
playeffect vibration
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jun 17, 2022
1 parent 0df9dba commit e27208b
Showing 1 changed file with 25 additions and 1 deletion.
Expand Up @@ -7,13 +7,16 @@
import com.denizenscript.denizen.nms.interfaces.Particle;
import com.denizenscript.denizencore.exceptions.InvalidArgumentsException;
import com.denizenscript.denizencore.objects.Argument;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.objects.core.DurationTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.scripts.ScriptEntry;
import com.denizenscript.denizencore.scripts.commands.AbstractCommand;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import com.denizenscript.denizen.utilities.BukkitImplDeprecations;
import org.bukkit.Effect;
import org.bukkit.Vibration;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
Expand Down Expand Up @@ -68,7 +71,8 @@ public PlayEffectCommand() {
// Some particles will require input to the "special_data" argument. The data input is unique per particle.
// - For REDSTONE particles, the input is of format: <size>|<color>, for example: "1.2|red". Color input is any valid ColorTag object.
// - For DUST_COLOR_TRANSITION particles, the input is of format <size>|<from_color>|<to_color>, for example "1.2|red|blue". Color input is any valid ColorTag object.
// - For FALLING_DUST, BLOCK_CRACK, or BLOCK_DUST particles, the input is any valid MaterialTag, eg "stone".
// - For BLOCK_MARKER, FALLING_DUST, BLOCK_CRACK, or BLOCK_DUST particles, the input is any valid MaterialTag, eg "stone".
// - For VIBRATION, the input is <duration>|<origin>|<destination> where origin is a LocationTag and destination is either LocationTag or EntityTag, for example "5s|<context.location>|<player>"
// - For ITEM_CRACK particles, the input is any valid ItemTag, eg "stick".
//
// Optionally specify a velocity vector for standard particles to move. Note that this ignores the 'data' input if used.
Expand Down Expand Up @@ -303,6 +307,26 @@ else if (clazz == org.bukkit.Particle.DustTransition.class) {
dataObject = new org.bukkit.Particle.DustTransition(fromColor.getColor(), toColor.getColor(), size);
}
}
else if (clazz == Vibration.class) {
ListTag dataList = ListTag.valueOf(special_data.asString(), scriptEntry.getContext());
if (dataList.size() != 3) {
Debug.echoError("Vibration special_data must have 3 list entries for particle: " + particleEffect.getName());
return;
}
else {
DurationTag duration = dataList.getObject(0).asType(DurationTag.class, scriptEntry.context);
LocationTag origin = dataList.getObject(1).asType(LocationTag.class, scriptEntry.context);
ObjectTag destination = dataList.getObject(2);
Vibration.Destination destObj;
if (destination.shouldBeType(EntityTag.class)) {
destObj = new Vibration.Destination.EntityDestination(destination.asType(EntityTag.class, scriptEntry.context).getBukkitEntity());
}
else {
destObj = new Vibration.Destination.BlockDestination(destination.asType(LocationTag.class, scriptEntry.context));
}
dataObject = new Vibration(origin, destObj, duration.getTicksAsInt());
}
}
else {
Debug.echoError("Unknown particle data type: " + clazz.getCanonicalName() + " for particle: " + particleEffect.getName());
return;
Expand Down

0 comments on commit e27208b

Please sign in to comment.