Skip to content

Instantly share code, notes, and snippets.

@NeatMonster
Created August 30, 2013 17:48
Show Gist options
  • Save NeatMonster/5279553e6f52b2273e7f to your computer and use it in GitHub Desktop.
Save NeatMonster/5279553e6f52b2273e7f to your computer and use it in GitHub Desktop.
package fr.neatmonster.beams;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
public class Beams extends JavaPlugin implements Listener {
public class Beam implements Runnable {
private final Creeper base;
public Beam(final Location location) {
base = (Creeper) location.getWorld().spawnEntity(location, EntityType.CREEPER);
base.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 15));
base.setPowered(true);
Creeper vehicle = base;
for (int i = 0; i < 10; i++) {
final Creeper passenger = (Creeper) location.getWorld().spawnEntity(location, EntityType.CREEPER);
passenger.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 15));
vehicle.setPassenger(passenger);
passenger.setPowered(true);
vehicle = passenger;
}
}
@Override
public void run() {
Creeper vehicle = base;
vehicle.remove();
while (vehicle.getPassenger() != null) {
vehicle = (Creeper) vehicle.getPassenger();
vehicle.remove();
}
}
}
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerInteract(final PlayerInteractEvent event) {
final Player player = event.getPlayer();
if (player.getItemInHand().getType() == Material.STICK) {
Block target = null;
if (event.getAction() == Action.RIGHT_CLICK_AIR)
target = player.getTargetBlock(null, 200);
else if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
target = event.getClickedBlock();
if (target != null)
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Beam(target.getLocation()), 20L);
}
}
}
name: Beams
version: 1.0
author: NeatMonster
main: fr.neatmonster.beams.Beams
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment