Code: package RightClickDuel; import java.util.ArrayList; import java.util.HashMap; import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class RightClickDuel extends JavaPlugin implements Listener { public final Logger logger = Logger.getLogger("Minecraft"); public static RightClickDuel plugin; @Override public void onEnable(){ logger.info("RightClickDuel Enabled"); PluginManager pm = this.getServer().getPluginManager(); pm.registerEvents(this, this); } @Override public void onDisable(){ logger.info("rightClickDuel Disabled"); } ArrayList<Player> clickedlist = new ArrayList<Player>(); ArrayList<Player> duellist = new ArrayList<Player>(); public static HashMap<Player, Player> playerlist = new HashMap<Player, Player>(); static Boolean duelstart = false; static Boolean deathmessage = false; static Player hit; static Player hitter; static Player playerclicked; static Player playerclicking; static int countdown; static int counter = 0; @Override public boolean onCommand(CommandSender sender, Command cmd, final String speak, String[] args){ if(speak.equalsIgnoreCase("cd") || (speak.equalsIgnoreCase("clickduel"))){ switch (args.length){ case 0: sender.sendMessage("Invalid command, type /cd commands for a list of commands"); break; case 1: if(args[0].equalsIgnoreCase("commands")){ sender.sendMessage(ChatColor.GOLD + "========" + ChatColor.RED + "RightClickDuel" + ChatColor.GOLD + "========"); sender.sendMessage(ChatColor.GOLD + "/cd help - Shows ClickDuel commands"); sender.sendMessage(ChatColor.GOLD + "/cd info - Shows the current version you are running"); sender.sendMessage(ChatColor.GOLD + "/cd duel list - Shows the players currently dueling"); } if(args[0].equalsIgnoreCase("info") || args[0].equalsIgnoreCase("information")){ sender.sendMessage(ChatColor.GOLD + "ClickDuel Version - 1.0"); } if(args[0].equalsIgnoreCase("help")){ sender.sendMessage(ChatColor.GOLD + "========" + ChatColor.RED + "Instructions" + ChatColor.GOLD + "========"); sender.sendMessage(ChatColor.GOLD + "Right click another player to request a duel"); sender.sendMessage(ChatColor.GOLD + "Right click the same player back to accept"); sender.sendMessage(ChatColor.GOLD + "PvP will be enabled between those two people, items can be lost"); sender.sendMessage(ChatColor.GOLD + "Winner of the duel gets their name announced, PvP is disabled between those two people"); } break; case 2: if(args[0].equalsIgnoreCase("duel")){ if(args[1].equalsIgnoreCase("list")){ for (Player name: playerlist.keySet()){ String key = name.getName(); String value = playerlist.get(name).getName(); System.out.println(ChatColor.RED + key + ChatColor.GOLD +" vs " + ChatColor.RED + value); } } } break; } } return true; } @EventHandler(priority = EventPriority.NORMAL) public void onPlayerInteract(PlayerInteractEntityEvent event){ if(event.getRightClicked() instanceof Player){ playerclicked = (Player) event.getRightClicked(); playerclicking = event.getPlayer(); clickedlist.add(playerclicked); if(duellist.contains(playerclicking) == false){ if(duellist.contains(playerclicked) == false){ if(clickedlist.contains(playerclicking)){ playerclicked.sendMessage(ChatColor.RED + playerclicking.getName() + ChatColor.GOLD + " accepted your request!"); playerclicking.sendMessage(ChatColor.GOLD + "You accepted " + ChatColor.RED + playerclicked.getName() + ChatColor.GOLD + "'s request!"); playerclicked.sendMessage(ChatColor.RED + "The duel is starting in 10 seconds"); playerclicking.sendMessage(ChatColor.RED + "The duel is starting in 10 seconds"); timer(); }else{ playerclicked.sendMessage(ChatColor.RED + playerclicking.getName() + ChatColor.GOLD +" wants to duel with you"); playerclicking.sendMessage(ChatColor.GOLD + "You sent " + ChatColor.RED +playerclicked.getName() + ChatColor.GOLD +" a duel request"); } }else{ playerclicking.sendMessage(ChatColor.RED + "You can't duel " + playerclicked.getName() + " while they are already in a duel"); } }else{ playerclicking.sendMessage(ChatColor.RED + "You're already in a duel with someone else"); } } } @EventHandler(priority = EventPriority.NORMAL) public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if(event.getEntity() instanceof Player) { if(event.getDamager() instanceof Player) { hitter = (Player) event.getDamager(); hit = (Player) event.getEntity(); if(duellist.contains(hitter) && duellist.contains(hit) && duelstart == true){ }else{ event.setCancelled(true); } }else{ event.setCancelled(false); } }else{ event.setCancelled(false); } } @EventHandler public void onPlayerDeath(PlayerDeathEvent event) { if(event.getEntity() instanceof Player){ Player dead = (Player) event.getEntity(); if(dead == hit && duellist.contains(dead)){ event.setDeathMessage(ChatColor.GOLD + hitter.getName() + " defeated " + hit.getName() + " in a duel"); duellist.remove(hit); duellist.remove(hitter); playerlist.remove(playerclicked); duelstart = false; } } } @EventHandler(priority = EventPriority.HIGHEST) public void onCommand(PlayerCommandPreprocessEvent event){ Player p = event.getPlayer(); if(duellist.contains(p)){ event.getPlayer().sendMessage(ChatColor.RED + "You're in a duel, commands are disabled!"); event.setCancelled(true); }else{ } } public void timer(){ countdown = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){ public void run(){ playerclicked.sendMessage(ChatColor.RED + "Fight!"); playerclicking.sendMessage(ChatColor.RED + "Fight!"); playerclicked.setGameMode(GameMode.SURVIVAL); playerclicking.setGameMode(GameMode.SURVIVAL); clickedlist.remove(playerclicked); clickedlist.remove(playerclicking); duellist.add(playerclicked); duellist.add(playerclicking); playerlist.put(playerclicked, playerclicking); duelstart = true; Bukkit.getScheduler().cancelTask(countdown); } }, 200,200); } guys can u add somthings on it1-when someone die nothing will happened except the server write for 2 player (name won the match!)2- now the plugin must click rightclick ,, i want him click shift+rightclick3- and they can't make spam4- they can't duel more then 1 man 5- and remove this please ^^" http://prntscr.com/32xfbu6- every one will see name on the another player &b7-in all of the world no pvp except if they duel 8-after someone die the duel finish automatic
frankshtin I made this a while ago, i'm almost sure it still works Features: - right click someone to duel, the player has the option to right click back to accept - 10 second countdown until the duel between the two players starts - includes a death message - Sets the dueling players gm to 0 Note: The only problem before I had was if a lot of people duel request at the same time, it's gets messed up? I can't remember if I fixed it or not.. anyway here you go https://www.dropbox.com/s/4a9frlxrr5hkof6/RightClickDuel.jar
i will say it he most click shift+rightclick not just right click and they can't make spam and remove this please ^^" http://prntscr.com/32xfbu and how i can make the world no pvp except if the duel ?? EDIT by Moderator: merged posts, please use the edit button instead of double posting.
frankshtin Alright i'm having trouble understanding you.. either way I'm not going to put in the time to fix this, sorry. I'm going to post the code below, anyone can feel free to fix it, edit, or change, or claim as your own I could care less. Good luck with the project and hope it turns out for the best. Code:java package RightClickDuel; import java.util.ArrayList;import java.util.HashMap;import java.util.logging.Logger; import org.bukkit.Bukkit;import org.bukkit.ChatColor;import org.bukkit.GameMode;import org.bukkit.command.Command;import org.bukkit.command.CommandSender;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.EventPriority;import org.bukkit.event.Listener;import org.bukkit.event.entity.EntityDamageByEntityEvent;import org.bukkit.event.entity.PlayerDeathEvent;import org.bukkit.event.player.PlayerCommandPreprocessEvent;import org.bukkit.event.player.PlayerInteractEntityEvent;import org.bukkit.plugin.PluginManager;import org.bukkit.plugin.java.JavaPlugin; public class RightClickDuel extends JavaPlugin implements Listener {public final Logger logger = Logger.getLogger("Minecraft");public static RightClickDuel plugin; @Overridepublic void onEnable(){logger.info("RightClickDuel Enabled");PluginManager pm = this.getServer().getPluginManager();pm.registerEvents(this, this); }@Overridepublic void onDisable(){logger.info("rightClickDuel Disabled");} ArrayList<Player> clickedlist = new ArrayList<Player>();ArrayList<Player> duellist = new ArrayList<Player>();public static HashMap<Player, Player> playerlist = new HashMap<Player, Player>();static Boolean duelstart = false;static Boolean deathmessage = false;static Player hit;static Player hitter;static Player playerclicked;static Player playerclicking;static int countdown;static int counter = 0; @Overridepublic boolean onCommand(CommandSender sender, Command cmd, final String speak, String[] args){ if(speak.equalsIgnoreCase("cd") || (speak.equalsIgnoreCase("clickduel"))){ switch (args.length){ case 0:sender.sendMessage("Invalid command, type /cd commands for a list of commands");break; case 1:if(args[0].equalsIgnoreCase("commands")){sender.sendMessage(ChatColor.GOLD + "========" + ChatColor.RED + "RightClickDuel" + ChatColor.GOLD + "========");sender.sendMessage(ChatColor.GOLD + "/cd help - Shows ClickDuel commands");sender.sendMessage(ChatColor.GOLD + "/cd info - Shows the current version you are running");sender.sendMessage(ChatColor.GOLD + "/cd duel list - Shows the players currently dueling"); } if(args[0].equalsIgnoreCase("info") || args[0].equalsIgnoreCase("information")){sender.sendMessage(ChatColor.GOLD + "ClickDuel Version - 1.0");} if(args[0].equalsIgnoreCase("help")){sender.sendMessage(ChatColor.GOLD + "========" + ChatColor.RED + "Instructions" + ChatColor.GOLD + "========");sender.sendMessage(ChatColor.GOLD + "Right click another player to request a duel");sender.sendMessage(ChatColor.GOLD + "Right click the same player back to accept");sender.sendMessage(ChatColor.GOLD + "PvP will be enabled between those two people, items can be lost");sender.sendMessage(ChatColor.GOLD + "Winner of the duel gets their name announced, PvP is disabled between those two people");} break; case 2:if(args[0].equalsIgnoreCase("duel")){if(args[1].equalsIgnoreCase("list")){for (Player name: playerlist.keySet()){ String key = name.getName();String value = playerlist.get(name).getName();System.out.println(ChatColor.RED + key + ChatColor.GOLD +" vs " + ChatColor.RED + value); }}}break; } } return true;} @EventHandler(priority = EventPriority.NORMAL)public void onPlayerInteract(PlayerInteractEntityEvent event){ if(event.getRightClicked() instanceof Player){playerclicked = (Player) event.getRightClicked();playerclicking = event.getPlayer();clickedlist.add(playerclicked);if(duellist.contains(playerclicking) == false){if(duellist.contains(playerclicked) == false){if(clickedlist.contains(playerclicking)){playerclicked.sendMessage(ChatColor.RED + playerclicking.getName() + ChatColor.GOLD + " accepted your request!");playerclicking.sendMessage(ChatColor.GOLD + "You accepted " + ChatColor.RED + playerclicked.getName() + ChatColor.GOLD + "'s request!");playerclicked.sendMessage(ChatColor.RED + "The duel is starting in 10 seconds");playerclicking.sendMessage(ChatColor.RED + "The duel is starting in 10 seconds");timer(); }else{playerclicked.sendMessage(ChatColor.RED + playerclicking.getName() + ChatColor.GOLD +" wants to duel with you");playerclicking.sendMessage(ChatColor.GOLD + "You sent " + ChatColor.RED +playerclicked.getName() + ChatColor.GOLD +" a duel request");}}else{playerclicking.sendMessage(ChatColor.RED + "You can't duel " + playerclicked.getName() + " while they are already in a duel");}}else{playerclicking.sendMessage(ChatColor.RED + "You're already in a duel with someone else");}}} @EventHandler(priority = EventPriority.NORMAL)public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if(event.getEntity() instanceof Player) {if(event.getDamager() instanceof Player) {hitter = (Player) event.getDamager();hit = (Player) event.getEntity(); if(duellist.contains(hitter) && duellist.contains(hit) && duelstart == true){ }else{event.setCancelled(true);}}else{event.setCancelled(false);}}else{event.setCancelled(false);} } @EventHandlerpublic void onPlayerDeath(PlayerDeathEvent event) {if(event.getEntity() instanceof Player){Player dead = (Player) event.getEntity();if(dead == hit && duellist.contains(dead)){event.setDeathMessage(ChatColor.GOLD + hitter.getName() + " defeated " + hit.getName() + " in a duel");duellist.remove(hit);duellist.remove(hitter);playerlist.remove(playerclicked);duelstart = false;}} } @EventHandler(priority = EventPriority.HIGHEST)public void onCommand(PlayerCommandPreprocessEvent event){Player p = event.getPlayer();if(duellist.contains(p)){event.getPlayer().sendMessage(ChatColor.RED + "You're in a duel, commands are disabled!");event.setCancelled(true);}else{ } } public void timer(){countdown = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){public void run(){playerclicked.sendMessage(ChatColor.RED + "Fight!");playerclicking.sendMessage(ChatColor.RED + "Fight!");playerclicked.setGameMode(GameMode.SURVIVAL);playerclicking.setGameMode(GameMode.SURVIVAL);clickedlist.remove(playerclicked);clickedlist.remove(playerclicking);duellist.add(playerclicked);duellist.add(playerclicking);playerlist.put(playerclicked, playerclicking);duelstart = true;Bukkit.getScheduler().cancelTask(countdown); } }, 200,200);} And it already just enables the pvp between those two players. Or should....
thank u ^^ guys can u add somthings on it 1-when someone die nothing will happened except the server write for 2 player (name won the match!) 2- now the plugin must click rightclick ,, i want him click shift+rightclick 3- and they can't make spam 4- they can't duel more then 1 man 5- and remove this please ^^" http://prntscr.com/32xfbu 6- every one will see name on the another player &b 7-in all of the world no pvp except if they duel EDIT by Moderator: merged posts, please use the edit button instead of double posting.