Solved Events problem

Discussion in 'Plugin Development' started by amatokus, Jul 23, 2014.

Thread Status:
Not open for further replies.
  1. HI all I have a code that check if players is in a list, and if he is not he can't do anything, but after doing a command the player is added to the list, but he is stillunable to do anything. So how should I check again the list after a command is executed? thanks! :D
     
  2. Offline

    ZodiacTheories

  3. sorry I didn't explained well x)

    code:
    Code:java
    1. @EventHandler
    2. public void onMove(PlayerMoveEvent event){
    3. Player player = event.getPlayer();
    4. String splayer = player.getName();
    5. if(!(listt1.contains(splayer) || listt2.contains(splayer))){
    6. event.setCancelled(true);
    7. }
    8. }


    (lists are working good)

    the problem is that when I add the player name to the list, they still can't move, but if they disconnect or reconnect they can! so how can I check again the list after using a command?
     
  4. Offline

    DamnHippo

    amatokus Can you post your whole code? Maybe the command that you use to put the player into list?
     
  5. Offline

    teej107

    Try using a AND operator rather than an OR. I don't know how your code is suppose to work but here is what your if statement is saying. IF "splayer" is NOT in "list1" return true OR if "splayer" is in "list2 return true" If any of those are true, the if statement will be true.
     
  6. This is the command code:

    Code:java
    1. if (cmd.getName().equalsIgnoreCase("sidejoin")){
    2. if(sender.hasPermission("side.player.join")){
    3. if(sender instanceof Player){
    4. Player p = (Player) sender;
    5. if(args.length != 1){
    6. sender.sendMessage(ChatColor.GOLD+"Wrong usage, use /sidejoin <side>, available sides are: "+side1f+", "+side2f+".");}
    7. else{
    8. if(teams1.getPlayers().contains(p) || teams2.getPlayers().contains(p)){
    9. if(teams1.getPlayers().contains(p)){
    10. sender.sendMessage(ChatColor.GOLD+"You are already on side: "+side1f+".");}
    11. if(teams2.getPlayers().contains(p)){
    12. sender.sendMessage(ChatColor.GOLD+"You are already on side: "+side2f+".");}
    13. }else{
    14. if(args[0].equalsIgnoreCase(side1f) || args[0].equalsIgnoreCase(side2f)){
    15. if(args[0].equalsIgnoreCase(side1f)){
    16. String postpostmside = postmside.replace("{Side}", args[0]);
    17. String finalmside = ChatColor.translateAlternateColorCodes('&', postpostmside);
    18. teams1.addPlayer(p.getPlayer());
    19. listt1.add(p.getName());
    20. side1Config.set("players", listt1);
    21. sender.sendMessage(finalmside);
    22. }
    23. if(args[0].equalsIgnoreCase(side2f)){
    24. String postpostmside = postmside.replace("{Side}", args[0]);
    25. String finalmside = ChatColor.translateAlternateColorCodes('&', postpostmside);
    26. teams2.addPlayer(p.getPlayer());
    27. listt2.add(p.getName());
    28. side2Config.set("players", listt2);
    29. sender.sendMessage(finalmside);
    30. }
    31. this.saveFileConfig();
    32. }
    33. for(Player online : Bukkit.getOnlinePlayers()){
    34. scoret1.setScore(listt1.size());
    35. scoret2.setScore(listt2.size());
    36. online.setScoreboard(board);
    37. }
    38. }
    39. }
    40.  
    41.  
    42. }else{sender.sendMessage(ChatColor.GOLD+"You must be in game to perform this command.");}
    43. }else{sender.sendMessage(noperm);}
    44. return true;
    45. }


    thanks for helping ! :)

    Or mabe, how could I check if player has used acommand?

    Can anybody help meh? ^_^
     
  7. Offline

    artish1

    amatokus
    To check if a player has done a command use the PlayerPreProcessComandEvent
     
  8. artish1 yeah maybe doesn't help that much :/ what I want to do is uncancel canceled events after a certain command but HOW?

    But thanks [cake]
     
  9. Offline

    artish1

    Show me both of your lists... your code logic might be wrong and different then the type of logic 'you' want.
    And also tell me what each lists' purpose is... is list1 the list where players are frozen? or is it list2? give me your logic.
     
  10. Offline

    AoH_Ruthless

    amatokus
     
  11. ok here is all my code :

    My event move event class
    Code:java
    1. File side1File;
    2. FileConfiguration side1Config;
    3.  
    4. File side2File;
    5. FileConfiguration side2Config;
    6.  
    7. List<String> listt1;
    8. List<String> listt2;
    9.  
    10. @EventHandler
    11. public void onMove(PlayerMoveEvent event){
    12. Player player = event.getPlayer();
    13. String splayer = player.getName();
    14. if(!(listt1.contains(splayer) || listt2.contains(splayer))){
    15. event.setCancelled(true);
    16. }
    17. }


    My main (and long) class:

    Code:java
    1. package me.amatokus8669.plugin.twosides;
    2.  
    3.  
    4.  
    5.  
    6. import java.io.File;
    7. import java.io.IOException;
    8. import java.util.List;
    9.  
    10. import org.bukkit.Bukkit;
    11. import org.bukkit.ChatColor;
    12. import org.bukkit.OfflinePlayer;
    13. import org.bukkit.World;
    14. import org.bukkit.command.Command;
    15. import org.bukkit.command.CommandSender;
    16. import org.bukkit.command.ConsoleCommandSender;
    17. import org.bukkit.configuration.InvalidConfigurationException;
    18. import org.bukkit.configuration.file.FileConfiguration;
    19. import org.bukkit.configuration.file.YamlConfiguration;
    20. import org.bukkit.entity.Player;
    21. import org.bukkit.event.EventHandler;
    22. import org.bukkit.event.Listener;
    23. import org.bukkit.event.player.PlayerJoinEvent;
    24. import org.bukkit.event.player.PlayerQuitEvent;
    25. import org.bukkit.plugin.java.JavaPlugin;
    26. import org.bukkit.scoreboard.DisplaySlot;
    27. import org.bukkit.scoreboard.Objective;
    28. import org.bukkit.scoreboard.Score;
    29. import org.bukkit.scoreboard.Scoreboard;
    30. import org.bukkit.scoreboard.ScoreboardManager;
    31. import org.bukkit.scoreboard.Team;
    32.  
    33.  
    34. public class Twosides extends JavaPlugin implements Listener {
    35.  
    36.  
    37. ScoreboardManager manager;
    38. Scoreboard board;
    39. Team teams1;
    40. Team teams2;
    41.  
    42.  
    43.  
    44.  
    45. String noperm = ChatColor.RED+"You don't have permissions to perform this command.";
    46. String premside = this.getConfig().getString("message.on_side_join");
    47.  
    48. String side1 = this.getConfig().getString("side_1.name");
    49. String side1f = ChatColor.translateAlternateColorCodes('&', side1);
    50. String side2 = this.getConfig().getString("side_2.name");
    51. String side2f = ChatColor.translateAlternateColorCodes('&', side2);
    52.  
    53. String rank1 = this.getConfig().getString("ranks.rank_1.name");
    54. String rank2 = this.getConfig().getString("ranks.rank_2.name");
    55. String rank3 = this.getConfig().getString("ranks.rank_3.name");
    56. String rank4 = this.getConfig().getString("ranks.rank_4.name");
    57. String rank5 = this.getConfig().getString("ranks.rank_5.name");
    58.  
    59. String cpt1 = this.getConfig().getString("side_1.chat_prefix");
    60. String cpt1f = ChatColor.translateAlternateColorCodes('&', cpt1);
    61.  
    62. String cpt2 = this.getConfig().getString("side_2.chat_prefix");
    63. String cpt2f = ChatColor.translateAlternateColorCodes('&', cpt2);
    64.  
    65. Score scoret1;
    66. Score scoret2;
    67.  
    68. public void saveFileConfig()
    69. {
    70. try
    71. {
    72. side1Config.save(side1File);
    73. side2Config.save(side2File);
    74. }
    75. catch(IOException ex)
    76. {
    77. console.sendMessage(ChatColor.DARK_RED+"ERROR WHILE SAVING SIDE CONFIGS");
    78. ex.printStackTrace();
    79. }
    80. }
    81.  
    82. public void loadFileConfig()
    83. {
    84. try
    85. {
    86. try {
    87. side1Config.load(side1File);
    88. side2Config.load(side2File);
    89. } catch (InvalidConfigurationException e) {
    90. console.sendMessage(ChatColor.DARK_RED+"ERROR WHILE LOADING SIDE CONFIGS");
    91. e.printStackTrace();
    92. }
    93. }
    94. catch(IOException ex)
    95. {
    96. ex.printStackTrace();
    97. }
    98. }
    99.  
    100. ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
    101.  
    102. List<String> listt1;
    103. List<String> listt2;
    104.  
    105. List<String> listt1onlp;
    106. List<String> listt2onlp;
    107.  
    108.  
    109. File side1File = new File(this.getDataFolder(), this.getConfig().getString("side_1.name")+"_players.yml");
    110. FileConfiguration side1Config = YamlConfiguration.loadConfiguration(side1File);
    111.  
    112. File side2File = new File(this.getDataFolder(), this.getConfig().getString("side_2.name")+"_players.yml");
    113. FileConfiguration side2Config = YamlConfiguration.loadConfiguration(side2File);
    114.  
    115.  
    116.  
    117. @Override
    118. public void onEnable() {
    119.  
    120. listt1 = side1Config.getStringList("players");
    121. listt2 = side2Config.getStringList("players");
    122.  
    123. listt1onlp = side1Config.getStringList("online_players");
    124. listt2onlp = side2Config.getStringList("online_players");
    125.  
    126. side1Config.options().copyDefaults(true);
    127. side2Config.options().copyDefaults(true);
    128.  
    129. side1Config.addDefault("players", listt1);
    130. side1Config.addDefault("online_players", listt1onlp);
    131. side2Config.addDefault("players", listt2);
    132. side2Config.addDefault("online_players", listt2onlp);
    133. this.saveFileConfig();
    134.  
    135. this.saveDefaultConfig();
    136.  
    137. UserConfigClass.setPlugin(this);
    138. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    139. Listener PvpeventsListener = new Pvp(this);
    140. Bukkit.getServer().getPluginManager().registerEvents(PvpeventsListener, this);
    141. Listener ChateventsListener = new Chat(this);
    142. Bukkit.getServer().getPluginManager().registerEvents(ChateventsListener, this);
    143. Listener SpawneventsListener = new Spawn(this);
    144. Bukkit.getServer().getPluginManager().registerEvents(SpawneventsListener, this);
    145. Listener UnsidedeventsListener = new Unsided(this);
    146. Bukkit.getServer().getPluginManager().registerEvents(UnsidedeventsListener, this);
    147. Listener NametagseventsListener = new Nametags(this);
    148. Bukkit.getServer().getPluginManager().registerEvents(NametagseventsListener, this);
    149.  
    150.  
    151.  
    152. manager = Bukkit.getScoreboardManager();
    153. board = manager.getNewScoreboard();
    154. teams1 = board.registerNewTeam(side1f);
    155. teams2 = board.registerNewTeam(side2f);
    156.  
    157.  
    158. for(Player pon : Bukkit.getOnlinePlayers()){
    159. if(listt1.contains(pon.toString())){
    160. teams1.addPlayer(pon);}
    161. else if(listt2.contains(pon.toString())){
    162. teams2.addPlayer(pon);}
    163. }
    164.  
    165. for(OfflinePlayer pof : Bukkit.getOfflinePlayers()){
    166. if(listt1.contains(pof.toString())){
    167. teams1.addPlayer(pof);}
    168. else if(listt2.contains(pof.toString())){
    169. teams2.addPlayer(pof);}
    170. }
    171.  
    172.  
    173. teams1.setPrefix(cpt1f);
    174. teams2.setPrefix(cpt2f);
    175.  
    176. Objective obj = board.registerNewObjective("TS", "dummy");
    177. obj.setDisplayName(ChatColor.GOLD+"["+ChatColor.YELLOW+"TwoSides"+ChatColor.GOLD+"]");
    178. obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    179.  
    180. scoret1 = obj.getScore(Bukkit.getOfflinePlayer(cpt1f+side1f));
    181. scoret1.setScore(listt1.size());
    182. scoret2 = obj.getScore(Bukkit.getOfflinePlayer(cpt2f+side2f));
    183. scoret2.setScore(listt2.size());
    184.  
    185. teams1.setCanSeeFriendlyInvisibles(true);
    186. teams1.setAllowFriendlyFire(false);
    187. teams2.setCanSeeFriendlyInvisibles(true);
    188. teams2.setAllowFriendlyFire(false);
    189.  
    190.  
    191. for(String pName : side1Config.getStringList("players"))
    192. {
    193. Player p = Bukkit.getPlayerExact(pName);
    194. if(!(p == null)){
    195. teams1.addPlayer((Player) p);}
    196.  
    197. OfflinePlayer pf = Bukkit.getOfflinePlayer(pName);
    198. if(!(pf == null)){
    199. teams1.addPlayer((OfflinePlayer) pf);}
    200. }
    201.  
    202. for(String pName : side2Config.getStringList("players"))
    203. {
    204. Player pe = Bukkit.getPlayerExact(pName);
    205. if(!(pe == null)){
    206. teams2.addPlayer((Player) pe);}
    207.  
    208. OfflinePlayer pf = Bukkit.getOfflinePlayer(pName);
    209. if(!(pf == null)){
    210. teams2.addPlayer((OfflinePlayer) pf);}
    211. }
    212.  
    213.  
    214. for(Player online : Bukkit.getOnlinePlayers()){
    215. scoret1.setScore(listt1.size());
    216. scoret2.setScore(listt2.size());
    217. online.setScoreboard(board);
    218. }
    219.  
    220. this.saveDefaultConfig();
    221.  
    222. }
    223.  
    224.  
    225.  
    226. @Override
    227. public void onDisable() {
    228. }
    229.  
    230.  
    231.  
    232.  
    233.  
    234.  
    235.  
    236.  
    237.  
    238.  
    239. // COMMANDS - START ===================================================================
    240.  
    241. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    242.  
    243. String postmside = premside.replace("{Player}", sender.getName());
    244.  
    245.  
    246. if (cmd.getName().equalsIgnoreCase("sidejoin")){
    247. if(sender.hasPermission("side.player.join")){
    248. if(sender instanceof Player){
    249. Player p = (Player) sender;
    250. if(args.length != 1){
    251. sender.sendMessage(ChatColor.GOLD+"Wrong usage, use /sidejoin <side>, available sides are: "+side1f+", "+side2f+".");}
    252. else{
    253. if(teams1.getPlayers().contains(p) || teams2.getPlayers().contains(p)){
    254. if(teams1.getPlayers().contains(p)){
    255. sender.sendMessage(ChatColor.GOLD+"You are already on side: "+side1f+".");}
    256. if(teams2.getPlayers().contains(p)){
    257. sender.sendMessage(ChatColor.GOLD+"You are already on side: "+side2f+".");}
    258. }else{
    259. if(args[0].equalsIgnoreCase(side1f) || args[0].equalsIgnoreCase(side2f)){
    260. if(args[0].equalsIgnoreCase(side1f)){
    261. String postpostmside = postmside.replace("{Side}", args[0]);
    262. String finalmside = ChatColor.translateAlternateColorCodes('&', postpostmside);
    263. teams1.addPlayer(p.getPlayer());
    264. listt1.add(p.getName());
    265. side1Config.set("players", listt1);
    266. sender.sendMessage(finalmside);
    267. }
    268. if(args[0].equalsIgnoreCase(side2f)){
    269. String postpostmside = postmside.replace("{Side}", args[0]);
    270. String finalmside = ChatColor.translateAlternateColorCodes('&', postpostmside);
    271. teams2.addPlayer(p.getPlayer());
    272. listt2.add(p.getName());
    273. side2Config.set("players", listt2);
    274. sender.sendMessage(finalmside);
    275. }
    276. loadFileConfig();
    277. this.saveFileConfig();
    278. }
    279. for(Player online : Bukkit.getOnlinePlayers()){
    280. scoret1.setScore(listt1.size());
    281. scoret2.setScore(listt2.size());
    282. online.setScoreboard(board);
    283. }
    284. }
    285. }
    286.  
    287.  
    288. }else{sender.sendMessage(ChatColor.GOLD+"You must be in game to perform this command.");}
    289. }else{sender.sendMessage(noperm);}
    290. return true;
    291. }
    292. }


    I store my lists in my plugin folder, lists look like this:

    Code:
    players:
        -amatokus

    What I'm trying to do is force a player to join a list, when they have the can do anything they want, but the problem is thant when the do /sidejoin <side>, wich works they are added to the list but they still cant do anything...
     
  12. Offline

    DannyDog

    So you want to prevent players from moving if they're not in a list?
    It looks right...
    What's the error?
     
  13. Offline

    ChipDev

    Don't use names in configs, use UUID's
     
  14. ChipDev

    I'm using 1.7.3 ,and UUID's are not obligatory

    DannyDog ><' I have no errors let me explain,

    1: player connects and is not on any list (he cant move)
    2: player joins a list(but he still can't move) <-----this is what happens (WRONG)
    2': player joins a list(he can now move)<-----this is what should hapen (RIGHT)

    so how can I recheck the events and lists after player has used the command and joins a list?
     
  15. Offline

    EcMiner

    You need to add them to both lists because you coded it so if they are not in list1 they can't move or if they are not in list2 they cant move, but the command will only add them to one list, so lets say you type /sidejoin sidef1 it will add you to list1, but that means you are still not in list2 so it will still cancel it

    EDIT: Or you could change the || operator in playerMove method to && which is probably what you want as you still want to know which list they actually joined
     
  16. EcMiner The strange thing is that with || when I reload it works!

    Maybe is there a way to reload an event?
     
  17. Offline

    EcMiner

    Not sure what you mean by reloading an event but it's probably not possible, once I get home I will read your code and tell you what the problem is, if noone else did yet
     
  18. Maybe I can just simply reload the class?
     
  19. Offline

    EcMiner

    Do you have any other eventhandlers aside from the PlayerMoveEvent handler?
     
  20. EcMiner yes,here is the list:
    -PlayerMoveEvent
    -BlockDamageEvent
    -PlayerInteractEvent
    -EntityDamageByEntityEvent
    -EntityDamageByBlockEvent
    -EntityDamageEvent
    -EntityCombustEvent
    -ExpBottleEvent
    -PlayerPickupItemEvent
    -VehicleEnterEvent
    -VehicleDamageEvent

    Solved I forgot to load my file after saving it ^^'
     
  21. Offline

    DannyDog

Thread Status:
Not open for further replies.

Share This Page