From 98ee190b579598e1761a617246b177c4e1f8cc15 Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Fri, 21 Oct 2011 15:28:03 -0400 Subject: [PATCH] Landmines... --- .../Commands/Command_landmine.java | 34 +++++++++++ .../Commands/Command_wildcard.java | 2 +- .../Listener/TFM_PlayerListener.java | 58 +++++++++++++------ .../TotalFreedomMod/TFM_LandmineData.java | 16 +++++ .../TotalFreedomMod/TotalFreedomMod.java | 1 + src/plugin.yml | 3 + 6 files changed, 94 insertions(+), 20 deletions(-) create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_landmine.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/TFM_LandmineData.java diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_landmine.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_landmine.java new file mode 100644 index 00000000..db146b22 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_landmine.java @@ -0,0 +1,34 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TFM_LandmineData; +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Command_landmine extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (senderIsConsole) + { + sender.sendMessage(TotalFreedomMod.NOT_FROM_CONSOLE); + } + else if (sender.isOp()) + { + Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN); + landmine.setType(Material.TNT); + plugin.landmines.add(new TFM_LandmineData(landmine.getLocation(), sender_p)); + } + else + { + sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); + } + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_wildcard.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_wildcard.java index 47d0cad4..20a1fd34 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_wildcard.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_wildcard.java @@ -27,7 +27,7 @@ public class Command_wildcard extends TFM_Command { String out_command = base_command.replaceAll("\\x3f", p.getName()); sender.sendMessage("Running Command: " + out_command); - Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), out_command); + Bukkit.getServer().dispatchCommand(sender, out_command); } } else diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java index e7b23dd3..d8e426c3 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java @@ -1,16 +1,20 @@ package me.StevenLawson.TotalFreedomMod.Listener; +import java.util.Iterator; import java.util.logging.Logger; import java.util.regex.Pattern; +import me.StevenLawson.TotalFreedomMod.TFM_LandmineData; import me.StevenLawson.TotalFreedomMod.TFM_UserInfo; import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.entity.TNTPrimed; import org.bukkit.event.block.Action; import org.bukkit.event.player.*; import org.bukkit.inventory.ItemStack; @@ -30,54 +34,47 @@ public class TFM_PlayerListener extends PlayerListener public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); + Action action = event.getAction(); + Material material = event.getMaterial(); - if (event.getAction() == Action.RIGHT_CLICK_BLOCK) + if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) { - if (event.getMaterial() == Material.WATER_BUCKET) + if (material == Material.WATER_BUCKET) { - int slot = player.getInventory().getHeldItemSlot(); - ItemStack heldItem = new ItemStack(Material.COOKIE, 1); - player.getInventory().setItem(slot, heldItem); - + player.getInventory().setItemInHand(new ItemStack(Material.COOKIE, 1)); player.sendMessage(ChatColor.GOLD + "Does this look like a waterpark to you?"); - event.setCancelled(true); return; } - else if (event.getMaterial() == Material.LAVA_BUCKET) + else if (material == Material.LAVA_BUCKET) { - int slot = player.getInventory().getHeldItemSlot(); - ItemStack heldItem = new ItemStack(Material.COOKIE, 1); - player.getInventory().setItem(slot, heldItem); - + player.getInventory().setItemInHand(new ItemStack(Material.COOKIE, 1)); player.sendMessage(ChatColor.GOLD + "LAVA NO FUN, YOU EAT COOKIE INSTEAD, NO?"); - event.setCancelled(true); return; } } - else if (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK) + else if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) { - if (event.getMaterial() == Material.STICK) + if (material == Material.STICK) { TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(player, plugin); if (playerdata.mobThrowerEnabled()) { Location player_pos = player.getLocation(); Vector direction = player_pos.getDirection().normalize(); - Location rez_pos = player_pos.add(direction.multiply(2.0)); - LivingEntity rezzed_mob = player.getWorld().spawnCreature(rez_pos, playerdata.mobThrowerCreature()); + LivingEntity rezzed_mob = player.getWorld().spawnCreature(player_pos.add(direction.multiply(2.0)), playerdata.mobThrowerCreature()); rezzed_mob.setVelocity(direction.multiply(playerdata.mobThrowerSpeed())); playerdata.enqueueMob(rezzed_mob); event.setCancelled(true); } } - else if (event.getMaterial() == Material.SULPHUR) + else if (material == Material.SULPHUR) { TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(player, plugin); - + if (playerdata.isMP44Armed()) { if (playerdata.toggleMP44Firing()) @@ -161,6 +158,29 @@ public class TFM_PlayerListener extends PlayerListener p.setVelocity(new Vector(0, playerdata.orbitStrength(), 0)); } } + + Iterator landmines = plugin.landmines.iterator(); + while (landmines.hasNext()) + { + TFM_LandmineData landmine = landmines.next(); + + if (!landmine.player.equals(p)) + { + if (p.getWorld().equals(landmine.landmine_pos.getWorld())) + { + if (p.getLocation().distance(landmine.landmine_pos) <= 2.0) + { + landmine.landmine_pos.getBlock().setType(Material.AIR); + TNTPrimed primed_tnt = landmine.landmine_pos.getWorld().spawn(landmine.landmine_pos, TNTPrimed.class); + primed_tnt.setFuseTicks(100); + primed_tnt.setPassenger(p); + primed_tnt.setVelocity(new Vector(0.0, 10.0, 0.0)); + p.setGameMode(GameMode.SURVIVAL); + landmines.remove(); + } + } + } + } } @Override diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_LandmineData.java b/src/me/StevenLawson/TotalFreedomMod/TFM_LandmineData.java new file mode 100644 index 00000000..a3231ea5 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_LandmineData.java @@ -0,0 +1,16 @@ +package me.StevenLawson.TotalFreedomMod; + +import org.bukkit.Location; +import org.bukkit.entity.Player; + +public class TFM_LandmineData +{ + public Location landmine_pos; + public Player player; + + public TFM_LandmineData(Location landmine_pos, Player player) + { + this.landmine_pos = landmine_pos; + this.player = player; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java index 350d3b5c..863a5c54 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java +++ b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java @@ -38,6 +38,7 @@ public class TotalFreedomMod extends JavaPlugin public static final String NOT_FROM_CONSOLE = "This command may not be used from the console."; public Map userinfo = new HashMap(); + public List landmines = new ArrayList(); public boolean allPlayersFrozen = false; @Override diff --git a/src/plugin.yml b/src/plugin.yml index c33ede4a..db0db990 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -46,6 +46,9 @@ commands: gtfo: description: Superadmin command - Makes someone GTFO (deop and ip ban by username). usage: / + landmine: + description: Set a landmine trap. + usage: / lavadmg: description: Superadmin command - Enable/disable lava damage. usage: /