CompatNoCheatPlus
CompatNoCheatPlus (cncp) provides compatibility between the anti cheat plugin NoCheatPlus and other plugins that add game mechanics different to the vanilla game behavior, such as mcMMO or plugins that add npcs such as Citizens. You need NoCheatPlus for this, NoCheatPlus can not be replaced by this.
This plugin is an add-on for NoCheatPlus: NoCheatPlus on BUKKITDEV
Development builds of this project can be acquired at the provided continuous integration server.
These builds have not been approved by the BukkitDev staff. Use them at your own risk.
Development-builds (Jenkins at ci.md-5.net): CompatNoCheatPlus and NoCheatPlus
Features:
- mcMMO:
- Block breaks by abilities should lead to no or almost no alerts anymore.
- Fighting alerts should be reduced.
- Citizens 2:
- NPCs no longer generate check alerts.
- Generic:
- Cancel all check failures for players that are not real players. This should handle a range of NPC creation techniques in general, as exist with Citizens 1.
(Experts: good bit of it is configurable.) - Block breaking and block placing: Plugins that break or place many blocks "in the name of a player" have a better chance to be made compatible by adapting the configuration. Defaults are set for MachinaCraft.
- Bukkit player speed API: Set the fly/walk speeds globally and let NoCheatPlus deal with the rest. (Needs to be enabled in the configuration.)
- Cancel all check failures for players that are not real players. This should handle a range of NPC creation techniques in general, as exist with Citizens 1.
- For configuration reference: Configuration
(Should not be needed usually, but can be used to disable unused hooks, or enable the set-speed hook. - For details on plugin compatibility, see: Details
Spout users
Spout users might encounter problems (nofall / fly working). Try to disable the player-class hook - but i am afraid there might be further incompatibilities at present.
Contributors:
- Welcome!
- Maybe someone wants to join this project ?
Repository: https://github.com/asofold/CompatNoCheatPlus
API: You can register a hook with cncp, which might or might not spare you some coding, cncp will re-enable NoCheatPlus with a delayed sync task, so you can use the PluginEnableEvent to register hooks that can listen on lowest level and be processed before NoCheatPlus. If you don't need these features then you can directly hook into the NoCheatPlus API (introduced in the lates dev builds of NoCheatPlus 3.7). Adding a hook demands further not to put NoCheatPlus into the depend or softdepend parts, returning the NCP hook and the check types should be the first time to access NCP API actively.
Console is writing that some or many features are not supported + nocheatplus is blocking mcmmo features sometimes.
thank you.
@henrikil111222333
Please use a paste for such a long message (text only format).
I am not sure what exactly is the case there. What version of cncp are you using? Can you post the output of the "/cncp" command?
is this nc+ or cnc+`?
org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:207) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) 07.12 12:20:50 [Server] INFO org.bukkit.event.EventException 07.12 12:20:50 [Server] SEVERE Could not pass event PlayerInteractEvent to NoCheatPlus v3.10.5-RC-sMD5NET-b633 07.12 12:20:50 [Server] INFO ... 17 more 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) 07.12 12:20:50 [Server] INFO at java.lang.reflect.Method.invoke(Unknown Source) 07.12 12:20:50 [Server] INFO at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 07.12 12:20:50 [Server] INFO at sun.reflect.GeneratedMethodAccessor598.invoke(Unknown Source) 07.12 12:20:50 [Server] INFO at fr.neatmonster.nocheatplus.checks.blockinteract.BlockInteractListener.onPlayerInteract(BlockInteractListener.java:133) 07.12 12:20:50 [Server] INFO at fr.neatmonster.nocheatplus.checks.blockinteract.Visible.check(Visible.java:103) 07.12 12:20:50 [Server] INFO at fr.neatmonster.nocheatplus.checks.Check.executeActions(Check.java:103) 07.12 12:20:50 [Server] INFO at fr.neatmonster.nocheatplus.checks.Check.executeActions(Check.java:128) 07.12 12:20:50 [Server] INFO Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "fr.neatmonster.nocheatplus.hooks.NCPHookManager.shouldCancelVLProcessing(Lfr/neatmonster/nocheatplus/checks/ViolationData;)Z" the class loader (instance of org/bukkit/plugin/java/PluginClassLoader) of the current class, fr/neatmonster/nocheatplus/checks/Check, and the class loader (instance of org/bukkit/plugin/java/PluginClassLoader) for resolved class, fr/neatmonster/nocheatplus/hooks/NCPHookManager, have different Class objects for the type ocessing(Lfr/neatmonster/nocheatplus/checks/ViolationData;)Z used in the signature 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:415) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:483) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:240) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:594) 07.12 12:20:50 [Server] INFO at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:132) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:117) 07.12 12:20:50 [Server] INFO at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:230) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.Packet14BlockDig.handle(SourceFile:46) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:540) 07.12 12:20:50 [Server] INFO at net.minecraft.server.v1_6_R3.PlayerInteractManager.dig(PlayerInteractManager.java:108) 07.12 12:20:50 [Server] INFO at org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:207) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) 07.12 12:20:50 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) 07.12 12:20:50 [Server] INFO org.bukkit.event.EventException 07.12 12:20:50 [Server] SEVERE Could not pass event PlayerInteractEvent to NoCheatPlus v3.10.5-RC-sMD5NET-b633
@therealspoljo
No i don't think so. This is a flaw in the Bukkit API.
An alternative to using the damage (float+entity) method is to throw the reasonable events first and then use the damage(float) method if not cancelled.
The Bukkit API clearly needs some extensions and redesign on that account, but i don't see how we can work around this.
There can be workarounds like with TNT, but that needs more insight on the code around the damage. What do you use that damage method for?
@asofold
Soo... Is there a "fix" for that?
@spoljo666spoljo I think that can not work, because CraftBukkit will report it as "ENTITY_ATTACK" which is used for close combat.
Bukkit has to be extended to allow damaging entities with specific damage reasons, not just "assume player a punches player b" and "player x somehow got damaged".
@asofold
Does this also work for "player.damage(amount, damager);", cause NCP throws a lot of NoSwing warnings on the "damager"
@fungreenfox
Should not be a problem by itself. What version of mcMMO are you using?
got some trouble with cncp at 172...
http://dev.bukkit.org/paste/8951/
@Incompy
To make NCP compatible the source is best to have, because then we can judge what technique to use...
I made a double jump plugin and I think that my NCP blocks it sometimes, so am I able to make CNCP and my plugin compatible? I can provide the source code of my plugin if you need it.
@BlackFing85
Can you post the bukkitdev url of "a blood plugin" ? If it is not from BukkitDev then i need some other resource (GitHub, ...).
Also can you be more specific what features get blocked and what checks alert for it (you can also use "ncp info PLAYERNAME" to get some hints after it got blocked).
@asofold
Hi! Can you fix the problem with nocheatplus where if you have a blood plugin nocheatplus blocks it? Thanks!
Black,
@RonHutchCraft
Is it not properly updated?
This plugin uses the Bukkit-API and the NCP-API, it does not need constant updating unless the very core internals of the used APIs change. (Same for mcMMO and the linked plugins, though.)
If you find anything that does not work as it should i would be happy to receive a note about it!
I cannot imagine why this plugin is not updated properly...??? NCP is current however. please explain that.
And why is it horroble? Give us some information why you think it's horrible. Just saying 'horrible' won't fix the things that are wrong with the plugin.
@xxMOxMOxx
cncp does not make a difference for worlds but NCP does. The configuration link can be found above in the description.
Does this have multiple world support? If so is there a documentation I can read about it or can someone explain it?
@MyPictures
Yes, i am very busy right now :9. Will try to be there some times.