I made a permission for this, it doesnt work for some reason...

Discussion in 'Plugin Development' started by football70500, Aug 10, 2012.

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

    football70500

    So I made a permission node that if you have it, you dont get any fake messages. Its not working

    Code:JAVA
    1. package me.football7500.FakeOp;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.player.PlayerChatEvent;
    13. import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    14.  
    15.  
    16. public class MyPluginListener implements Listener {
    17.  
    18.  
    19. private final ChatMessage PLUGIN;
    20. public MyPluginListener(ChatMessage instance) {
    21. PLUGIN = instance;
    22. }
    23.  
    24.  
    25. public ArrayList<String> fakeOps = new ArrayList<String>();
    26.  
    27. @EventHandler
    28. public void onPlayerChat(PlayerChatEvent event)
    29. {
    30.  
    31. if(!event.getPlayer().hasPermission("FakeOp.bypass")){
    32.  
    33. }
    34. if(event.getMessage().toLowerCase().contains("can i have op")){
    35. final Player player = event.getPlayer();
    36. Bukkit.getScheduler().scheduleSyncDelayedTask(PLUGIN,
    37. new Runnable() {
    38. public void run() {
    39. if (player.isOnline()) {
    40. player.sendMessage(ChatColor.YELLOW + "You are now op!");
    41. }
    42. }
    43. }, 100L);
    44.  
    45. }
    46.  
    47.  
    48. fakeOps.add(event.getPlayer().getName());
    49. }
    50.  
    51. @EventHandler
    52. public void onPlayerChat1(final PlayerChatEvent event)
    53. {
    54. if(event.getMessage().toLowerCase().contains("i am from planetminecraft")){
    55. event.getPlayer().setBanned(true);
    56. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(PLUGIN, new Runnable(){
    57. public void run(){
    58. event.getPlayer().kickPlayer("Impersonating Planetminecraft Staff.");
    59. }
    60. },120L);
    61. }
    62. }
    63. @EventHandler
    64. public void onCommand(final PlayerCommandPreprocessEvent event) {
    65.  
    66. if(fakeOps.contains(event.getPlayer().getName())){
    67.  
    68. event.setCancelled(true);
    69. event.getPlayer().sendMessage(ChatColor.RED + "You really thought we would give you op?");
    70. event.getPlayer().setBanned(true);
    71. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(PLUGIN, new Runnable(){
    72. public void run(){
    73. event.getPlayer().kickPlayer("Bye Op!");
    74. }
    75. },120L);
    76. }
    77. }
    78. }
     
  2. Offline

    Morthis

    The if statement from lines 31-33 are pointless. All the code underneath it should be between the brackets for that if statement if you don't want this to run on people who have that permission.

    I'm also confused as to why you listen for player chat twice. You can put it all in a single method.
     
  3. Offline

    Dreeass

    You have to make a return; when he doesn't have to permissions to stop the void.
     
  4. Offline

    football70500

    I get this error then,
    PHP:
    2012-08-10 08:31:22 [INFOFakeOpMe is now enabled.
    2012-08-10 08:31:22 [SEVEREPermission node 'fakeop.bypass' in plugin description file for FakeOpMe v1.0 is invalid
    java
    .lang.ClassCastExceptionjava.lang.String cannot be cast to java.util.Map
        at org
    .bukkit.permissions.Permission.loadPermissions(Permission.java:218)
        
    at org.bukkit.plugin.PluginDescriptionFile.getPermissions(PluginDescriptionFile.java:167)
        
    at ru.tehkode.permissions.bukkit.BukkitPermissions$EventListener.onPluginEnable(BukkitPermissions.java:136)
        
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        
    at java.lang.reflect.Method.invoke(Unknown Source)
        
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:322)
        
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:364)
        
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:263)
        
    at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:245)
        
    at net.minecraft.server.MinecraftServer.i(MinecraftServer.java:296)
        
    at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:275)
        
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:225)
        
    at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:140)
        
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:380)
        
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
    Plugin.yml file:
    PHP:
    nameFakeOpMe
    main
    me.football7500.FakeOp.ChatMessage
    version
    1.0
    permissions
    :
      
    fakeop.bypass:
        
    Bypasses the fakeOp message.
    My code:
    Code:JAVA
    1. package me.football7500.FakeOp;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.player.PlayerChatEvent;
    13. import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    14.  
    15.  
    16. public class MyPluginListener implements Listener {
    17.  
    18.  
    19. private final ChatMessage PLUGIN;
    20. public MyPluginListener(ChatMessage instance) {
    21. PLUGIN = instance;
    22. }
    23.  
    24.  
    25. public ArrayList<String> fakeOps = new ArrayList<String>();
    26.  
    27. @EventHandler
    28. public void onPlayerChat(PlayerChatEvent event)
    29. {
    30.  
    31. if(!event.getPlayer().hasPermission("fakeop.bypass")){
    32. return;
    33. }
    34. if(event.getMessage().toLowerCase().contains("can i have op")){
    35. final Player player = event.getPlayer();
    36. Bukkit.getScheduler().scheduleSyncDelayedTask(PLUGIN,
    37. new Runnable() {
    38. public void run() {
    39. if (player.isOnline()) {
    40. player.sendMessage(ChatColor.YELLOW + "You are now op!");
    41. }
    42. }
    43. }, 100L);
    44.  
    45. }
    46.  
    47.  
    48. fakeOps.add(event.getPlayer().getName());
    49. }
    50.  
    51. @EventHandler
    52. public void onPlayerChat1(final PlayerChatEvent event)
    53. {
    54. if(event.getMessage().toLowerCase().contains("i am from planetminecraft")){
    55. event.getPlayer().setBanned(true);
    56. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(PLUGIN, new Runnable(){
    57. public void run(){
    58. event.getPlayer().kickPlayer("Impersonating Planetminecraft Staff.");
    59. }
    60. },120L);
    61. }
    62. }
    63. @EventHandler
    64. public void onCommand(final PlayerCommandPreprocessEvent event) {
    65.  
    66. if(fakeOps.contains(event.getPlayer().getName())){
    67.  
    68. event.setCancelled(true);
    69. event.getPlayer().sendMessage(ChatColor.RED + "You really thought we would give you op?");
    70. event.getPlayer().setBanned(true);
    71. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(PLUGIN, new Runnable(){
    72. public void run(){
    73. event.getPlayer().kickPlayer("Bye Op!");
    74. }
    75. },120L);
    76. }
    77. }
    78. }
     
  5. Offline

    Dreeass

    Do you even read your error? Start learning Java before you start making a plugin.
    Plugin.yml file:
    PHP:
    PHP:
    nameFakeOpMe
    main
    me.football7500.FakeOp.ChatMessage
    version
    1.0
    permissions
    :
      
    fakeop.bypass:
        
    descriptionBypasses the fakeOp message.
     
  6. Offline

    football70500

    I read the error, or else I wouldn't have put in my Plugin.yml file. And I know basic Java. I am asking for help not for someone like you to insult me
     
  7. Offline

    Dreeass

    I'm not insulting you, I'm giving you advice.
     
  8. Offline

    football70500

    I know java so if you arent here to help me, then go away
     
  9. Offline

    Taco

    No need to be rude. He did give you some help, by the way. You were missing "description: " before the permission node description in your plugin.yml
     
  10. Offline

    ZeusAllMighty11

    What does that have to do with Java? That's YAML... o.o
     
  11. Offline

    Dreeass

    You're even too lame to check what I wrote..
     
  12. Offline

    football70500

    I added that and its still not working
     
  13. Offline

    sensus12

    Hmm maybe:

    if(!sender.hasPermissions("your.permissions"){
    sender.sendMessage(ChatColor.AQUA + " You don't have access.");
    }
     
  14. Offline

    CorrieKay

    post your yml changes.
     
  15. Offline

    whitehooder

    This is real easy to fix, just post your plugin.yml and source code once again and I am sure that someone will correct it for you (if not I will ;))
     
  16. Offline

    football70500

    Plugin.yml :

    Code:
    name: FakeOpMe
    main: me.football7500.FakeOp.ChatMessage
    version: 1.0
    permissions:
      fakeop.bypass:
        description: Bypasses the fakeOp message.
    Sawce Code
    Code:JAVA
    1. package me.football7500.FakeOp;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.player.AsyncPlayerChatEvent;
    13. import org.bukkit.event.player.PlayerChatEvent;
    14. import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    15.  
    16.  
    17. public class MyPluginListener implements Listener {
    18.  
    19.  
    20. private final ChatMessage PLUGIN;
    21. public MyPluginListener(ChatMessage instance) {
    22. PLUGIN = instance;
    23. }
    24.  
    25.  
    26. public ArrayList<String> fakeOps = new ArrayList<String>();
    27.  
    28. @EventHandler
    29. public void onPlayerChat(AsyncPlayerChatEvent event)
    30. {
    31.  
    32. if(!event.getPlayer().hasPermission("fakeop.bypass")){
    33. return;
    34. }
    35. if(event.getMessage().toLowerCase().contains("can i have op")){
    36. final Player player = event.getPlayer();
    37. Bukkit.getScheduler().scheduleSyncDelayedTask(PLUGIN,
    38. new Runnable() {
    39. public void run() {
    40. if (player.isOnline()) {
    41. player.sendMessage(ChatColor.YELLOW + "You are now op!");
    42. }
    43. }
    44. }, 100L);
    45.  
    46. }
    47.  
    48.  
    49. fakeOps.add(event.getPlayer().getName());
    50. }
    51.  
    52. @EventHandler
    53. public void onPlayerChat1(final AsyncPlayerChatEvent event)
    54. {
    55. if(event.getMessage().toLowerCase().contains("i am from planetminecraft")){
    56. event.getPlayer().setBanned(true);
    57. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(PLUGIN, new Runnable(){
    58. public void run(){
    59. event.getPlayer().kickPlayer("Impersonating Planetminecraft Staff.");
    60. }
    61. },120L);
    62. }
    63. }
    64. @EventHandler
    65. public void onCommand(final PlayerCommandPreprocessEvent event) {
    66.  
    67. if(fakeOps.contains(event.getPlayer().getName())){
    68.  
    69. event.setCancelled(true);
    70. event.getPlayer().sendMessage(ChatColor.RED + "You really thought we would give you op?");
    71. event.getPlayer().setBanned(true);
    72. Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(PLUGIN, new Runnable(){
    73. public void run(){
    74. event.getPlayer().kickPlayer("Bye Op!");
    75. }
    76. },120L);
    77. }
    78. }
    79. }
    80.  
     
  17. Offline

    CorrieKay

    Just gonna check basics, but are you 100% sure the player has the permission?

    edit: also, just so you know, if they DO have fakeop.bypass, it will nail them, and if they DONT have it, then they'll get off free.

     
  18. Offline

    whitehooder

    What is not working? Are you getting errors or do you still get the messages you don't want to get?
     
  19. Offline

    football70500

    I get the messages I dont want to get
     
  20. Offline

    whitehooder

    As CorrieKay said:
    In case you are not aware of this (very basic java): if you use an exclamation mark (!) in the if statements start, like this:
    Code:
    if (!event.getPlayer().hasPermission("fakeop.bypass")) {
    //some code here
    }
    It means if the player does NOT have the permission, like this:
    Code:
    if (event.getPlayer().hasPermission("fakeop.bypass") == false) {
    //some code here
    }
    I think that this is your case, cause when you have the permission fakeop.bypass with this code you will get the messages as CorrieKay said. If you do not have the permission you wont get them.
     
  21. Offline

    Taco

  22. Offline

    whitehooder

  23. Offline

    football70500

    You confused me
     
  24. Offline

    whitehooder

    If you remove the exclamation mark (!) you will be good to go with whatever you wanted I believe.
     
  25. Offline

    Dreeass

    No, to make your code easier, you have to stop the void/boolean when he doesn't have the permission.
     
Thread Status:
Not open for further replies.

Share This Page