Commit Graph
27 Commits
Author SHA1 Message Date
stonar96andNassim Jahnke 002b02c273 Move anti xray classes to source 2024-12-16 15:04:45 +01:00
stonar96 47415b7efd [ci skip] Fix xray patch code style (#8196) 2022-07-28 10:30:32 +02:00
stonar96 b4e9e20e79 1.19 Anti-Xray cleanup (#8104) 2022-07-18 12:30:31 +02:00
stonar96 df42b6f60c Optimize HashMapPalette (#5074)
HashMapPalette uses an instance of CrudeIncrementalIntIdentityHashBiMap
internally. A Palette has a preset maximum size = 1 << bits.
CrudeIncrementalIntIdentityHashBiMap has an initial size but is
automatically resized. The CrudeIncrementalIntIdentityHashBiMap is created
with the maximum size in the constructor of HashMapPalette, with the aim
that it doesn't need to be resized anymore. However, there are two things
that I think Mojang hasn't considered here:
1) The CrudeIncrementalIntIdentityHashBiMap is resized, when its initial
size is reached and not the next time, when a further object is added.
2) HashMapPalette adds objects (unnecessarily) before checking if the
initial size of CrudeIncrementalIntIdentityHashBiMap is reached.
This means to actually avoid resize operations in
CrudeIncrementalIntIdentityHashBiMap, one has to add 2 to the initial size
or add 1 and check the size before adding objects. This commit implements
the second approach. Note that this isn't only an optimization but also
makes async reads of Palettes fail-safe. An async read while the
CrudeIncrementalIntIdentityHashBiMap is resized is fatal and can even lead
to corrupted data. This is also something that Anti-Xray is currently
relying on.
2021-12-04 15:56:34 +01:00
stonar96 0f6ca558f1 Port Anti-Xray to 1.18 (#6947) 2021-11-29 12:55:13 +01:00
stonar96andJason Penilla f024b4b48a Fix command suggestion leak (#6592)
Co-authored-by: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
2021-10-21 11:15:18 +02:00
stonar96 c7e9c0260f Optimize Anti-Xray (#5991) 2021-06-29 11:01:47 +02:00
stonar96 c00618d009 Refactor Anti-Xray and make some fixes to it (#5938) 2021-06-23 10:39:02 +02:00
stonar96 797fc746d0 Replace all block states of a specified block (#5055)
Up to now Anti-Xray did only replace blocks that have the default block
state of the specified blocks in hidden-blocks (engine-mode: 1) or
hidden-blocks and replacement-blocks (engine-mode: 2). Therefore it wasn't
possible to replace for example chests facing south because chest refers to
the default block state facing north. Supporting block states in these lists
is overkill. Instead this commit makes Anti-Xray to replace all block states
of a specified block. However, Anti-Xray will still place the default block
states.
2021-03-16 01:40:57 +01:00
stonar96 0367dabcb2 Add Anti-Xray bypass permission
This is a frequently requested feature. The permission is
'paper.antixray.bypass'.
2020-08-07 08:11:56 +02:00
stonar96 2760588808 Preserve order and allow multiple equal blocks in hidden-blocks of Anti-Xray (#4072)
* Preserve order of hidden-blocks in Anti-Xray

This small change allows to specify and predict the order in which
Anti-Xray uses the hidden-blocks in engine-mode 2. The order is
preserved as specified in the hidden-blocks list. This can be useful,
for example, when adding air to the hidden-blocks to predict which fake
ores should be exposed to fake air.

* Allow to add equal blocks multiple times to hidden-blocks

This adds the ability to add equal blocks multiple times to the
hidden-blocks of Anti-Xray in engine-mode 2. Thus it is possible to give
certain blocks different priorities in Anti-Xray. For example if air and
diamond_ore are added twice, the obfuscated chunk will contain twice as
many air and diamond_ore blocks as other blocks in the list.
2020-11-24 17:59:04 +01:00
stonar96 970735ca15 Fix slime block in Anti-Xray 2020-10-17 04:19:09 +02:00
stonar96 16d779960b Anti Xray: Obfuscate blocks touching lava feature (#3311) 2020-10-16 23:08:33 +02:00
stonar96 c348e498ba Make engine-mode 2 truly random
Up to now a simple counter variable was used to iterate through the
hidden-blocks in engine-mode 2 while obfuscating. This results in low
quality obfuscation.

One could for example easily write a hack, which bypasses Anti-Xray
by not showing ores, which have a certain pattern.

Furthermore, engine-mode 1 is slightly optimized by this commit.
However, engine-mode 2 is probably somewhat slower. I did some tests but
I wasn't able to get stable results for some reason. Therefore this
needs further testing.

An optimized random algorithm is utilized to pick random blocks from the
hidden-blocks list. This implementation uses xorshift and integer
multiplication for bounding. The resulting distribution is negligibly
biased because xorshift doesn't generate 0 and integer multiplication
also implies biased results.
2020-08-07 04:26:01 +02:00
stonar96 8088a42029 Fix Anti-Xray 2020-06-27 04:27:03 +02:00
stonar96andAikar 65154f7929 Make Anti-Xray multithreaded (#3520)
Obfuscate multiple chunks at a time over the server thread pool.

Will speed up chunk processing when anti xray is enabled.

Co-authored-by: Aikar <aikar@aikar.co>
2020-06-09 10:12:20 +02:00
stonar96 71ac6d7e6a Optimize HashMapPalette
HashMapPalette uses an instance of CrudeIncrementalIntIdentityHashBiMap
internally. A Palette has a preset maximum size = 1 << bits.
CrudeIncrementalIntIdentityHashBiMap has an initial size but is
automatically resized. The CrudeIncrementalIntIdentityHashBiMap is created
with the maximum size in the constructor of HashMapPalette, with the aim
that it doesn't need to be resized anymore. However, there are two things
that I think Mojang hasn't considered here:
1) The CrudeIncrementalIntIdentityHashBiMap is resized, when its initial
size is reached and not the next time, when a further object is added.
2) HashMapPalette adds objects (unnecessarily) before checking if the
initial size of CrudeIncrementalIntIdentityHashBiMap is reached.
This means to actually avoid resize operations in
CrudeIncrementalIntIdentityHashBiMap, one has to add 2 to the initial size
or add 1 and check the size before adding objects. This commit implements
the second approach. Note that this isn't only an optimization but also
makes async reads of Palettes fail-safe. An async read while the
CrudeIncrementalIntIdentityHashBiMap is resized is fatal and can even lead
to corrupted data. This is also something that Anti-Xray is currently
relying on.
2021-01-17 01:11:36 +01:00
stonar96 740e6b1eed Don't respond to ServerboundCommandSuggestionPacket when tab-complete is disabled 2021-09-12 00:14:21 +02:00
stonar96 62607d2c90 Check requirement before suggesting root nodes
Child nodes are handled by CommandDispatcher#parse checking
requirements.

Vanilla clients only send ServerboundCommandSuggestionPacket when
encountering a command node with ASK_SERVER suggestions, however a
modified client can send this packet whenever it wants.
2021-09-12 00:14:21 +02:00
stonar96 c5bb0ccf0a Fix ./paper edit continue for Windows 2020-05-20 04:10:29 +02:00
stonar96 2f66bb72fc Fix path in CONTRIBUTING.md (#3406) 2020-05-20 05:08:37 +02:00
stonar96 30d007b163 Anti Xray cleanup
Undo the accidental renaming of a method in e45e15c
Aikar wanted to rename DataPalette#getDataBits(T object) to getOrCreateIdFor
in e45e15c but he also accidentally renamed
ChunkPacketInfo#getDataBitsIndex(int chunkSectionIndex) to
getOrCreateIdForIndex.

Remove chunk-edge-mode and chunk loading entirely from Anti-Xray
The chunk-edge-mode is broken since several versions.
Loading chunk neighbors for chunk edge obfuscation isn't needed anymore.
Unlike in previous versions, these are under normal circumstances already loaded
at the time we need them (plugins for example can bypass this).

Use the modified methods and constructors everywhere
Anti-Xray provides support for the default nms methods and constructors,
which where modified by Anti-Xray to avoid breaking stuff (plugins)
which somehow uses these methods.
However, the modified versions of those methods and constructors should be used
where possible.
2020-05-06 04:35:20 -04:00
stonar96 eb26c054f7 1.13: Readd Anti-Xray (#1366)
* Decompile fixes for ProtoChunk and DataPaletteBlock

* Do changes

* final change

* more changes

* First Anti-Xray build

* Fixes and cleanups

* Cleanups and renamings

* Cleanups renamings and move OBFHELPERs to 0004-MC-Utils.patch

* Implement obfuscation for newly generated chunks

* Implement chunk edge mode

* Implement block updates

* Cleanups

* Rebuild patches
2018-08-26 04:37:58 +02:00
stonar96 165dddda84 Fix Anti-Xray ConcurrentModificationException 2018-04-30 15:21:07 +02:00
stonar96 e2b2332062 Make Anti-Xray Update Radius configurable (#1094) 2018-04-22 16:45:56 +02:00
stonar96 fb92e490ad [CI-SKIP] Add stonar96 to MIT list (#1086) 2018-04-17 00:28:52 +02:00
stonar96 3a9f17bc4b Anti Xray v2 (#858) 2017-10-05 14:38:21 +01:00