For a long time ago, I learn that player cheat. So, I have create an anticheat, but available only for Spigot.
Now, this is the same anticheat, but for sponge !
Now, this plugin is on Ore !
Detected cheat (1.1.2) :
AntiPotion | Zoot
AutoRegen | Regen
AutoClick
AutoEat
AntiKnockback | NoVelocity
Blink
FastBow | RapidBowShot
Fly
ForceField | KillAura
Jesus | WaterWalk
Spider
Speed
Scaffold
Sneak
FastPlace
Edited Client
There is also a lot of commands:
/negativity : get some informations about the player
/negativity verif [(optional) cheats, by default it’s all] : start detection manually
/mod : mod part (be invisible …)
/ban <def(true/false) | time (ex: 2h5m)> : to ban people
/unban : to unbun the player
/report : to report a player
/suspect
And, when an image is better than a long text:
You’re a developper ?
There an API.
API Informations
Class utils:
Cheat (Enum: com.elikill58.negativity.sponge.utils)
Methods:
String getName()
boolean isActive()
boolean setActive(boolean active)
boolean needPacket()
ItemTypes getMaterial()
Class<?> getProtocolClass()
int getReliabilityAlert()
boolean isSetBack()
boolean setBack(boolean back)
int getAlertToKick()
boolean allowKick()
boolean setAllowKick(boolean allowKick)
boolean isAutoVerif()
boolean setAutoVerif(boolean auto)
static Optional<Cheat> getCheatFromString(String name)
For events:
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();
IMPORTANT: You need PacketGate !
Addons:
Credits:
RedNesto for the help with English translation and development
jheyson for the help with Portuguese translation
SuchHero for the help with Norwegian translation
you for translation too ? (Contact me)​
Contact:
Download:
(I send update here so, if you want to get notification when i make an update, watch my spigot ressource. Why do it ? I forget sometimes to edit all thread about Negativity.)
3 Likes
Hello,
New update !
Release ! Fix and suspection
New features :
Sponge Forge
/suspect : suspect of cheating a player.
A player can be suspected thanks to chat message (you can disable it)
Bug fix :
some Sponge bug
SpeedHack
FastLadders
Forcefield
Some informations :
If there is detection problem, contact me here or on Discord @Elikill58 #0743 or on Twitter…
All version before 1.0 will be revomed soon
nneeoo
October 8, 2018, 6:01pm
3
Very good work. It doesn’t false detect creative gamemode and IC2 quantum armor as cheats.
I think, your plugin deserve more attention. Can you please move it to ore?
Thanks for your opinion !
I will did it for the next version (1.1 which is coming soon) if i don’t forget
1 Like
Thanks, I was struggling with sneak players !
Edit : I got some errors using spongevanilla-1.12.2-7.1.4
, LuckPerms-Sponge-4.2.32
and negativity 1.1.1
.
It looks like that even if database use is set to false, plugin is still trying to connect.
First part of error log : https://pastebin.com/aTdNnXvN
Second part : [23:44:56] [Server thread/ERROR] [Sponge]: Could not pass GameStartingServerEven - Pastebin.com
(Tried with and without packetgate)
Hello,
Sorry for the response time and for the issue. I haven’t receive any mail for your message.
So, have you tried to restart the plugin ? Then, where have you take the plugin ?
SykoUSS
February 23, 2019, 2:06pm
8
@Elikill58 I’m getting the exact same errors as keuterio. I am using the latest versions of sponge vanilla and Negativity.
[09:00:33 ERROR] [STDERR]: java.io.IOException: com.typesafe.config.ConfigException$Parse: Reader: 45: Key 'fly' may not be followed by token: '}' (if you intended '}' to be part of a key or string value, try enclosing the key or value in double quotes)
[09:00:33 ERROR] [STDERR]: at ninja.leaping.configurate.loader.AbstractConfigurationLoader.load(AbstractConfigurationLoader.java:145)
[09:00:33 ERROR] [STDERR]: at ninja.leaping.configurate.loader.ConfigurationLoader.load(ConfigurationLoader.java:58)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.sponge.SpongeNegativity.loadConfig(SpongeNegativity.java:300)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.sponge.SpongeNegativity.onPreInit(SpongeNegativity.java:101)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.listener.GamePreInitializationEventListener_SpongeNegativity_onPreInit80.handle(Unknown Source)
[09:00:33 WARN] [negativity]: Unknow default string value: Translation.no_active_file_name
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:433)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:478)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:248)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postState(SpongeImpl.java:256)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.server.SpongeVanilla.preInitialize(SpongeVanilla.java:122)
[09:00:33 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.handler$onServerLoad$bbj000(SourceFile:1234)
[09:00:33 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(SourceFile:117)
[09:00:33 WARN] [negativity]: Unknow default string value: Translation.default
[09:00:33 ERROR] [STDERR]: at net.minecraft.server.MinecraftServer.run(SourceFile:434)
[09:00:33 WARN] [negativity]: Unknow default string value: Database.column_lang
[09:00:33 ERROR] [STDERR]: at java.lang.Thread.run(Unknown Source)
[09:00:33 WARN] [negativity]: Unknow default boolean value: Translation.active
[09:00:33 ERROR] [STDERR]: Caused by: com.typesafe.config.ConfigException$Parse: Reader: 45: Key 'fly' may not be followed by token: '}' (if you intended '}' to be part of a key or string value, try enclosing the key or value in double quotes)
[09:00:33 WARN] [negativity]: Unknow default boolean value: Translation.use_db
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseError(ConfigDocumentParser.java:201)
[09:00:33 WARN] [negativity]: Unknow default string value: Database.column_perm
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseError(ConfigDocumentParser.java:197)
[09:00:33 WARN] [negativity]: Unknow default string value: Database.column_lang
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseObject(ConfigDocumentParser.java:459)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseValue(ConfigDocumentParser.java:247)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseObject(ConfigDocumentParser.java:456)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseValue(ConfigDocumentParser.java:247)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parseObject(ConfigDocumentParser.java:456)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser$ParseContext.parse(ConfigDocumentParser.java:646)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.ConfigDocumentParser.parse(ConfigDocumentParser.java:14)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.Parseable.rawParseValue(Parseable.java:260)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.Parseable.rawParseValue(Parseable.java:248)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:180)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:174)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.impl.Parseable.parse(Parseable.java:299)
[09:00:33 ERROR] [STDERR]: at com.typesafe.config.ConfigFactory.parseReader(ConfigFactory.java:622)
[09:00:33 ERROR] [STDERR]: at ninja.leaping.configurate.hocon.HoconConfigurationLoader.loadInternal(HoconConfigurationLoader.java:174)
[09:00:33 ERROR] [STDERR]: at ninja.leaping.configurate.hocon.HoconConfigurationLoader.loadInternal(HoconConfigurationLoader.java:55)
[09:00:33 ERROR] [STDERR]: at ninja.leaping.configurate.loader.AbstractConfigurationLoader.load(AbstractConfigurationLoader.java:136)
[09:00:33 ERROR] [STDERR]: ... 14 more
[09:00:33 ERROR] [STDERR]: java.lang.NullPointerException
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.universal.adapter.SpongeAdapter.getFinalNode(SpongeAdapter.java:69)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.universal.adapter.SpongeAdapter.getStringListInConfig(SpongeAdapter.java:137)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.universal.TranslatedMessages.<clinit>(TranslatedMessages.java:14)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.universal.adapter.SpongeAdapter.loadLang(SpongeAdapter.java:200)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.universal.adapter.Adapter.setAdapter(Adapter.java:22)
[09:00:33 ERROR] [STDERR]: at com.elikill58.negativity.sponge.SpongeNegativity.onPreInit(SpongeNegativity.java:102)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.listener.GamePreInitializationEventListener_SpongeNegativity_onPreInit80.handle(Unknown Source)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:433)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:478)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:248)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postState(SpongeImpl.java:256)
[09:00:33 ERROR] [STDERR]: at org.spongepowered.server.SpongeVanilla.preInitialize(SpongeVanilla.java:122)
[09:00:33 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.handler$onServerLoad$bbj000(SourceFile:1234)
[09:00:33 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(SourceFile:117)
[09:00:33 ERROR] [STDERR]: at net.minecraft.server.MinecraftServer.run(SourceFile:434)
[09:00:33 ERROR] [STDERR]: at java.lang.Thread.run(Unknown Source)
[09:00:34 INFO] [STDOUT]: [Negativity] Error while connection to the database.
[09:00:34 ERROR] [STDERR]: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=127.0.0.1)(port=3306)(type=master) : Connection refused: connect
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:156)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:118)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.throwException(ExceptionMapper.java:92)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.Driver.connect(Driver.java:111)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect.enabled
[09:00:34 ERROR] [STDERR]: at java.sql.DriverManager.getConnection(Unknown Source)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect_command
[09:00:34 ERROR] [STDERR]: at java.sql.DriverManager.getConnection(Unknown Source)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect.chat
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.Database.connect(Database.java:21)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect.with_report_cmd
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.Database.init(Database.java:56)
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.UniversalUtils.init(UniversalUtils.java:115)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect.enabled
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.sponge.SpongeNegativity.onPreInit(SpongeNegativity.java:103)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect_command
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.listener.GamePreInitializationEventListener_SpongeNegativity_onPreInit80.handle(Unknown Source)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect.chat
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95)
[09:00:34 WARN] [negativity]: Unknow default boolean value: suspect.with_report_cmd
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:433)
[09:00:34 WARN] [negativity]: Unknow default string value: Database.column_lang
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:478)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:248)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postState(SpongeImpl.java:256)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.server.SpongeVanilla.preInitialize(SpongeVanilla.java:122)
[09:00:34 ERROR] [Sponge]: Could not pass GamePreInitializationEvent$Impl to Plugin{id=negativity, name=Negativity, version=1.1.1, description=It's an Advanced AntiCheat Detection, authors=[Elikill58, RedNesto], source=mods\Negativity.jar}
java.lang.ExceptionInInitializerError: null
at com.elikill58.negativity.sponge.SpongeNegativity.onPreInit(SpongeNegativity.java:105) ~[SpongeNegativity.class:?]
at org.spongepowered.common.event.listener.GamePreInitializationEventListener_SpongeNegativity_onPreInit80.handle(Unknown Source) ~[?:?]
at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) ~[RegisteredListener.class:1.12.2-7.1.5]
at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:433) ~[SpongeEventManager.class:1.12.2-7.1.5]
at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:478) ~[SpongeEventManager.class:1.12.2-7.1.5]
at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:248) ~[SpongeImpl.class:1.12.2-7.1.5]
at org.spongepowered.common.SpongeImpl.postState(SpongeImpl.java:256) ~[SpongeImpl.class:1.12.2-7.1.5]
at org.spongepowered.server.SpongeVanilla.preInitialize(SpongeVanilla.java:122) ~[SpongeVanilla.class:1.12.2-7.1.5]
at net.minecraft.server.dedicated.DedicatedServer.handler$onServerLoad$bbj000(SourceFile:1234) ~[nz.class:?]
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(SourceFile:117) ~[nz.class:?]
at net.minecraft.server.MinecraftServer.run(SourceFile:434) ~[MinecraftServer.class:?]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.NullPointerException
at com.elikill58.negativity.sponge.utils.Cheat.<init>(Cheat.java:63) ~[Cheat.class:?]
at com.elikill58.negativity.sponge.utils.Cheat.<clinit>(Cheat.java:18) ~[Cheat.class:?]
... 12 more
[09:00:34 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.handler$onServerLoad$bbj000(SourceFile:1234)
[09:00:34 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(SourceFile:117)
[09:00:34 ERROR] [STDERR]: at net.minecraft.server.MinecraftServer.run(SourceFile:434)
[09:00:34 ERROR] [STDERR]: at java.lang.Thread.run(Unknown Source)
[09:00:34 ERROR] [STDERR]: Caused by: java.sql.SQLException: Could not connect to address=(host=127.0.0.1)(port=3306)(type=master) : Connection refused: connect
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1036)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:483)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.Driver.connect(Driver.java:106)
[09:00:34 ERROR] [STDERR]: ... 17 more
[09:00:34 ERROR] [STDERR]: Caused by: java.net.ConnectException: Connection refused: connect
[09:00:34 ERROR] [STDERR]: at java.net.DualStackPlainSocketImpl.connect0(Native Method)
[09:00:34 ERROR] [STDERR]: at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.PlainSocketImpl.connect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.SocksSocketImpl.connect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.Socket.connect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at java.net.Socket.connect(Unknown Source)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:401)
[09:00:34 ERROR] [STDERR]: at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1029)
[09:00:34 ERROR] [STDERR]: ... 19 more
[09:00:34 ERROR] [STDERR]: java.lang.NullPointerException
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.adapter.SpongeAdapter.getFinalNode(SpongeAdapter.java:69)
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.adapter.SpongeAdapter.getStringListInConfig(SpongeAdapter.java:137)
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.TranslatedMessages.init(TranslatedMessages.java:23)
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.universal.UniversalUtils.init(UniversalUtils.java:119)
[09:00:34 ERROR] [STDERR]: at com.elikill58.negativity.sponge.SpongeNegativity.onPreInit(SpongeNegativity.java:103)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.listener.GamePreInitializationEventListener_SpongeNegativity_onPreInit80.handle(Unknown Source)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:433)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:478)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:248)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.common.SpongeImpl.postState(SpongeImpl.java:256)
[09:00:34 ERROR] [STDERR]: at org.spongepowered.server.SpongeVanilla.preInitialize(SpongeVanilla.java:122)
[09:00:34 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.handler$onServerLoad$bbj000(SourceFile:1234)
[09:00:34 INFO]: Configuration file loaded.
[09:00:34 ERROR] [STDERR]: at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(SourceFile:117)
[09:00:34 INFO]: THE CONFIG FILE CONTAINS UNSET VALUES - YOU MUST FIX THEM BEFORE THE PLUGIN WILL WORK !!!
[09:00:34 INFO] [skyclaims]: SkyClaims 0.27.2-S7.0-BETA is initializing...
[09:00:34 ERROR] [STDERR]: at net.minecraft.server.MinecraftServer.run(SourceFile:434)
[09:00:34 ERROR] [STDERR]: at java.lang.Thread.run(Unknown Source)
Hello,
For all people: i find the problem thanks to @SykoUSS :
There is a “}” too much in line 46 in the file “ru_RU.yml”.
If you cannot edit this file because it have not been copied, try to remove the “ru_RU” in main config line 208.
Else, you can download a beta version of the plugin here: https://cdn.discordapp.com/attachments/361214674076827650/549229717002125312/Negativity.jar
Finally, my plugin is also on Ore ! I will edit the first message to make it up to date.
(link: Elikill58 / Negativity )
1 Like