From 1114c3750f35ffef6282bd1e598862caed00064d Mon Sep 17 00:00:00 2001 From: walterhiggins Date: Sun, 23 Jun 2013 19:56:18 +0100 Subject: [PATCH] Fireworks ! WOOHOO --- src/main/javascript/arrows/arrows.js | 16 ++++++-- src/main/javascript/fireworks/fireworks.js | 47 ++++++++++++++++++++++ 2 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 src/main/javascript/fireworks/fireworks.js diff --git a/src/main/javascript/arrows/arrows.js b/src/main/javascript/arrows/arrows.js index 71c09e7..b00cdd0 100644 --- a/src/main/javascript/arrows/arrows.js +++ b/src/main/javascript/arrows/arrows.js @@ -10,7 +10,8 @@ /js arrows.teleport() - makes player teleport to where arrow has landed. /js arrows.flourish() - makes a tree grow where the arrow lands. /js arrows.lightning() - lightning strikes where the arrow lands. - + /js arrows.firework() - A firework launches where the the arrow lands. + All of the above functions can take an optional player object or name as a parameter. E.g. @@ -43,7 +44,10 @@ var arrows = arrows || plugin("arrows",{ change player's arrows to strike lightning where they land */ lightning: function(player){}, - + + /* + launch a firework where the arrow lands + */ explosiveYield: 2.5 },true); @@ -59,7 +63,7 @@ arrows.store.players = arrows.store.players || {}; // // setup functions for the arrow types // - var _types = {normal: 0, explosive: 1, teleport: 2, flourish: 3, lightning: 4}; + var _types = {normal: 0, explosive: 1, teleport: 2, flourish: 3, lightning: 4, firework: 5}; for (var type in _types) { arrows[type] = (function(n){ @@ -89,7 +93,7 @@ ready(function() arrows.store.players[event.player.name] = event.number; }; arrows.sign = signs.menu("Arrow", - ["Normal","Explosive","Teleport","Flourish","Lightning"], + ["Normal","Explosive","Teleport","Flourish","Lightning","Firework"], _onMenuChoice ); /* @@ -123,6 +127,10 @@ ready(function() projectile.remove(); world.strikeLightning(projectile.location); break; + case 5: + projectile.remove(); + fireworks.firework(projectile.location); + break; } } }; diff --git a/src/main/javascript/fireworks/fireworks.js b/src/main/javascript/fireworks/fireworks.js new file mode 100644 index 0000000..67e531c --- /dev/null +++ b/src/main/javascript/fireworks/fireworks.js @@ -0,0 +1,47 @@ +plugin("fireworks", { + /* + create a firework at the given location + */ + firework: function(location){ + importPackage(org.bukkit.entity); + importPackage(org.bukkit); + + var randInt = function(n){ + return Math.floor(Math.random() * n); + }; + var getColor = function(i){ + var colors = [ + Color.AQUA, Color.BLACK, Color.BLUE, Color.FUCHSIA, Color.GRAY, + Color.GREEN, Color.LIME, Color.MAROON, Color.NAVY, Color.OLIVE, + Color.ORANGE, Color.PURPLE, Color.RED, Color.SILVER, Color.TEAL, + Color.WHITE, Color.YELLOW]; + return colors[i]; + }; + var fw = location.world.spawnEntity(location, EntityType.FIREWORK); + var fwm = fw.getFireworkMeta(); + var fwTypes = [FireworkEffect.Type.BALL, + FireworkEffect.Type.BALL_LARGE, + FireworkEffect.Type.BURST, + FireworkEffect.Type.CREEPER, + FireworkEffect.Type.STAR]; + var type = fwTypes[randInt(5)]; + + var r1i = randInt(17); + var r2i = randInt(17); + var c1 = getColor(r1i); + var c2 = getColor(r2i); + var effectBuilder = FireworkEffect.builder() + .flicker(true) + .withColor(c1) + .withFade(c2).trail(true); + effectBuilder['with'](type); + var effect = effectBuilder.build(); + fwm.addEffect(effect); + fwm.setPower(randInt(2)+1); + fw.setFireworkMeta(fwm); + } +}); +Drone.extend('firework',function() +{ + fireworks.firework(this.getLocation()); +});