AC - Negativity [Spigot 1.7-1.15, Sponge, BungeeCord & Velocity] 1.8.1

It's an anti cheat !

  1. Elikill58
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    Source Code:
    https://github.com/Elikill58/Negativity
    Contributors:
    RedNesto
    Languages Supported:
    French, Portuguese, Norwegian, Russian, Chinese, German, Dutch, Swedish, Spanish, Vietnamese and Polish

    banniere_twitter_neg_3.png
    Please, use latest version !
    Cauldron isn't successfully supported

    Problem ? Come on discord : Join now

    You need PacketGate on Sponge only

    List with explication about the cheat : https://github.com/Elikill58/Negativity/wiki/Cheat

    - AirJump
    - AntiKnockback
    - AntiPotion
    - AutoClick
    - AutoSteal
    - Blink
    - Chat (Insult & Spam)
    - Critical
    - FastBow
    - FastEat
    - FastLadder
    - FastPlace
    - FastStairs
    - Fly
    - ForceField | KillAura
    - InventoryMove
    - Jesus
    - NoFall
    - NoPitchLimit
    - NoSlowDown
    - NoWeb
    - Nuker
    - Phase
    - Regen
    - Scaffold
    - Sneak
    - Speed
    - Spider
    - Step
    - XRay

    - If you want to check a player :
    (WARN: use it to enable detection if they are not in auto verif)
    /negativity verif <player> [(optional) cheats, by default it's all cheats]

    - If you want to get some information about a player:
    /negativity <player>

    - If you want to Show/Hide alert:
    /negativity alert

    - If you want to report someone:
    /report <player> <reason>

    - If you want to do some mod thing (be invisible...):
    /mod

    - To ban people:
    /nban <player> <def(true/false) | time (ex: 2h5m)> <reason>
    - To unban people:
    /nunban <player>

    [​IMG]

    I have a testing server: server.negativity.fr hosted by :

    [​IMG]
    (SponsorShip)
    [​IMG]

    Video about Negativity


    Thanks HuyMCYTB for this video​

    Click here to see default config

    Everything is editable !

    There are permissions for all cheat.
    The first line in config is the most important. There is: if you want to log alert, if you want to disable /report and the whole permission system (Default system used by PermissionEx, GroupManager ... and other) with SQL support.
    For permissions:
    • showAlert: with it, you can see all alerts
    • verif: with it, you can activate checks on all players
    • mod: with it, you can do /mod
    • manageCheat: with it, you have a cheat manager in /mod, to edit this config but in game
    • report_wait: with it, you don't need to wait between 2 reports
    • bypass: with one of them, you bypass the alert of the specified part (for example, with bypass.forcefield, you bypass all alerts of forcefield)
    There is a translation system !
    • You can disable it
    • Unlimited lang
    • Available with SQL
    • Default lang (English, en_US)
    You can enable and disable Bungeecord (You will get warn if you put the plugin on bungeecord).

    Then, there is a big part for all cheats:
    • exact_name: The display name
    • isActive: if you want to disable it
    • reliability_alert: required reliability to see alert
    • autoVerif: if the plugin auto check if player is using this cheat
    • setBack: rollbacks the cheat action (for fly, it's to tp the player on ground)
    • kick: if we must kick the player
    • alert_to_kick: required alert to kick the player

    There is a wiki AND the code on github (link on the top of the page)

    All player have a NegativityPlayer which extend of NegativityAccount.
    Code (Text):
    NegativityPlayer methods: (Must to be used with the NegativityPlayer of your platform like SpigotNegativityPlayer)
    NegativityAccount getAccount()
    Object getPlayer()
    boolean hasDefaultPermission(String s)
    int getWarn(Cheat c)
    double getLife()
    String getName()
    String getGameMode()
    float getWalkSpeed()
    int getLevel()
    void kickPlayer(String reason, String time, String by, boolean def)
    void banEffect()
    void startAnalyze(Cheat c)
    void startAllAnalyze()
    void updateMinerateInFile()
    boolean isOp()

    NegativityAccount methods:
    String getUUID()
    String getLang()
    UUID getPlayerId()
    void setLang(String lang)
     
    All cheats are extend "com.elikill58.negativity.universal.Cheat"

    You can get all cheats thanks to Cheat.values().
    To get a special cheat, there is 2 way:
    1) By the cheat key (key directly from code) :
    Cheat.forKey(CheatKeys.THE_CHEAT);

    2) By the cheat name of alias (string from chat for example)
    Cheat.fromString(myString);

    Both will return the Cheat or null if they don't find it.

    Code (Text):
    // Methods in object Cheat

    String getKey()
    String getName()
    CheatCategory getCheatCategory()
    String[] getAliases()
    boolean isActive()
    boolean setActive(boolean active)
    boolean hasListener()
    boolean needPacket()
    Object getMaterial()
    int getReliabilityAlert()
    boolean isSetBack()
    boolean setBack(boolean back)
    int getAlertToKick()
    boolean allowKick()
    boolean setAllowKick(boolean allowKick)
    boolean isAutoVerif()
    boolean setAutoVerif(boolean auto)
    boolean isBlockedInFight()
    int getMaxAlertPing()
     
    There is other usefull things :

    Code (Text):
    Database.connect(String url, String username, String password) // you don't need to use this method if you have edit the config file
    Connection Database.getConnection()
    About permission :
    Code (Text):
    "com.elikill58.negativity.universal.permissions.Perm"

    boolean hasPerm(NegativityPlayer np, String perm)
    boolean hasPermLocal(NegativityPlayer np, String perm, Object value)
     
    About ban system :
    A new wiki is coming soon, more informations here !

    Finally, there is utils methods in "com.elikill58.negativity.universal.utils.UniversalUtils"
    Code (Text):

    boolean isInteger(String s)
    boolean isLong(String s)
    boolean hasInternet()
    boolean isBoolean(String s)
    boolean getFromBoolean(String s)
    Os Os.getOs()
     

    All player have a NegativityPlayer. On spigot, it's SpigotNegativityPlayer :

    Code (Text):
    // static methods :
    SpigotNegativityPlayer getNegativityPlayer(Player p)
    SpigotNegativityPlayer getNegativityPlayer(OfflinePlayer p)

    // methods of SpigotNegativityPlayer
    void initMods(Player p)
    void updateCheckMenu()
    getAllWarn(Cheat c) // current and saved warn
    void addWarn(Cheat c, int reliability)
    void setWarn(Cheat c, int cheats)
    void updateMinerateInFile()
    void clearPackets()
    void makeAppearEntities()
    void spawnRandom()
    void spawnRight();
    void spawnBehind();
    void spawnLeft()
    String getRandomFakePlayerName()
    void removeFakePlayer(FakePlayer fp)
    void logProof(String msg)
    void saveProof(boolean sendStats)
    void sendMessage(String msg, String... arg)
    void destroy(boolean isBan)
    boolean hasOtherThan(Location loc, Material m) // block of the specified type just around
    boolean hasOtherThanExtended(Location loc, Material m) // block of the specified type 2 blocks around
    boolean has(Location loc, Material... ms)
    void spawnCircle(double d, Location loc)
    boolean hasAntiKnockbackByPass()
    boolean isBlock(Material m)
    void fight()
    void unfight()
    // others methods

    FlyingReason :
    POTION, REGEN, EAT, BOW
    Cheat getCheat()

     
    SpigotNegativity static methods:
    Code (Text):

    boolean alertMod(ReportType type, Player p, Cheat c, int reliability, String proof) // return "true" if must cancel action
    boolean alertMod(ReportType type, Player p, Cheat c, int reliability, String proof, String hover_proof) // return "true" if must cancel action
    void sendMessage(Player p, String cheatName, String reliability, String ping, String hover) // a bungeecord message
    void sendReportMessage(Player p, String reportMsg)
    void logProof(SpigotNegativityPlayer np, ReportType type, Player p, Cheat c, int reliability,String proof, int ping)
     
    There is 3 Event when a player is cheating.
    Firstly, "PlayerCheatEvent" is called. You can only get information.
    Then, "PlayerCheatAlertEvent" is called. With it, you can get information about the cheat and the cheater and say if you want to cancel the alert.
    Lastly, "PlayerCheatKickEvent" is called. It's the same as PlayerCheatAlertEvent but with the kick of the player.
    For information: if in the config, there is that the kick is disabled, by default, if you don't interact with this event, the kick will not appear.
    All available method for theses event:
    Code (Text):
    // in PlayerCheatEvent

    Player getPlayer()
    int getReliability()
    Cheat getCheat()
    Code (Text):
    // in PlayerCheatAlertEvent

    Player getPlayer()
    int getReliability()
    Cheat getCheat()
    boolean isCancelled()
    void setCancelled(boolean cancel)
    boolean hasPermToBypass()
    boolean hasManyReliability()
    boolean isAlert()
    void setAlert(boolean alert)
     
    Code (Text):
    // in PlayerCheatEvent

    Player getPlayer()
    int getReliability()
    Cheat getCheat()
    boolean isCancelled()
    void setCancelled(boolean cancel)
     
    Code (Text):
    // in PlayerPacketsClearEvent

    Player getPlayer()
    SpigotNegativityPlayer getNegativityPlayer()
    HashMap<String, Integer> getPackets()
     
    Finally, there is utils methods in "com.elikill58.negativity.spigot.utils.Utils"
    Code (Text):

    int getMultipleOf(int i, int multiple, int more)
    String coloredMessage(String msg)
    List<String> coloredMessage(String... messages)
    ItemStack createItem(Material m, String name, String... lore)
    ItemStack createItem(Material m, String name, int quantite, String... lore)
    ItemStack createItem(Material m, String name, int amount, byte b, String... lore)
    List<Player> getOnlinePlayers()
    ItemStack createSkull(String name, int amount, String owner, String... lore)
    int getPing(Player p)
    Object getWorldServer(Location loc)
    int parseInPorcent(int i)
    int parseInPorcent(double i)
    void sendPacket(Player p, String packetdir, Class<?> type, Object send)
    void sendPacket(Player p, Object packet)
    Object getPlayerConnection(Player p)
    Class<?> getEnumPlayerInfoAction()
    Material getMaterialWith1_15_Compatibility(String... materials)
    Effect getEffect(String effect)
    Optional<Cheat> getCheatFromName(String s)
    Optional<Cheat> getCheatFromItem(Material m)
    void sendUpdateMessageIfNeed(Player p)
    double getLastTPS()
    double[] getTPS()
    String getInventoryTitle(InventoryView inv)
    String getInventoryName(InventoryClickEvent e)
    // Others usefull methods

     

    With Sponge, it's a little bit different.

    The main difference is here. I'm using the system of Sponge, so:
    Code (Text):
    PlayerCheatEvent (AbstractEvent, TargetPlayerEvent)

    Cause getCause() // With: The plugin, and the player
    Player getTargetEntity()
    Cheat getCheat()
    int getReliability()

    ////////////////////////////////////

    PlayerCheatEvent.Alert (PlayerCheatEvent, Cancellable)

    boolean isCancelled()
    void setCancelled(boolean cancel)
    boolean isAlert()
    void setAlert(boolean alert)
    boolean hasManyReliability()
    boolean hasPermToBypass()

    (+ all PlayerCheatEvent method)

    ////////////////////////////////////////

    PlayerCheatEvent.Kick (PlayerCheatEvent, Cancellable)

    boolean isCancelled()
    void setCancelled(boolean cancel)

    (+ all PlayerCheatEvent method)

    ////////////////////////////////////////

    PlayerPacketsClearEvent

    Player getPlayer();
    SpongeNegativityPlayer getNegativityPlayer();

     
    I'm working on it everyday (When i have the time to) !
    You have a suggestion ? A bug ? A question ? You can contact me via :
    • Private messages on this web site
    • The negativity twitter (account) : @elinegativity
    • My discord server : Join now
    • Mail: [email protected]
    • Discord: @Elikill58#0743
    • Privacy Policy (In writing, link maybe not work) : English | Français
    Donations : (Thanks you <3)
    [​IMG]

    Download wall:

    100 : Thanks you ;)
    500 : :confused: Merci
    600 : :cool::cool: Gracias
    700 : :eek: Danke
    800 : Arigato :D
    900 : tack :)
    1000 : grazie :eek:
    1500 : Obrigado
    2000 : þakka þér
    2500 : cảm ơn bạn
    3000 : terima kasih
    3500 : Շնորհակալություն​
    4000: děkuji
    4500 : rahmat
    5000 : sağol
    5500 : σας ευχαριστώ
    6000 : 谢谢 :D
    6500 : спасибо :')
    7000 : شكرا
    7500 : kiitos
    8000 : takk
    8500 : mulțumesc
    9000 : təşəkkür edirəm
    9500 : eskerrik asko
    10000 : 고맙습니다
    20000 : siyabonga
    30000 : sağol
    40000 : tapadh leibh
    Too many download :eek:

    Special thanks to:
    - RedNesto for the help with English translation and development
    - jheyson for the help with Portuguese translation
    - SuchHero for the help with Norwegian translation
    - VidTu for the help with Russian translation
    - f0rb1d, SGYRE & 沐白Dust for the help with Chinese translation​
    - CodingAir for the help with German translation
    - DeveloperBoy for the help with Dutch translation
    - YungSloop for the help with Swedish translation
    - SolitaSolaa for the help with Spanish translation
    - HuyMCYTB#7592 for the help with Vietnamese translation
    - Herobrine99dan#1564 for the help with Italian translation
    - you for your translation too ? (Contact me)​

    Images

    1. tableau_negativity  3.png
    egor123, ErzenX, HazielKaos and 7 others like this.

