Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- You can put this code where ever you want. Most likely you want it in the PlayerInteractEvent
- */
- Location location = player.getEyeLocation();
- BlockIterator blocksToAdd = new BlockIterator(location, 0D, 15);
- Location blockToAdd;
- while(blocksToAdd.hasNext()) {
- if (blockToAdd.getBlock().getType() != Material.AIR ||!shotprojectiledata.containsKey(projectile)) {
- break;
- }
- blockToAdd = blocksToAdd.next().getLocation();
- player.getWorld().playEffect(blockToAdd, Effect.STEP_SOUND, Material.FIRE);
- }
- Snowball projectile = player.launchProjectile(Snowball.class);
- EntityData data = new EntityData(projectile.getLocation(), 15, 5D);
- shotprojectiledata.put(projectile, data);
- for (Player p : Bukkit.getOnlinePlayers()) {
- ((CraftPlayer)p).getHandle().playerConnection.sendPacket(new PacketPlayOutEntityDestroy(((CraftSnowball) projectile).getHandle().getId()));
- }
- //put this in whatever class you want or in it's own class
- public class EntityData {
- private Location firedfrom;
- private Integer range;
- private Double damage;
- public EntityData(Location loc, Integer range, Double damage) {
- this.firedfrom = loc;
- this.range = range;
- this.damage = damage;
- }
- public Location getFiredFrom() {
- return firedfrom;
- }
- public Integer getRange() {
- return range;
- }
- public Double getDamage() {
- return damage;
- }
- }
- //put where ever you want again
- public final static HashMap<Entity, EntityData> shotprojectiledata = new HashMap<Entity, EntityData>();
- @EventHandler
- public void onHit(EntityDamageByEntityEvent event) {
- if (event.getDamager() instanceof Snowball) {
- if (shotprojectiledata.containsKey(event.getDamager())) {
- EntityData eventdata = shotprojectiledata.get(event.getDamager());
- if (event.getEntity().getLocation().distance(eventdata.getFiredFrom())<=eventdata.getRange()) {
- event.setDamage(eventdata.getDamage());
- shotprojectiledata.remove(event.getDamager());
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement