From 2b96c012f9f0f18889718e304e157c15ab3dadda Mon Sep 17 00:00:00 2001 From: mooseontehloose Date: Thu, 25 Jan 2024 17:52:02 -0800 Subject: [PATCH] Reconfigure for 1.20.4 --- .vscode/settings.json | 6 + README.md | 61 +++ src/config.yml | 23 + .../moosecraft/Barrage/APmaxArrowEffect.java | 24 + src/net/moosecraft/Barrage/ArrowEffect.java | 12 + src/net/moosecraft/Barrage/Barrage.java | 467 ++++++++++++++++++ .../Barrage/BugbombArrowEffect.java | 40 ++ .../moosecraft/Barrage/FireArrowEffect.java | 65 +++ .../moosecraft/Barrage/FragArrowEffect.java | 30 ++ .../Barrage/GlassHeadArrowEffect.java | 35 ++ .../moosecraft/Barrage/ImpactArrowEffect.java | 37 ++ .../Barrage/LightningArrowEffect.java | 28 ++ .../Barrage/MudslingerArrowEffect.java | 36 ++ .../moosecraft/Barrage/NetArrowEffect.java | 322 ++++++++++++ .../Barrage/PlanetCrackerArrowEffect.java | 68 +++ .../moosecraft/Barrage/PoisonArrowEffect.java | 29 ++ .../moosecraft/Barrage/TorchArrowEffect.java | 40 ++ .../moosecraft/Barrage/WarpArrowEffect.java | 40 ++ .../moosecraft/Barrage/WaterArrowEffect.java | 36 ++ src/plugin.yml | 9 + 20 files changed, 1408 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 src/config.yml create mode 100644 src/net/moosecraft/Barrage/APmaxArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/ArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/Barrage.java create mode 100644 src/net/moosecraft/Barrage/BugbombArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/FireArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/FragArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/GlassHeadArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/ImpactArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/LightningArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/MudslingerArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/NetArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/PlanetCrackerArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/PoisonArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/TorchArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/WarpArrowEffect.java create mode 100644 src/net/moosecraft/Barrage/WaterArrowEffect.java create mode 100644 src/plugin.yml diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..833c1c2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "java.project.referencedLibraries": [ + "lib/**/*.jar", + "x:\\Code\\Minecraft\\Spigot\\spigot-api-1.20.4-R0.1-SNAPSHOT-shaded.jar" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ba6a22 --- /dev/null +++ b/README.md @@ -0,0 +1,61 @@ +# Features: +[![Watch the video](https://img.youtube.com/vi/JHRbZa4WLmc/default.jpg)](https://youtu.be/JHRbZa4WLmc) + +# Usage: +## Arrow Types +* GlassHead - Higher critical chance rate +* APmax - Always hits for 3 damage +* Torch - Places a torch where the arrow lands +* Net - Create a slowing net trap on impact +* Water - Create a water spout, from a distance +* Fire - Not just for entities anymore, these fire arrows pack a bit more punch +* Lightning - Pretty self explanatory +* Mudslinger - Throw sand blocks as far as you can shoot +* Warp - Teleports you as soon as the arrow lands, wherever it lands +* Poison - Gives anybody it hits a healthy dose +* Frag - The classic +* Impact - Reach out and touch someone +* BugBomb - Hug people with spiders +* PlanetCracker - You don't want to be anywhere near these when they go off + +## To Fire off a Salvo: + 1. Place a bow in your hotbar + 2. Place the materials required for the desired type in your hotbar + 3. Left click your bow to cycle through the available arrow types + 4. Right click to fire + +You may only cycle through arrow types that have sufficient ingredients in your hotbar\ +You may have multiple arrow type ingredients in your hotbar at the same time + +## Commands: +None at this time + +## Permissions +No permissions support at this time. + +## Configuration +To enable an arrow type, uncomment the line by removing the # + +Costs are given in the format ITEM_NAME:AMOUNT + +For arrows that have multiple requirements, separate them with a comma + +EX: Frag: TNT:1,Dirt:1,water_bucket:1 + +* GlassHead: glass:1 +* APmax: iron_ingot:3,obsidian:1 +* Torch: torch:1 +* Net: string:9 +* Water: water_bucket:1 +* Fire: torch:1,coal:1 +* Lightning: emerald:1,iron_ingot:1,magma_cream:1 +* Mudslinger: sand:1 +* Warp: ender_pearl:1 +* Poison: spider_eye:3,red_mushroom:3,brown_mushroom:3 +* Frag: TNT:1 +* Impact: TNT:1 +* Bugbomb: spider_eye:1,sugar:10 +* PlanetCracker: ghast_tear:1,ender_eye:1,TNT:5,redstone:5 + +## Installation: +Place Barrage.jar in your plugins folder and reload the server. diff --git a/src/config.yml b/src/config.yml new file mode 100644 index 0000000..dc576d2 --- /dev/null +++ b/src/config.yml @@ -0,0 +1,23 @@ +#To enable an arrow type, uncomment the line by removing +# the #. +# +#Costs are given in the format ITEM_NAME:AMOUNT +#For arrows that have multiple requirements, separate them +#with a comma. +# +#EX: Frag: TNT:1,Dirt:1,Water Bucket:64 + +#GlassHead: glass:1 +#APmax: iron_ingot:3,obsidian:1 +#Torch: torch:1 +#Net: string:9 +#Water: water_bucket:1 +#Fire: torch:1,coal:1 +#Lightning: emerald:1,iron_ingot:1,magma_cream:1 +#Mudslinger: sand:1 +#Warp: ender_pearl:1 +#Poison: spider_eye:3,red_mushroom:3,brown_mushroom:3 +#Frag: TNT:1 +#Impact: TNT:1 +#Bugbomb: spider_eye:1,sugar:10 +#PlanetCracker: ghast_tear:1,ender_eye:1,TNT:5,redstone:5 \ No newline at end of file diff --git a/src/net/moosecraft/Barrage/APmaxArrowEffect.java b/src/net/moosecraft/Barrage/APmaxArrowEffect.java new file mode 100644 index 0000000..5a07aea --- /dev/null +++ b/src/net/moosecraft/Barrage/APmaxArrowEffect.java @@ -0,0 +1,24 @@ +package net.moosecraft.Barrage; + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class APmaxArrowEffect + implements ArrowEffect +{ + + public APmaxArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow1, Entity entity) + { + } + + public void onGroundHitEvent(Arrow arrow1) + { + } +} diff --git a/src/net/moosecraft/Barrage/ArrowEffect.java b/src/net/moosecraft/Barrage/ArrowEffect.java new file mode 100644 index 0000000..dd3f755 --- /dev/null +++ b/src/net/moosecraft/Barrage/ArrowEffect.java @@ -0,0 +1,12 @@ +package net.moosecraft.Barrage; + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +public interface ArrowEffect +{ + + public abstract void onEntityHitEvent(Arrow arrow, Entity entity); + + public abstract void onGroundHitEvent(Arrow arrow); +} diff --git a/src/net/moosecraft/Barrage/Barrage.java b/src/net/moosecraft/Barrage/Barrage.java new file mode 100644 index 0000000..19ce1b8 --- /dev/null +++ b/src/net/moosecraft/Barrage/Barrage.java @@ -0,0 +1,467 @@ +package net.moosecraft.Barrage; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Item; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class Barrage extends JavaPlugin implements Listener { + public class ArrowID { + int id; + ArrowType type; + Player shooter; + + public ArrowID(int id, ArrowType type, Player shooter){ + this.id = 0; + this.type = ArrowType.Arrow; + this.shooter = null; + this.id = id; + this.type = type; + this.shooter = shooter; + } + } + + public enum ArrowType{ + Arrow, GlassHead, APmax, Torch, Net, Water, Fire, Lightning, Mudslinger, Warp, Poison, Frag, Impact, Bugbomb, PlanetCracker; + } + + + private HashMap activeArrowType; + private HashMap enabledArrowList; + private List arrowList; + static int poisonSec = 240; + static int fireSec = 120; + static int explosiveRadius = 2; + static int force = 4; + static int bypass = 3; + static Double maxcrit = Double.valueOf(2D); + static int crackradius = 15; + static int crackpoison = 45; + String nocost; + + public Barrage(){ + activeArrowType = new HashMap(14); + enabledArrowList = new HashMap(14); + arrowList = new ArrayList(); + nocost = "FREE"; + } + + @Override + public void onEnable(){ + getLogger().info("Barrage has been enabled"); + getServer().getPluginManager().registerEvents(this, this); + saveDefaultConfig(); + ArrowType aarrowtype[]; + int j = (aarrowtype = ArrowType.values()).length; + for(int i = 0; i < j; i++){ + ArrowType type = aarrowtype[i]; + String cost = String.valueOf(getConfig().getString(type.name())).replaceAll(" ", "_").toUpperCase(); + if(cost != null && !cost.equals("NULL")){ + getLogger().info((new StringBuilder()).append(type).append(" : ").append(cost).toString()); + enabledArrowList.put(type, cost); + } else if(cost != null && cost.equals(nocost)){ + getLogger().info((new StringBuilder()).append(type).append(" : ").append(nocost).toString()); + enabledArrowList.put(type, nocost); + } else if(cost != null && cost.equals("NULL") && type == ArrowType.Arrow){ + getLogger().info((new StringBuilder()).append(type).append(" : ").append(nocost).toString()); + enabledArrowList.put(type, nocost); + } + } + + } + + @Override + public void onDisable(){ + getLogger().info("Barrage has been disabled"); + } + + public static void msgPlayer(Player player, String msg){ + player.sendMessage((new StringBuilder()).append(ChatColor.AQUA).append(msg).toString()); + } + + //this method checks if a player has enough materials to fire an arrow + public Boolean invCheck(Player player, String cost, Boolean remove){ + + + if(cost.equals(nocost)){ + return Boolean.valueOf(true); + } + + HashMap matRequirements = new HashMap<>(); + HashMap matInventory = new HashMap<>(); + String items[] = cost.split(","); + int k = items.length; + for(int j = 0; j < k; j++){ + String item = items[j]; + String nameAndCost[] = item.split(":"); + String mat = nameAndCost[0].toUpperCase(); + Integer num; + try{ + num = Integer.valueOf(Integer.parseInt(nameAndCost[1])); + } + catch(NumberFormatException e){ + num = Integer.valueOf(0); + } + if(num.intValue() > 64){ + num = Integer.valueOf(64); + } + if(!mat.equals(nocost)){ + matRequirements.put(Material.valueOf(mat), num); + } + } + + //find out whats in the hotbar + for(int i = 0; i < 9; i++){ + ItemStack item = player.getInventory().getItem(i); + if(item != null){ + Integer inInv = Integer.valueOf(item.getAmount()); + if(inInv == null){ + inInv = Integer.valueOf(0); + } + Material name = item.getType(); + if(matInventory.containsKey(name)){ + Integer previousAmt = (Integer)matInventory.get(name); + inInv = Integer.valueOf(previousAmt.intValue() + inInv.intValue()); + } + matInventory.put(name, inInv); + } + } + + //find out if theres at least as much items in inventory as cost requires + int reqcounter = 0; + + for(Iterator> iterator = matRequirements.entrySet().iterator(); iterator.hasNext();) + { + Entry entry = (Entry)iterator.next(); + Material key = (Material)entry.getKey(); + Integer matAmt = (Integer)entry.getValue(); + Integer invAmt = (Integer)matInventory.get(key); + if(invAmt == null) + { + invAmt = Integer.valueOf(0); + } + int valueReq = matAmt.intValue(); + int valueMat = invAmt.intValue(); + if(valueReq <= valueMat) + { + reqcounter++; + } + } + + if(reqcounter == matRequirements.size()) + { + if(remove.booleanValue()) + { + Entry entry; + for(Iterator> iterator1 = matRequirements.entrySet().iterator(); iterator1.hasNext(); player.getInventory().removeItem(new ItemStack[] { + new ItemStack((Material)entry.getKey(), ((Integer)entry.getValue()).intValue()) +})) + { + entry = (Entry)iterator1.next(); + } + + player.updateInventory(); + } + return Boolean.valueOf(true); + } else + { + return Boolean.valueOf(false); + } + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onPlayerInteract(PlayerInteractEvent event) + { + + Player player = event.getPlayer(); + if(event.getItem() != null && event.getItem().getType() == Material.BOW && (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_AIR)) + { + if(!activeArrowType.containsKey(player)) + { + activeArrowType.put(player, ArrowType.Arrow); + } + + ArrowType active = (ArrowType)activeArrowType.get(player); + + ArrayList invContains = new ArrayList(); + + for(Iterator> iterator = enabledArrowList.entrySet().iterator(); iterator.hasNext();) + { + Entry entry = (Entry)iterator.next(); + ArrowType key = (ArrowType)entry.getKey(); + String value = (String)entry.getValue(); + if(value.equals(nocost)) + { + invContains.add(key); + } else + if(invCheck(player, value, Boolean.valueOf(false)).booleanValue()) + { + invContains.add(key); + } + } + + int invSize = invContains.size() - 1; + int newPos = 0; + for(Iterator iterator1 = invContains.iterator(); iterator1.hasNext();) + { + ArrowType arrow = (ArrowType)iterator1.next(); + if(active.name().equals(arrow.name())) + { + newPos = invContains.indexOf(arrow); + } + } + + if(newPos == invSize) + { + active = (ArrowType)invContains.get(0); + } else + { + active = (ArrowType)invContains.get(newPos + 1); + } + activeArrowType.put(player, active); + if(active.name().equals("Arrow")) + { + msgPlayer(event.getPlayer(), "Equipping Arrows"); + } else + { + msgPlayer(event.getPlayer(), (new StringBuilder("Equipping ")).append(active.name()).append(" Arrows").toString()); + } + } + } + + @EventHandler(priority = EventPriority.LOWEST) + public void playerBowShoot(EntityShootBowEvent e) + { + + if(e.getEntity() instanceof Player) + { + Entity entity = e.getEntity(); + Entity arrow = e.getProjectile(); + Player player = (Player)entity; + + + ArrowType arrowType = (ArrowType)activeArrowType.get(player); + ArrowID newArrow = new ArrowID(arrow.getEntityId(), ArrowType.Arrow, player); + String cost = (String)enabledArrowList.get(arrowType); + + if (cost != null ) { + + if(invCheck(player, cost, Boolean.valueOf(true)).booleanValue()) + { + newArrow = new ArrowID(arrow.getEntityId(), arrowType, player); + } + arrowList.add(newArrow); + } + } + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onProjectileHit(ProjectileHitEvent event) + { + ArrowType arrowType = ArrowType.Arrow; + if(!(event.getEntity() instanceof Arrow)) + { + return; + } + Arrow arrow = (Arrow)event.getEntity(); + if(!(arrow.getShooter() instanceof Player)) + { + return; + } + for(Iterator iterator = arrowList.iterator(); iterator.hasNext();) + { + ArrowID aid = (ArrowID)iterator.next(); + if(aid.id == event.getEntity().getEntityId()) + { + arrowType = aid.type; + } + } + + List entities = arrow.getNearbyEntities(1.0D, 1.0D, 1.0D); + int entCount = entities.size(); + for(Iterator iterator1 = entities.iterator(); iterator1.hasNext();) + { + Entity ent = (Entity)iterator1.next(); + if((ent instanceof Arrow) || (ent instanceof Item) || ent == arrow.getShooter()) + { + entCount--; + } + } + + try + { + if(entCount == 0 && arrowType != ArrowType.Arrow) + { + ArrowEffect arrowEffect = null; + String className = (new StringBuilder("net.moosecraft.Barrage.")).append(arrowType.toString()).append("ArrowEffect").toString(); + try + { + arrowEffect = (ArrowEffect)Class.forName(className).getDeclaredConstructor().newInstance(); + } + catch(ClassNotFoundException e) + { + getLogger().warning((new StringBuilder("Failed to find class ")).append(className).toString()); + } + catch(InstantiationException e) + { + getLogger().warning((new StringBuilder("Could not instantiate class ")).append(className).toString()); + } + catch(IllegalAccessException e) + { + getLogger().warning((new StringBuilder("Could not access class ")).append(className).toString()); + } + arrowEffect.onGroundHitEvent(arrow); + if(arrowList.size() > 50) + { + for(; arrowList.size() > 50; arrowList.remove(0)) { } + } + } + } + catch(Exception ex) + { + return; + } + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onEntityDamage(EntityDamageEvent event) + { + ArrowType arrowType = ArrowType.Arrow; + + if(event.getCause() != org.bukkit.event.entity.EntityDamageEvent.DamageCause.PROJECTILE) + { + return; + } + + if(!(event instanceof EntityDamageByEntityEvent)) + { + return; + } + + EntityDamageByEntityEvent ebe; + + Arrow arrow; + + try + { + ebe = (EntityDamageByEntityEvent)event; + + if(!(ebe.getDamager() instanceof Arrow)) + { + return; + } + } + catch(Exception ex) + { + return; + } + + arrow = (Arrow)ebe.getDamager(); + + if(!(arrow.getShooter() instanceof Player)) + { + return; + } + + ebe = (EntityDamageByEntityEvent)event; + if(!(ebe.getDamager() instanceof Arrow)) + { + return; + } + arrow = (Arrow)ebe.getDamager(); + if(!(arrow.getShooter() instanceof Player)) + { + return; + } + for(Iterator iterator = arrowList.iterator(); iterator.hasNext();) + { + ArrowID aid = (ArrowID)iterator.next(); + if(aid.id == arrow.getEntityId()) + { + arrowType = aid.type; + } + } + + try + { + if(arrowType != ArrowType.Arrow) + { + ArrowEffect arrowEffect = null; + if(arrowType == ArrowType.Impact) + { + event.setDamage(0); + } + if(arrowType == ArrowType.APmax) + { + event.setDamage(3); + } + if(arrowType == ArrowType.Poison) + { + event.setDamage(0); + } + if(arrowType == ArrowType.Torch) + { + event.setDamage(0); + } + if(arrowType == ArrowType.Bugbomb) + { + event.setDamage(0); + } + if(arrowType == ArrowType.Net) + { + event.setDamage(0); + } + String className = (new StringBuilder("net.moosecraft.Barrage.")).append(arrowType.toString()).append("ArrowEffect").toString(); + try + { + arrowEffect = (ArrowEffect)Class.forName(className).getDeclaredConstructor().newInstance(); + } + catch(ClassNotFoundException e) + { + getLogger().warning((new StringBuilder("Failed to find class ")).append(className).toString()); + } + catch(InstantiationException e) + { + getLogger().warning((new StringBuilder("Could not instantiate class ")).append(className).toString()); + } + catch(IllegalAccessException e) + { + getLogger().warning((new StringBuilder("Could not access class ")).append(className).toString()); + } + arrowEffect.onEntityHitEvent(arrow, event.getEntity()); + } + if(arrowList.size() > 50) + { + for(; arrowList.size() > 50; arrowList.remove(0)) { } + } + } + catch(Exception ex) + { + return; + } + return; + } + +} diff --git a/src/net/moosecraft/Barrage/BugbombArrowEffect.java b/src/net/moosecraft/Barrage/BugbombArrowEffect.java new file mode 100644 index 0000000..658fef3 --- /dev/null +++ b/src/net/moosecraft/Barrage/BugbombArrowEffect.java @@ -0,0 +1,40 @@ +package net.moosecraft.Barrage; + + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class BugbombArrowEffect + implements ArrowEffect +{ + + public BugbombArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + target.getWorld().spawnEntity(target.getLocation(), EntityType.CAVE_SPIDER); + target.getWorld().spawnEntity(target.getLocation(), EntityType.SILVERFISH); + target.getWorld().spawnEntity(target.getLocation(), EntityType.SILVERFISH); + target.getWorld().spawnEntity(target.getLocation(), EntityType.SILVERFISH); + target.getWorld().spawnEntity(target.getLocation(), EntityType.SILVERFISH); + target.getWorld().spawnEntity(target.getLocation(), EntityType.SILVERFISH); + arrow.remove(); + } + + public void onGroundHitEvent(Arrow arrow) + { + arrow.getWorld().spawnEntity(arrow.getLocation(), EntityType.CAVE_SPIDER); + arrow.getWorld().spawnEntity(arrow.getLocation(), EntityType.SILVERFISH); + arrow.getWorld().spawnEntity(arrow.getLocation(), EntityType.SILVERFISH); + arrow.getWorld().spawnEntity(arrow.getLocation(), EntityType.SILVERFISH); + arrow.getWorld().spawnEntity(arrow.getLocation(), EntityType.SILVERFISH); + arrow.getWorld().spawnEntity(arrow.getLocation(), EntityType.SILVERFISH); + arrow.remove(); + } +} diff --git a/src/net/moosecraft/Barrage/FireArrowEffect.java b/src/net/moosecraft/Barrage/FireArrowEffect.java new file mode 100644 index 0000000..f3b9828 --- /dev/null +++ b/src/net/moosecraft/Barrage/FireArrowEffect.java @@ -0,0 +1,65 @@ +package net.moosecraft.Barrage; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; + +// Referenced classes of package moosecraft: +// ArrowEffect, Barrage + +public class FireArrowEffect + implements ArrowEffect +{ + + public FireArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + Entity e = (LivingEntity)target; + e.setFireTicks(Barrage.fireSec); + } + + public void onGroundHitEvent(Arrow arrow) + { + Location blockLoc = arrow.getLocation(); + arrow.remove(); + Block start = blockLoc.getBlock(); + Material a = Material.AIR; + Material u = start.getRelative(BlockFace.UP).getType(); + Material d = start.getRelative(BlockFace.DOWN).getType(); + Material n = start.getRelative(BlockFace.NORTH).getType(); + Material s = start.getRelative(BlockFace.SOUTH).getType(); + Material e = start.getRelative(BlockFace.EAST).getType(); + Material w = start.getRelative(BlockFace.WEST).getType(); + if(a.equals(u)) + { + blockLoc.getBlock().getRelative(BlockFace.UP).setType(Material.FIRE); + } + if(a.equals(n)) + { + blockLoc.getBlock().getRelative(BlockFace.NORTH).setType(Material.FIRE); + } + if(a.equals(s)) + { + blockLoc.getBlock().getRelative(BlockFace.SOUTH).setType(Material.FIRE); + } + if(a.equals(e)) + { + blockLoc.getBlock().getRelative(BlockFace.EAST).setType(Material.FIRE); + } + if(a.equals(w)) + { + blockLoc.getBlock().getRelative(BlockFace.WEST).setType(Material.FIRE); + } + if(a.equals(d)) + { + blockLoc.getBlock().getRelative(BlockFace.DOWN).setType(Material.FIRE); + } + } +} diff --git a/src/net/moosecraft/Barrage/FragArrowEffect.java b/src/net/moosecraft/Barrage/FragArrowEffect.java new file mode 100644 index 0000000..edb0819 --- /dev/null +++ b/src/net/moosecraft/Barrage/FragArrowEffect.java @@ -0,0 +1,30 @@ +package net.moosecraft.Barrage; + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +// Referenced classes of package moosecraft: +// ArrowEffect, Barrage + +public class FragArrowEffect + implements ArrowEffect +{ + + public FragArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + org.bukkit.Location location = arrow.getLocation(); + arrow.getWorld().createExplosion(location, Barrage.explosiveRadius); + arrow.remove(); + } + + public void onGroundHitEvent(Arrow arrow) + { + org.bukkit.Location location = arrow.getLocation(); + arrow.getWorld().createExplosion(location, Barrage.explosiveRadius); + arrow.remove(); + } +} diff --git a/src/net/moosecraft/Barrage/GlassHeadArrowEffect.java b/src/net/moosecraft/Barrage/GlassHeadArrowEffect.java new file mode 100644 index 0000000..57f8d2e --- /dev/null +++ b/src/net/moosecraft/Barrage/GlassHeadArrowEffect.java @@ -0,0 +1,35 @@ +package net.moosecraft.Barrage; + +import java.util.Random; + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; + +// Referenced classes of package moosecraft: +// ArrowEffect, Barrage + +public class GlassHeadArrowEffect + implements ArrowEffect +{ + + public GlassHeadArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + if(target instanceof LivingEntity) + { + Double damage = Double.valueOf(((LivingEntity)target).getLastDamage()); + Double maxdamage = Double.valueOf(damage.doubleValue() * Barrage.maxcrit.doubleValue()); + Random r = new Random(); + double randDamage = damage.doubleValue() + (maxdamage.doubleValue() - damage.doubleValue()) * r.nextDouble(); + ((LivingEntity)target).setLastDamage(randDamage); + } + } + + public void onGroundHitEvent(Arrow arrow1) + { + } +} diff --git a/src/net/moosecraft/Barrage/ImpactArrowEffect.java b/src/net/moosecraft/Barrage/ImpactArrowEffect.java new file mode 100644 index 0000000..bd1e1c1 --- /dev/null +++ b/src/net/moosecraft/Barrage/ImpactArrowEffect.java @@ -0,0 +1,37 @@ +package net.moosecraft.Barrage; + + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class ImpactArrowEffect + implements ArrowEffect +{ + + public ImpactArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + if(target instanceof LivingEntity) + { + Player shooter = (Player)arrow.getShooter(); + Vector v = shooter.getLocation().getDirection(); + v.setY(v.getY() + 10); + v.setX(v.getX() * 12); + v.setZ(v.getZ() * 12); + target.setVelocity(v); + } + } + + public void onGroundHitEvent(Arrow arrow1) + { + } +} \ No newline at end of file diff --git a/src/net/moosecraft/Barrage/LightningArrowEffect.java b/src/net/moosecraft/Barrage/LightningArrowEffect.java new file mode 100644 index 0000000..61f8eef --- /dev/null +++ b/src/net/moosecraft/Barrage/LightningArrowEffect.java @@ -0,0 +1,28 @@ +package net.moosecraft.Barrage; + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class LightningArrowEffect + implements ArrowEffect +{ + + public LightningArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + arrow.getWorld().strikeLightning(arrow.getLocation()); + arrow.remove(); + } + + public void onGroundHitEvent(Arrow arrow) + { + arrow.getWorld().strikeLightning(arrow.getLocation()); + arrow.remove(); + } +} diff --git a/src/net/moosecraft/Barrage/MudslingerArrowEffect.java b/src/net/moosecraft/Barrage/MudslingerArrowEffect.java new file mode 100644 index 0000000..3b33c3c --- /dev/null +++ b/src/net/moosecraft/Barrage/MudslingerArrowEffect.java @@ -0,0 +1,36 @@ +package net.moosecraft.Barrage; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class MudslingerArrowEffect + implements ArrowEffect +{ + + private Material dirt; + + public MudslingerArrowEffect() + { + dirt = Material.SAND; + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + b.setType(dirt); + } + + public void onGroundHitEvent(Arrow arrow) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + b.setType(dirt); + } +} diff --git a/src/net/moosecraft/Barrage/NetArrowEffect.java b/src/net/moosecraft/Barrage/NetArrowEffect.java new file mode 100644 index 0000000..0a0652b --- /dev/null +++ b/src/net/moosecraft/Barrage/NetArrowEffect.java @@ -0,0 +1,322 @@ +package net.moosecraft.Barrage; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class NetArrowEffect + implements ArrowEffect +{ + + private Block changedBlocks[]; + private int blockIndex; + private Material web; + + public NetArrowEffect() + { + web = Material.COBWEB; + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + Location blockLoc = target.getLocation(); + Block b = blockLoc.getBlock(); + changedBlocks = new Block[20]; + blockIndex = 0; + for(; b.getType() == Material.AIR; b = blockLoc.getBlock()) + { + blockLoc.subtract(0.0D, 1.0D, 0.0D); + } + + blockLoc.add(0.0D, 1.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + blockLoc.add(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.add(0.0D, 0.0D, 1.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(0.0D, 0.0D, 1.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(0.0D, 0.0D, 1.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.add(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.add(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + } + + public void onGroundHitEvent(Arrow arrow) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + changedBlocks = new Block[20]; + blockIndex = 0; + for(; b.getType() == Material.AIR; b = blockLoc.getBlock()) + { + blockLoc.subtract(0.0D, 1.0D, 0.0D); + } + + blockLoc.add(0.0D, 1.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + blockLoc.add(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.add(0.0D, 0.0D, 1.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(0.0D, 0.0D, 1.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.subtract(0.0D, 0.0D, 1.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.add(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + blockLoc.add(1.0D, 0.0D, 0.0D); + b = blockLoc.getBlock(); + if(b.getType() == Material.AIR) + { + if(b.getRelative(0, -1, 0).getType() == Material.AIR) + { + b.getRelative(0, -1, 0).setType(web); + changedBlocks[blockIndex] = b.getRelative(0, -1, 0); + blockIndex++; + } else + { + b.setType(web); + changedBlocks[blockIndex] = b; + blockIndex++; + } + } + } +} diff --git a/src/net/moosecraft/Barrage/PlanetCrackerArrowEffect.java b/src/net/moosecraft/Barrage/PlanetCrackerArrowEffect.java new file mode 100644 index 0000000..49e92b0 --- /dev/null +++ b/src/net/moosecraft/Barrage/PlanetCrackerArrowEffect.java @@ -0,0 +1,68 @@ +package net.moosecraft.Barrage; + +import org.bukkit.Location; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +// Referenced classes of package moosecraft: +// ArrowEffect, Barrage + +public class PlanetCrackerArrowEffect + implements ArrowEffect +{ + + public PlanetCrackerArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + arrow.remove(); + Location location = target.getLocation(); + target.getWorld().strikeLightning(target.getLocation()); + target.getWorld().strikeLightning(target.getLocation().add(3D, 0.0D, 0.0D)); + target.getWorld().strikeLightning(target.getLocation().add(2D, 0.0D, 0.0D)); + target.getWorld().strikeLightning(target.getLocation().add(1.0D, 0.0D, 0.0D)); + target.getWorld().strikeLightning(target.getLocation().subtract(3D, 0.0D, 0.0D)); + target.getWorld().strikeLightning(target.getLocation().subtract(2D, 0.0D, 0.0D)); + target.getWorld().strikeLightning(target.getLocation().subtract(1.0D, 0.0D, 0.0D)); + target.getWorld().strikeLightning(target.getLocation().add(0.0D, 0.0D, 3D)); + target.getWorld().strikeLightning(target.getLocation().add(0.0D, 0.0D, 2D)); + target.getWorld().strikeLightning(target.getLocation().add(0.0D, 0.0D, 1.0D)); + target.getWorld().strikeLightning(target.getLocation().subtract(0.0D, 0.0D, 3D)); + target.getWorld().strikeLightning(target.getLocation().subtract(0.0D, 0.0D, 2D)); + target.getWorld().strikeLightning(target.getLocation().subtract(0.0D, 0.0D, 1.0D)); + target.getWorld().createExplosion(location, Barrage.crackradius); + Player player = (Player)arrow.getShooter(); + player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, Barrage.crackpoison, 1)); + player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Barrage.crackpoison, 1)); + player.setHealth(1.0D); + } + + public void onGroundHitEvent(Arrow arrow) + { + Location location = arrow.getLocation(); + arrow.getWorld().strikeLightning(arrow.getLocation()); + arrow.getWorld().strikeLightning(arrow.getLocation().add(3D, 0.0D, 0.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().add(2D, 0.0D, 0.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().add(1.0D, 0.0D, 0.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().subtract(3D, 0.0D, 0.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().subtract(2D, 0.0D, 0.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().subtract(1.0D, 0.0D, 0.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().add(0.0D, 0.0D, 3D)); + arrow.getWorld().strikeLightning(arrow.getLocation().add(0.0D, 0.0D, 2D)); + arrow.getWorld().strikeLightning(arrow.getLocation().add(0.0D, 0.0D, 1.0D)); + arrow.getWorld().strikeLightning(arrow.getLocation().subtract(0.0D, 0.0D, 3D)); + arrow.getWorld().strikeLightning(arrow.getLocation().subtract(0.0D, 0.0D, 2D)); + arrow.getWorld().strikeLightning(arrow.getLocation().subtract(0.0D, 0.0D, 1.0D)); + arrow.getWorld().createExplosion(location, Barrage.crackradius); + arrow.remove(); + Player player = (Player)arrow.getShooter(); + player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, Barrage.crackpoison, 1)); + player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Barrage.crackpoison, 1)); + player.setHealth(1.0D); + } +} diff --git a/src/net/moosecraft/Barrage/PoisonArrowEffect.java b/src/net/moosecraft/Barrage/PoisonArrowEffect.java new file mode 100644 index 0000000..542b0f9 --- /dev/null +++ b/src/net/moosecraft/Barrage/PoisonArrowEffect.java @@ -0,0 +1,29 @@ +package net.moosecraft.Barrage; + +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +// Referenced classes of package moosecraft: +// ArrowEffect, Barrage + +public class PoisonArrowEffect + implements ArrowEffect +{ + + public PoisonArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + LivingEntity e = (LivingEntity)target; + e.addPotionEffect(new PotionEffect(PotionEffectType.POISON, Barrage.poisonSec, 1)); + } + + public void onGroundHitEvent(Arrow arrow1) + { + } +} diff --git a/src/net/moosecraft/Barrage/TorchArrowEffect.java b/src/net/moosecraft/Barrage/TorchArrowEffect.java new file mode 100644 index 0000000..76c3591 --- /dev/null +++ b/src/net/moosecraft/Barrage/TorchArrowEffect.java @@ -0,0 +1,40 @@ +package net.moosecraft.Barrage; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class TorchArrowEffect + implements ArrowEffect +{ + + private Material torch; + + public TorchArrowEffect() + { + torch = Material.TORCH; + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + if(!(target instanceof LivingEntity)) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + b.setType(torch); + } + } + + public void onGroundHitEvent(Arrow arrow) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + b.setType(torch); + } +} diff --git a/src/net/moosecraft/Barrage/WarpArrowEffect.java b/src/net/moosecraft/Barrage/WarpArrowEffect.java new file mode 100644 index 0000000..61aa1eb --- /dev/null +++ b/src/net/moosecraft/Barrage/WarpArrowEffect.java @@ -0,0 +1,40 @@ +package net.moosecraft.Barrage; + +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class WarpArrowEffect + implements ArrowEffect +{ + + public WarpArrowEffect() + { + } + + public void onEntityHitEvent(Arrow arrow1, Entity entity) + { + } + + public void onGroundHitEvent(Arrow arrow) + { + Player player = (Player)arrow.getShooter(); + Location newLoc = arrow.getLocation(); + Location tempLoc = newLoc; + for(; !newLoc.getBlock().isEmpty() && newLoc.getY() < 127D; newLoc.add(0.0D, 1.0D, 0.0D)) { } + if(newLoc.getY() - tempLoc.getY() < 3D) + { + newLoc.setPitch(0.0F); + player.teleport(newLoc); + arrow.remove(); + } else + { + player.sendMessage((new StringBuilder()).append(ChatColor.RED).append("It's not safe to teleport into such a small area. Teleport canceled.").toString()); + } + } +} diff --git a/src/net/moosecraft/Barrage/WaterArrowEffect.java b/src/net/moosecraft/Barrage/WaterArrowEffect.java new file mode 100644 index 0000000..c57cedf --- /dev/null +++ b/src/net/moosecraft/Barrage/WaterArrowEffect.java @@ -0,0 +1,36 @@ +package net.moosecraft.Barrage; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; + +// Referenced classes of package moosecraft: +// ArrowEffect + +public class WaterArrowEffect + implements ArrowEffect +{ + + private Material wet; + + public WaterArrowEffect() + { + wet = Material.WATER; + } + + public void onEntityHitEvent(Arrow arrow, Entity target) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + b.setType(wet); + } + + public void onGroundHitEvent(Arrow arrow) + { + Location blockLoc = arrow.getLocation(); + Block b = blockLoc.getBlock(); + b.setType(wet); + } +} diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..cb368a4 --- /dev/null +++ b/src/plugin.yml @@ -0,0 +1,9 @@ +name: Barrage +author: MooseOnTehLoose +main: net.moosecraft.Barrage.Barrage +version: 2.2-1.20.4 +api-version: 1.20 +commands: + barrage: + description: Upgrade your arsenal with a variety of specialty arrows + usage: "instructions: https://github.com/MooseOnTehLoose/Barrage" \ No newline at end of file