Recent Reviews

  1. rhhthhrdd
    rhhthhrdd
    5/5,
    Version: 1.8
    really good plugin but i have a problem: when i do /negativity reload it says reload completed but then the anti cheat no longers work and i have to restart the server. please help me
    1. Elikill58
      Author's Response
      Hello,
      I'm happy to hear that you like my plugin !
      Thanks for report ! Can you come on my discord server for quickly fix. Nothing works ?
      Do you have empty file config ?
  2. ThatOverPowered
    ThatOverPowered
    5/5,
    Version: 1.8
    Thanks for keeping this plugin updated, love you!
    Lets be honest: Its not perfect, sometines drops a false positive, but its doing his work pretty good. Keep it alive!
    1. Elikill58
      Author's Response
      Hello,
      Thanks you to, for all good waves !
      I know that it isn't perfect, report to me all false positive and they will be fixed !
      I will keep it alive ;)
  3. HuyMCYTB
    HuyMCYTB
    5/5,
    Version: 1.8
    Very good plugin, i'm using it for my bungee server.
    It will be better if you can:
    - Add AntiSwear to Chat: prevents player say bad words, swearing.
    - Add AntiForceOP: prevents player get OP by clicking the sign or book.
    - Add AntiBugDame: some players use it to get more damage in one hit(most in ThePit).
    - One client with one IP, if someone logged in with 2 accounts on the same IP, Neg will block the 2nd client.
    - AntiBot: anti bots, join bots, bot net...
    Sometimes its detect false positives.
    I will always report FP and bugs to you.
    1. Elikill58
      Author's Response
      Hello, I'm happy to see that you like it !
      For your suggestion, some of them are pretty good, and i'mm already working on it ;)
      For false positive, tell me, i will fix it
  4. LanoHere
    LanoHere
    4/5,
    Version: 1.7
    Many, many many fake alerts. But it works at it should.

    It's better to get many fake alerts than nothing while someone is cheating.
    1. Elikill58
      Author's Response
      Hello,
      Happy to hear that the plugin works well for you !
      Can you tell me fake alert ? (in private message or on discord: https://discord.gg/KHRVTX2) I will fix it :)
  5. JackTYM
    JackTYM
    3/5,
    Version: 1.7
    Although the anti-cheat sometimes gives off fake alerts, it is very well made and helpful. The only thing I would like to request or figure out how to do if it is already a feature, is one, the ability to trigger alerts on and off, and two the ability to turn off alerts for staff, so ops cannot get alerts for hacks. Other than that I love the plugin and hopefully you can add these features!
    1. Elikill58
      Author's Response
      Hello,
      To hide alert, use /negativity alert (same command to show it again).
      To bypass alert, go in config, then enable bypass :)
  6. Foxotic
    Foxotic
    1/5,
    Version: 1.6.1
    Fake app? What the heck? Pings literally everyone playing considered cheating and seeing a random steve flash on my screen? Like is this some kind of herobrine troll plugin? stupid
    1. Elikill58
      Author's Response
      Hello,
      I just made an update which fix a lot of false positive and problem. Check it and edit your review about it ;)
      But NO, it's not a fake app !
  7. JUDSHUHGUAGAHGAH
    JUDSHUHGUAGAHGAH
    1/5,
    Version: 1.6.1
    Bad plugin it spams my chat and it says im using chat dont use this if you want ur chat spammed and it doesnt even work
    1. Elikill58
      Author's Response
      Hello,
      Can you precise what doesn't work ?
      Chat appear when you send the same message 2 times or more at follow.
  8. Magicey
    Magicey
    3/5,
    Version: 1.6.1
    Negatives:
    Its not the best of plugins. It alerts falsely and i've tried to fix it. When you do /speed 10, with the essentials plugin, it comes up with the alerts and completely floods chat. The owner is very well active though so these problems could be fixed. Another is that sometimes the checks come up falsely more than average, I understand that sometimes anti-cheats do that, but it is very consistent. Everytime you jump up a block it comes up with checks for 'step'. Also, everytime you chat while typing quick it thinks your a spam bot.

    Positives:
    But the reason I didnt rate it at 1 star is because there are some positive aspects to this plugin, like the fact that you can check what mods they have and you can check if they are in combat. I love the commands, but maybe you could add something like a /alerts off or enable and disable checks via GUI in-game.
    1. Elikill58
      Author's Response
      Hello,
      Thanks you for rating. For false positive and the option to enable/disable alert, i'm currently working (on both). For /speed's essentials command, it's strange but i will fix it.
      Just, there isn't any spam bot detection, only if you send the same message more than 2 times.
  9. __Vekster007__
    __Vekster007__
    5/5,
    Version: 1.6.1
    Wonderful anti-cheat!
    I would very much like to see fewer false positives on speed (on spigot 1.15.2, the check can't be used)! Fewer false positives but a lot of critical and fastplace! Nuker probably needs improvement, too. Thank you for improving your plugin!
    1. Elikill58
      Author's Response
      Hello,
      Really thanks you for for your rating :) I've happy to see that you like my plugin ! For Speed, FastPlace & Critical false positive, I will be very happy to have more information about when they appear.
      For Nuker, it's not my priority, but i will see what i can do
  10. vobshestve
    vobshestve
    3/5,
    Version: 1.6.1
    I wanted to test such an anti-cheat on a test server, I turned on the pop-off cheat itself and this is what happened: it does not display killaura, step confuses sneak with the rest and has not yet verified it. And yes, you can be a tester? I will experience anti-cheat.
    1. Elikill58
      Author's Response
      Hello, thanks for rating ! For the test server, i'm working on it to upgrade it, because now it's just a server with negativity xd