Skip to content

Instantly share code, notes, and snippets.

@asofold
asofold / error.txt
Last active May 14, 2017 19:04
ProtocolLib 359 / Spigot 1.12-pre2 / NCP +- random
[20:37:22] [Netty Epoll Server IO #1/INFO]: Error Unable to inject incoming channel [id: 0x634c33ef, L:/127.0.0.1:25565 - R:/127.0.0.1:51844]. (java.lang.IllegalArgumentException: Unable to find NetworkManager in [id: 0x634c33ef, L:/127.0.0.1:25565 - R:/127.0.0.1:51844]) occured in com.comphenix.protocol.injector.netty.ProtocolInjector@3a095a5e.
[20:37:22] [Netty Epoll Server IO #1/ERROR]: [ProtocolLib] INTERNAL ERROR: Unable to inject incoming channel [id: 0x634c33ef, L:/127.0.0.1:25565 - R:/127.0.0.1:51844].
If this problem hasn't already been reported, please open a ticket
at https://github.com/dmulloy2/ProtocolLib/issues with the following data:
Stack Trace:
java.lang.IllegalArgumentException: Unable to find NetworkManager in [id: 0x634c33ef, L:/127.0.0.1:25565 - R:/127.0.0.1:51844]
at com.comphenix.protocol.injector.netty.InjectionFactory.findNetworkManager(InjectionFactory.java:209)
at com.comphenix.protocol.injector.netty.InjectionFactory.fromChannel(InjectionFactory.java:142)
at
@asofold
asofold / NoSuchMethodError.txt
Created May 14, 2017 12:58
Exception client disconnext (reset by peer) with Spigot 1.12-pre2 and ProtocolLib b357
[14:44:47] [Netty Epoll Server IO #1/WARN]: Failed to initialize a channel. Closing: [id: 0xb2d21512, L:/127.0.0.1:25565 - R:/127.0.0.1:37390]
java.lang.NoSuchMethodError: com.google.common.base.Objects.toStringHelper(Ljava/lang/Object;)Lcom/google/common/base/Objects$ToStringHelper;
at com.comphenix.protocol.events.ListeningWhitelist.toString(ListeningWhitelist.java:241) ~[?:?]
at java.lang.String.valueOf(String.java:2994) ~[?:1.8.0_131]
at java.lang.StringBuilder.append(StringBuilder.java:131) ~[?:1.8.0_131]
at com.comphenix.protocol.reflect.PrettyPrinter.printValue(PrettyPrinter.java:273) ~[?:?]
at com.comphenix.protocol.reflect.PrettyPrinter.printObject(PrettyPrinter.java:246) ~[?:?]
at com.comphenix.protocol.reflect.PrettyPrinter.printObject(PrettyPrinter.java:251) ~[?:?]
at com.comphenix.protocol.reflect.PrettyPrinter.printObject(PrettyPrinter.java:251) ~[?:?]
at com.comphenix.protocol.reflect.PrettyPrinter.printValue(PrettyPrinter.java:285) ~[?:?]
@asofold
asofold / ncp-further.md
Last active April 28, 2017 11:28
ncp-further.md

In general we have way too few manpower, still i'm not going to cut down the concepts i set for NCP, just because no one is joining in, unless i'll drop this entirely. The slight problem is, that "developers" are sucked in by paid resources and private jobs, and especially with anti cheating it looks like most fall for the 'easy edge' with fast reacting fast-to-bypass measures - strategically it gives them money, because people pay for the ban count, but it makes the open source part less attractive. This problem gets more severe if people are allowed to advertise in malicious ways, e.g. relating to NCP in overly generalized fashion or even with outright false claims, while avoiding any discussion/arguments - that's a problem because spigotmc forums is closely tied to the spigot server mod, and can't really be seen as separated. I don't really intend to provide the punch bag plugin, while people build up their idiot-narratives - opposition and strategy could be applied, but all this is making things more comp

@asofold
asofold / NCP-adjust-set-back.md
Last active April 25, 2017 22:16
NoCheatPlus moving checks: Adjust a set-back location (SurvivalFly).

Adjust a set-back location, using a hook. This should be a short round up on what can / should / shouldn't be done.

Related commits (at the time of writing this):

It's enough to use MovingData.setTeleported to override the set-back location of a player. However this should only be done if IViolationData.willCancel() returns true - don't cancel violation processing just for adjusting a set-back, don't teleport the player, just determine where to put and call that one method. This will be in from build 1088 on.

You may still want to exclude some pitfalls, like not setting players into blocks - in this case reading on could be useful. Otherwise just forget about the rest that's written below.

@asofold
asofold / Judge skill.md
Last active April 21, 2017 10:58
Skill judge

Think ahead of letting players play some kind of mini games before being allowed to the arena - the games vary in difficulty and allow judging the skill, they also must be made such, that it's difficult to turn on/off cheats selectively in realy time, and there need to be near-impossible tasks involved. Possibly too complex with latency in mind, but just using statistics of acting within those contexts, could be interesting to compare. Spin it further and let players play the actual tournament in groups according to the estimated difficulty - and relate their behavior of mini-game vs. arena - this also could be done 'lazily' on top of past data sets. Not limited to classic methods.

These kind of minigames only make sense, if they're easy to replace, so clients can't adapt too easily.

@asofold
asofold / hacc-2017-03.md
Created April 21, 2017 10:40
More about hacc as it is currently (2017-03 +-)

More about hacc as it is currently (2017-03 +-):

The survivalfly check (+-abstraction) provides a "base speed", which only is about what a player can run at without using special technique like extra jumping, i.e. not necessarily the finally allowed speed. For hacc we feed 1.0 whenever we're below the allowed base speed, and actual/base if we're above (correct me if i am mistaken). Roughly all 20 or 30 moves we check where we are at, also think of some resetting logic existing and possibly workarounds for medium entry with higher speed. At least something like that is the conception. This way we don't need to account for short-term specialties like double-bunny and bunny-ho and so on, but we can limit the average thing.

This seems to be somewhat effective, haven't tried to push the border to the lowest thinkable thing, yet - there may be improvements taking account for height differences of the environment or what not, or to have both a shorter term and a longer term observation thing, to ensure bursts only

@asofold
asofold / ncp1072-moving-issues.md
Last active April 6, 2017 16:29
ncp1072-moving-issues

Reason for having this is:

  • Spigot server now makes altering the end point of a move a "PLUGIN" type teleport, while it had been an "UNKNOWN" type teleport. In effect other plugins will activate teleport based features, assuming a feature based teleport, e.g. with resetting a /back location to where the player just was. Apart from enabling /back based cheats like "/back-glide" in theory, this is a highly undesirable situation, because it kills off either plugins features (disable fly check or disable feature plugins, due to not being able to distinguish).

So directions i am considering are:

  • Fixing this with the current system somehow (needs reproducing with debug logs).
  • Use ProtocolLib and nms-access to intercept and alter the implicit (non-Bukkit) teleport following cancelling the PlayerMoveEvent. Provided everything is accessible within nms (like last positions stored within entity and PlayerConnection), this would make the set back immediate like before, just better, because the PlayerMoveEvent is
@asofold
asofold / gist:fca67703e19ef7490db266bdfa41ea9e
Created April 23, 2016 22:50
set-back-loop-1.9.2-boat.txt
16-04-23 17:50:24 [FEIN] [MOVING_VEHICLE] [boolean_isOp] VEHICLE MOVE in world world:
from: 88.12680693157938, 62.52326431274414, 593.5206034286755
to: 88.12680693157938, 62.52326431274414, 593.1216991020526
Vehicle: 88.12680693157938, 62.52326431274414, 593.1216991020526
Player: 88.12680693157938, 62.07326432466507, 593.5206034286755
Vehicle type: BOAT
fake=false
16-04-23 17:50:24 [FEIN] [NET] [boolean_isOp] Flying(ground=false,pitch=-4.949995,yaw=-184.75964)
16-04-23 17:50:24 [FEIN] [MOVING_VEHICLE] [boolean_isOp] VEHICLE MOVE in world world:
from: 88.12680693157938, 62.52326431274414, 593.1216991020526
@asofold
asofold / gist:6622498
Last active December 23, 2015 10:39
Examples generic data fetching.
package at.nocheat.examples;
/**
* Examples for accessing data with a central storage (not complete, not 100%
* correct). This object actually might be the general PlayerData object to be
* obtained from the actual DataBroker, we leave out Player/name arguments to
* leave that open.
*
* I am using CheckType to confine the data types, there could be other types of
* data stored, so one might name methods differently (getCheckData).