package net.diamonddominion.esaych.survival; import java.util.HashMap; import java.util.Map; import net.diamonddominion.esaych.CustomPlugin; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityShootBowEvent; public class FairGod { public CustomPlugin plugin; public FairGod(CustomPlugin plugin) { this.plugin = plugin; } @SuppressWarnings({ "unchecked", "rawtypes" }) public Map<String, Boolean> gods = new HashMap(); public void enable() { // plugin.getServer().getPluginManager().registerEvents(this, plugin); log("Enabled"); } public boolean godCommand(CommandSender sender, String[] args) { Player player = null; if ((sender instanceof Player)) { player = (Player)sender; } else { log("You must be a player to use that command!"); return true; } if (args.length == 0) { if (player.hasPermission("fairgod.fair")) { toggleGod(player, true); return true; } player.sendMessage(ChatColor.RED + "You don't have permission to do that!"); return true; } return false; } public boolean toggleGod(Player player, boolean fair) { if (this.gods.containsKey(player.getName())) { this.gods.remove(player.getName()); player.sendMessage(ChatColor.GOLD + "You are now out of God mode."); return true; } this.gods.put(player.getName(), Boolean.valueOf(fair)); player.sendMessage(ChatColor.GOLD + "You are now in God mode."); if (!fair) { player.sendMessage(ChatColor.GOLD + "You are in unfair mode! You may harm other players."); } return false; } public boolean isGod(Player player) { if (this.gods.containsKey(player.getName())) { return true; } return false; } public boolean isFair(Player player) { return ((Boolean)this.gods.get(player.getName())).booleanValue(); } // public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) // { // if (commandLabel.equalsIgnoreCase("god")) { // log("Recieved Command"); // Player player = null; // if ((sender instanceof Player)) // { // player = (Player)sender; // } // else // { // log("You must be a player to use that command!"); // return true; // } // // if (args.length == 0) // { // if (player.hasPermission("fairgod.fair")) // { // toggleGod(player, true); // return true; // } // // player.sendMessage(ChatColor.RED + "You don't have permission to do that!"); // return true; // } // // if (args.length == 1) // { // if (player.hasPermission("fairgod.unfair")) // { // toggleGod(player, false); // return true; // } // // player.sendMessage(ChatColor.RED + "You don't have permission to do that!"); // return true; // } // // return false; // } // return false; // } // @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if ((event.getDamager() instanceof Player)) { if ((event.getEntity() instanceof Player)) { Player damager = (Player) event.getDamager(); if (isGod(damager)) { if (isFair(damager)) { if (!damager.getWorld().getName().equals("GameWorld")) { if (damager.getGameMode() == GameMode.SURVIVAL) { event.setCancelled(true); toggleGod(damager, true); } } else { toggleGod(damager, true); } } } } } } // @EventHandler public void onEntityDamage(EntityDamageEvent event) { if ((event.getEntity() instanceof Player)) { Player player = (Player) event.getEntity(); if (isGod(player)) { if (!player.getWorld().getName().equals("EventWorld")) { event.setCancelled(true); } else { toggleGod(player, true); } } } } // @EventHandler(priority = EventPriority.NORMAL) public void onShoot(EntityShootBowEvent event) { if ((event.getEntity() instanceof Player)) { Player archer = (Player) event.getEntity(); if (isGod(archer)) { if (!archer.getWorld().getName().equals("EventWorld")) { if (archer.getGameMode() == GameMode.SURVIVAL) { event.setCancelled(true); toggleGod(archer, true); } } else { toggleGod(archer, true); } } } } public void log(String info) { plugin.getLogger().info("<FairGod> " + info); } }