PVP Damage

Discussion in 'Plugin Development' started by NoMansLand, Aug 14, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    NoMansLand

    Hello,

    I am designing a plugin that lets people join or leave PVP and a scoreboard utilized that to show how many people get kills.

    But for some reason it wont toggle the damage.

    Java;

    Code:java
    1. package net.myfallen.pvp;
    2.  
    3. import java.util.HashMap;
    4. import java.util.List;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.OfflinePlayer;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.entity.EntityDamageEvent;
    13. import org.bukkit.metadata.FixedMetadataValue;
    14. import org.bukkit.metadata.MetadataValue;
    15. import org.bukkit.plugin.Plugin;
    16. import org.bukkit.plugin.java.JavaPlugin;
    17. import org.bukkit.scoreboard.DisplaySlot;
    18. import org.bukkit.scoreboard.Objective;
    19. import org.bukkit.scoreboard.Score;
    20. import org.bukkit.scoreboard.Scoreboard;
    21. import org.bukkit.scoreboard.ScoreboardManager;
    22.  
    23. public class Main extends JavaPlugin {
    24.  
    25. private Integer pvpenabled;
    26. private Integer pvpdisabled;
    27.  
    28. public void onEnable() {
    29.  
    30. getLogger().info("[PVPToggler] - Starting up.");
    31. }
    32. public void onDisable() {
    33. getLogger().info("[PVPToggler] - Disabled.");
    34. }
    35.  
    36. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    37. if(cmd.getName().equalsIgnoreCase("pvpjoin")) {
    38. ScoreboardManager manager = Bukkit.getScoreboardManager();
    39. Scoreboard board = manager.getNewScoreboard();
    40. Objective objective = board.registerNewObjective("Player Kills", "playerKillCount");
    41. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    42.  
    43. // Set sidebar name
    44.  
    45. objective.setDisplayName("PVP - Player Kills!");
    46.  
    47. sender.sendMessage("[PVPToggler] - You have joined PVP, anyone else that has joined PVP can kill you now.");
    48. sender.sendMessage("[PVPToggler] - Please Note: By joining PVP you have accepted a global PVP battle. To leave type: /pvpleave");
    49. HashMap<String, Integer> pvp = new HashMap<String, Integer>();
    50.  
    51. pvp.put(sender.getName(), pvpenabled); // THis has assigned PVP Enabled
    52.  
    53.  
    54.  
    55. return true;
    56. }
    57. if(cmd.getName().equalsIgnoreCase("pvpleave")) {
    58.  
    59. sender.sendMessage("[PVPToggler] - You have left PVP, You will not receive anymore damage.");
    60. sender.sendMessage("[PVPToggler] - Mobs and other entities can hurt you but other players cannot.");
    61. ScoreboardManager manager = Bukkit.getScoreboardManager();
    62. Scoreboard board = manager.getNewScoreboard();
    63.  
    64. HashMap<String, Integer> pvp = new HashMap<String, Integer>();
    65. pvp.put(sender.getName(), pvpdisabled);
    66. return true;
    67.  
    68. }
    69. return false;
    70. }
    71. // Lets check if they can PVP.
    72. @EventHandler
    73. public void onEntityDamage(EntityDamageEvent event) {
    74. HashMap<String, Integer> pvp = null;
    75.  
    76. if(event.getEntity() instanceof Player) {
    77. if(pvp.containsKey(((OfflinePlayer) event).getPlayer())) {
    78. if(pvp.containsKey(pvpdisabled)) {
    79. event.setCancelled(true);
    80. } else {
    81. if(pvp.containsKey(pvpenabled)) {
    82. return;
    83. }
    84. }
    85. }
    86. }
    87. }
    88. }
    89.  
    90.  
     
  2. Offline

    Axe2760

    You forgot to register events.
    Code:
    this.getServer().getPluginManager().registerEvents(this,this);
    
     
    CeramicTitan likes this.
  3. Offline

    xTrollxDudex

  4. Offline

    chasechocolate

    Along with not registering your events, your code will not work and throw lots of errors.
     
  5. Offline

    NoMansLand

    I'm not the greatest at Java to be honest i'm a beginner, but at least a nice error will push me into the right way to get this working.

    Would Metadata or Hashmaps be better for this?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 3, 2016
  6. Offline

    chasechocolate

    NoMansLand I would use a HashMap<String, Boolean>. Also, you are always creating a new variable when you need it, and instead you should only have 1 variable outside of all your methods.
     
  7. Offline

    NoMansLand

    ok so I did a bit of work and it loads with no issues but now they can "Join" & "Leave" but still issue damage.

    Code:java
    1. package net.myfallen.pvp;
    2.  
    3. import java.util.HashMap;
    4. import java.util.List;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.OfflinePlayer;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Entity;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.EventHandler;
    13. import org.bukkit.event.Listener;
    14. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    15. import org.bukkit.event.entity.EntityDamageEvent;
    16. import org.bukkit.metadata.FixedMetadataValue;
    17. import org.bukkit.metadata.MetadataValue;
    18. import org.bukkit.plugin.Plugin;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20. import org.bukkit.scoreboard.DisplaySlot;
    21. import org.bukkit.scoreboard.Objective;
    22. import org.bukkit.scoreboard.Score;
    23. import org.bukkit.scoreboard.Scoreboard;
    24. import org.bukkit.scoreboard.ScoreboardManager;
    25.  
    26. public class Main extends JavaPlugin implements Listener {
    27.  
    28. private static final HashMap<String, Boolean> pvp = new HashMap<String, Boolean>();
    29. ;
    30. private Boolean pvpenabled;
    31. private Boolean pvpdisabled;
    32.  
    33. public void onEnable() {
    34.  
    35. getLogger().info("[PVPToggler] - Starting up.");
    36. this.getServer().getPluginManager().registerEvents(this,this);
    37. }
    38. public void onDisable() {
    39. getLogger().info("[PVPToggler] - Disabled.");
    40. }
    41. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    42. ScoreboardManager manager = Bukkit.getScoreboardManager();
    43. Scoreboard board = manager.getNewScoreboard();
    44. Objective objective = board.registerNewObjective("Player Kills", "playerKillCount");
    45. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    46.  
    47. // Set sidebar name
    48.  
    49. objective.setDisplayName("PVP - Player Kills!");
    50.  
    51. if(cmd.getName().equalsIgnoreCase("pvpjoin")) {
    52.  
    53. sender.sendMessage("[PVPToggler] - You have joined PVP, anyone else that has joined PVP can kill you now.");
    54. sender.sendMessage("[PVPToggler] - Please Note: By joining PVP you have accepted a global PVP battle. To leave type: /pvpleave");
    55.  
    56. pvp.put(sender.getName(), pvpenabled); // THis has assigned PVP Enabled
    57.  
    58.  
    59.  
    60. return true;
    61. }
    62. if(cmd.getName().equalsIgnoreCase("pvpleave")) {
    63.  
    64. sender.sendMessage("[PVPToggler] - You have left PVP, You will not receive anymore damage.");
    65. sender.sendMessage("[PVPToggler] - Mobs and other entities can hurt you but other players cannot.");
    66.  
    67. pvp.remove(sender.getName()); // Removed it.
    68. return true;
    69.  
    70. }
    71. return false;
    72. }
    73. // Lets check if they can PVP.
    74. @EventHandler
    75. public void onPlayerDamage(EntityDamageByEntityEvent event) {
    76. if(event.getEntity() instanceof Player) {
    77. Entity player = event.getEntity();
    78. if(!pvp.get(player)) {
    79. event.setCancelled(true);
    80. } else {
    81. if(pvp.get(player)) {
    82. return;
    83. }
    84. }
    85. }
    86. }
    87. }
    88.  
    89.  
     
Thread Status:
Not open for further replies.

Share This Page