Показать изменения
## Changes in this Build (since previous push)
### Miscellaneous
- Fix teleportAsync detection for old paper and MC versions where method did not exist - *by Axionize* (`7885555`)
- 26.1 support (#2553)
only bukkit platform for now - *by Cyramek* (`a9b91e7`)
- Bump PE for 26.1.2 support - *by Axionize* (`f36f870`)
- Implement fluid count tracker - *by cyramek* (`f9fdfa7`)
- Always use main hand for attack packets - *by cyramek* (`61e9e69`)
- Don't pass null clientVersion so chunk will use server version for mapping's lookup
broken after recent packetevents update that overriden #set method in Chunk_v1_18 - *by cyramek* (`8dc657a`)
- Fix some falses regarding camel sprinting (#2462)
* Fix camel sprinting falses
* Forgot about camel husks
* Obey code style
* Fix respawns
* Obey code style (for real this time)
* Fix SprintG false with camels
* Move camel sprinting state to VehicleData - *by LaserSlime* (`d55f1b7`)
- Load optional workspace.gradle.kts if present - *by Axionize WS1* (`6c3ccb4`)
- Migrate internal firings to GrimAPI 1.3 channel API (#2612) - *by Axionize* (`3664f4d`)
- FastBreak false positive on Vault block (#2610) - *by Tyler* (`794e120`)
- Fire GrimPlayerSetbackEvent alongside GrimTeleportEvent - *by Axionize WS2* (`a86dedf`)
- Bump packetevents to 6953c38 (upstream 2.12.2 merge + obfuscation-safe nbt scan) - *by Axionize WS1* (`7499d10`)
- Pass fluid count in our custom chunk reader - *by cyramek* (`66b3334`)
- Update DynamicConnecting.java (#2617)
Fixes issues on 1.8.9 / Older versions thinking that daylight detectors connect to fences / iron bars
Related: https://github.com/GrimAnticheat/Grim/issues/1856 - *by KotlinList* (`d81d03f`)
- Bump packetevents to 22c9961 (relocateHandlers respects compress/decompress)
fixes #2552 - *by Axionize WS1* (`257bffe`)
- Fix issues with DynamicConnecting.java with client versions (#2618)
tested with 1.8.9, 1.20.4 and ViaVersion on 1.20.4 Server and 1.8.9 Client
related issue: https://github.com/GrimAnticheat/Grim/issues/2148 - *by InetAddress* (`5c46b0a`)
- History rewrite: five backends, session-based, ring-buffer write path + universal config autoupdater (#2622) - *by Axionize* (`578c784`)
- Minor Post code cleanup - *by ManInMyVan* (`053b090`)
- Don't cancel CLOSE_WINDOW in PacketOrderK - *by ManInMyVan* (`fbabbf2`)
- Rename grim.legacy.* @CheckData stable_keys to descriptive names - *by Axionize WS1* (`c233a60`)
- Escape backslashes when emitting double-quoted scalars (#2623) - *by Axionize WS1* (`84bd90d`)
- Fix StackOverflow on isChunkLoaded by routing through ChunkSource (#2568) - *by Axionize WS2* (`c88b494`)
- Kick anyone who sends vv:proxy_details - *by ManInMyVan* (`3021287`)
- Revert "kick anyone who sends vv:proxy_details"
This reverts commit 3021287391de4aee964abe5bcf6c452f72f68a7b. - *by AoElite* (`73f63c1`)
- Fixed Typo in shulker uncertainty logic (#2630) - *by aquip* (`2508a34`)
- Kick anyone who sends vv:proxy_details - *by ManInMyVan* (`e9c918d`)
- Add support for URL timeout customization and reimplement via proxy kicking - *by AoElite* (`fd9e0f8`)
- Add --name / --match / --grep regex filters to /grim history - *by Axionize WS1* (`d591f10`)
- Bump grim-api pin to 1.3.2.0 - *by Axionize WS1* (`2c60aae`)
- Redstone wall torch should use isLit instead of isPowered - *by cyramek* (`21f0c3d`)
- Bump grim-api to 1.3.2.1 - *by Axionize WS2* (`17d4d2f`)
- Check cameraEntity.isSelf() in isTickingReliablyFor - *by ManInMyVan* (`3e5afef`)
- Simplify shulker opening/closing - *by ManInMyVan* (`fc899a3`)
- Min, not max - *by ManInMyVan* (`83a6d98`)
- Happy ghast scale is also clamped - *by ManInMyVan* (`5254190`)
- Remove unused import - *by ManInMyVan* (`145f71c`)
- Fall back to modrinth for changelog range when push payload missing - *by Axionize WS1* (`4c866d0`)
- Small cleanup - *by ManInMyVan* (`5a40a06`)
- Remove unused import - *by ManInMyVan* (`215a1e6`)
- Tweak "UrlTimeout" constant for consistency - *by AoElite* (`addabec`)
- Update DiscordManager webhook regex to support canary and make timeout configurable - *by AoElite* (`99e309f`)
- Check rotations in teleports (#2268) - *by ManInMyVan* (`717829a`)
- Make name and stableKey in CheckData not optional - *by ManInMyVan* (`65d1050`)
- Only check isSprinting when rewarding in sprint checks - *by ManInMyVan* (`c549b19`)
- Use violation setback in SprintA - *by ManInMyVan* (`6953235`)
- Bump grim-api to 1.4.0.0 - *by Axionize* (`cdd490b`)
- Apply block effects for swim-hop vector (#2648)
* apply block effects for swim-hop vector
* adjust swim hop constants - *by Cyramek* (`73c60d0`)
- VersionUtil uses providers.exec for git (config-cache compat) - *by Axionize* (`62b2268`)
- Anchor N:M intervals at N (#2661) - *by Axionize* (`5fa803e`)
- Fire N:M on boundary crossings, not on every flag at the boundary - *by Axionize* (`36675eb`)
- Per-command incident cursor (nextBoundary + executedOnce) - *by Axionize* (`fb4ad7a`)
- Preserve legacy one-shot command semantics - *by Axionize* (`20d68c1`)
- Bump grim-api to 1.5.0.0 - *by Axionize* (`25d10f4`)
- Use routed backend check catalog - *by Axionize* (`29316a7`)
- Repair legacy history check ids - *by Axionize* (`70223cd`)
- Use MySQL reconnecting API build - *by Axionize* (`ff214a4`)
- Run check-id repair asynchronously - *by Axionize* (`e32d091`)
- Small cleanup - *by ManInMyVan* (`fdaf096`)
- Skip onUserLogin when PacketUser is null - *by Axionize* (`2af658c`)
- Backport V3-side parity adds (against 2.0) (#2678) - *by Axionize* (`9b1aa1a`)
- Bump PE: fix Issue #2670 - *by Axionize* (`6252fe6`)
- Allow not having `client-brand.ignored-clients` in config - *by ManInMyVan* (`60d3ecf`)
- Mark utility classes as @UtilityClass - *by ManInMyVan* (`fd9e91d`)
- Make WriteLog$Entry a record - *by ManInMyVan* (`d501dfe`)
- Bump PE: fix #2681 - *by ManInMyVan* (`43db51d`)
- Make player.stuckSpeedMultiplier a Vector3d
also reduce object allocations - *by ManInMyVan* (`8083f42`)
- More object alloc reduction - *by ManInMyVan* (`d939109`)
- Mark ChatD as stable - *by ManInMyVan* (`5869433`)
- More code cleanup - *by ManInMyVan* (`935668a`)
- Mark some listeners as pre-via - *by ManInMyVan* (`ce89791`)
- Reduce memory allocation and exclude annotation processors (#2669)
* ComplexCollisionBox#downCast: Reduce alloc
* ReachInterpolationData#getPossibleLocationCombined: Reduce alloc
* SimpleCollisionBox: Only alloc boxes when needed
SimpleCollisionBox#betweenCornersInDirection: Skip Vector3d alloc
* Materials: Use IdentityHashMap backed Sets to reduce alloc (StateType#hashCode)
* build.gradle.kts: Exclude annotation processor service from shadowJar
* Update common/src/main/java/ac/grim/grimac/utils/collisions/datatypes/ComplexCollisionBox.java
Co-authored-by: ManInMyVan <113963219+ManInMyVan@users.noreply.github.com>
* Remove leftover comments from testing
---------
Co-authored-by: Dieu <info@l4b.org>
Co-authored-by: Techirion <126729304+Techirion@users.noreply.github.com>
Co-authored-by: ManInMyVan <113963219+ManInMyVan@users.noreply.github.com> - *by NO-UUID* (`6152908`)
- Use lombok getter for CompensatedInventory.startOfTickStack - *by ManInMyVan* (`199b673`)
- Don't box if we don't need to - *by ManInMyVan* (`bebccfa`)
- Make chat checks and BadPacketsM pre-via - *by ManInMyVan* (`21f1534`)
- Update startOfTickStack on slot change (#2683) - *by ManInMyVan* (`8c95b21`)
- Bump packetevents to 2.12.2+6dca3cc00 (fabric pre-Via listener fix) - *by Axionize* (`09194f3`)
- Fix PE hash length — CI publishes with 7-char hash - *by Axionize* (`0b7001b`)
- Use getInstance(Class) instead of get(Class) in CheckManager - *by ManInMyVan* (`b62722b`)
- Migrate more checks to pre-via - *by ManInMyVan* (`36931a8`)
- Send a transaction before adding the task to set serverOpenedInventoryThisTick - *by ManInMyVan* (`e62d451`)
- Move CheckManagerListener onPacketSend to pre-via - *by ManInMyVan* (`17b86aa`)
- Default KICK_ON_TRANSACTION_ERRORS to true - *by ManInMyVan* (`490a02b`)
- Pre-load block mappings for server version - *by ManInMyVan* (`cd61780`)
- Make PacketPlayerRespawn pre-via - *by ManInMyVan* (`6ce529c`)
- Support relative PLAYER_ROTATION packets - *by ManInMyVan* (`6ff7f44`)
- Revert "make PacketPlayerRespawn pre-via"
This reverts commit 6ce529c83de82eee53425a5b081c03115c181e04. - *by ManInMyVan* (`48b778e`)
- Load local Gradle user properties - *by Axionize* (`9888990`)
- Support Minecraft 26.X on official mappings (#2695) - *by Axionize* (`4642c3d`)
- Update PacketEvents pin - *by Axionize* (`6b710c0`)
- Backport public V2 datastore wiring - *by Axionize* (`4de186b`)
- Compensate attack range swaps for movement (#7)
* Compensate attack range swaps for movement
* Restrict attack range movement compensation to swaps
* Keep attack range item values as floats
* Fix attack_range swap reach compensation
* Add Reach verbose for attack range movement - *by Axionize* (`f61d522`)
- Rewrite how input is handled between versions (#2700)
we're E-15 on average across all supported versions - *by Cyramek* (`86785db`)
- Change default server-name from "Prison" to "ChangeMe"
Replaces the leftover "Prison" placeholder used for the /grim history
header and database config with a neutral "ChangeMe" default that
prompts operators to set their own server name. - *by Axionize* (`41b0fff`)
- Handle missing datastore routes - *by Axionize* (`3404e9b`)
- Use GrimAPI 1.6.0.2 - *by Axionize* (`6b28271`)
- Fix Fabric 1.21.11 cloud command bridge - *by Axionize* (`19dde8b`)
- Use GrimAPI 1.6.0.3 - *by Axionize* (`e7fedff`)
- Adopt binary verbose for BadPacketsR
Wire the public verbose registry/manifest foundation and add a binary flag path that writes ViolationEvent.verboseData. Convert BadPacketsR because its verbose payload is three simple numeric fields: elapsed player-clock ms, last transaction delta ms, and position packet count. - *by Axionize WS2* (`e19cb38`)
- Fix verbose binary metadata nits - *by Axionize WS2* (`417a212`)
- Convert flight checks to binary verbose - *by Axionize WS2* (`deed028`)
- Make verboseVersion unsigned on consumer side - *by Axionize WS2* (`e684ec7`)
- Convert reach verbose to binary f32
Store Simulation offset as f32 without flagId. Store Reach min distance through the binary verbose path while preserving the existing alert text; Hitboxes remains on text verbose for now. - *by Axionize WS2* (`f63a216`)
- Update binary verbose precision and formatters
Use f64 for Reach and Simulation numeric payloads, add Reach entity type IDs encoded for the player's client version, and register old-string custom formatters for Reach, Simulation, and GroundSpoof.
BadPacketsR had no pre-conversion verbose string in the converted check, so it remains on the generic name=value reader. - *by Axionize WS2* (`01d19bd`)
- Convert badpackets verbose to binary
Converted: BadPacketsA, BadPacketsD, BadPacketsE, BadPacketsF, BadPacketsG, BadPacketsH, BadPacketsL, BadPacketsO, BadPacketsP, BadPacketsQ, BadPacketsT, BadPacketsU, BadPacketsV, BadPacketsY.
Already binary, moved into package registration: BadPacketsR.
Skipped empty/no verbose: BadPacketsB, BadPacketsC, BadPacketsI, BadPacketsJ, BadPacketsK, BadPacketsM, BadPacketsN, BadPacketsS, BadPacketsW, BadPacketsX, BadPacketsZ.
badpackets2: package absent in this checkout.
Verification: ./gradlew :Grim-public:common:compileJava :Grim-public:bukkit:compileJava --console=plain - *by Axionize WS2* (`e422749`)
- Convert breaking and crash verbose to binary
Converted breaking: AirLiquidBreak, FarBreak, FastBreak, InvalidBreak, MultiBreak, PositionBreakA, PositionBreakB, RotationBreak, WrongBreak.
Skipped breaking: NoSwingBreak (no/empty verbose).
Converted crash: CrashC, CrashD, CrashE, CrashF, CrashH, CrashI.
Skipped crash: CrashA, CrashB, CrashG (no/empty verbose). - *by Axionize WS2* (`751011f`)
- Preserve exact flag/alert/setback semantics for binary verbose checks - *by Axionize WS2* (`7ba8470`)
- Convert wave B verbose checks to binary
Converted:\n- scaffolding: DuplicateRotPlace, FabricatedPlace, InvalidPlaceB, MultiPlace, RotationPlace\n- multiactions: MultiActionsC, MultiActionsD, MultiActionsF, MultiActionsG\n- chat: ChatB, ChatC\n- combat: MultiInteractA, MultiInteractB\n\nSkipped:\n- scaffolding: AirLiquidPlace, FarPlace, InvalidPlaceA, PositionPlace (empty verbose)\n- multiactions: MultiActionsA, MultiActionsB, MultiActionsE (empty verbose)\n- chat: ChatA, ChatD (empty or blank verbose)\n- combat: Hitboxes, SelfInteract (empty verbose), Reach (already converted/registered) - *by Axionize WS2* (`01ef829`)
- Convert wave C verbose to binary
Converted:
- vehicle: VehicleA, VehicleD, VehicleE, VehicleF
- velocity: KnockbackHandler/AntiKB, ExplosionHandler/AntiExplosion
- timer: NegativeTimer, TickTimer
- exploit: ExploitA, ExploitB
- sprint: SprintA
- misc: Post
- elytra: ElytraB
Skipped unchanged:
- vehicle: VehicleB, VehicleC
- velocity: VectorPrecisionConverter
- timer: Timer, TimerLimit, VehicleTimer
- sprint: SprintB, SprintC, SprintD, SprintE, SprintF, SprintG
- misc: ClientBrand, GhostBlockMitigation, TransactionOrder
- elytra: ElytraA, ElytraC, ElytraD, ElytraE, ElytraF, ElytraG, ElytraH, ElytraI - *by Axionize WS2* (`5f4b923`)
- Convert missed verbose packages to binary
Converted: baritone/Baritone; packetorder/PacketOrderB, PacketOrderC, PacketOrderD, PacketOrderE, PacketOrderF, PacketOrderG, PacketOrderI, PacketOrderK, PacketOrderL, PacketOrderO, PacketOrderP.
Skipped: packetorder/PacketOrderA, PacketOrderH, PacketOrderJ, PacketOrderM, PacketOrderN, and PacketOrderProcessor because they only use empty/no verbose.
Build: ./gradlew :Grim-public:common:compileJava :Grim-public:bukkit:compileJava -PmavenLocalOverride=true --console=plain - *by Axionize WS2* (`e7f2ed2`)
- Render binary verbose lazily on alerts - *by Axionize WS2* (`05c6eda`)
- Use compact verbose encodings for object values - *by Axionize* (`2a5685a`)
- Restore BadPacketsR verbose formatter parity - *by Axionize WS2* (`5eb67c3`)
- Merge verbose binary consumer - *by Axionize WS2* (`182c82e`)
- Integrate structured verbose templates - *by Axionize WS2* (`8e39093`)
- Add stdnum render tag - *by Axionize WS2* (`67aa3a9`)
- Move SprintA to post-prediction checks - *by cyramek* (`e37b7e3`)
- Implement 26.2 - *by cyramek* (`1d52bda`)
- Merge branch '2.0' into ver/26.2 - *by Cyramek* (`c96667c`)
- Viaversion replacements and cloud commands - *by cyramek* (`ae11730`)
- Update versions in various places - *by cyramek* (`735550d`)
- Support entities boundingbox changes
this class needs to be registry'fied if they gonna change boundingboxes in every version - *by cyramek* (`4bce83e`)
- Minor fixes - *by cyramek* (`1250a40`)
- Merge 26.2 support - *by Axionize WS2* (`d9bade6`)
- Merge 26.2 support and update PacketEvents - *by Axionize WS2* (`52f8721`)
- Use published PacketEvents snapshot - *by Axionize WS2* (`c40dfad`)
- Skip Fabric publish when artifact is absent - *by Axionize WS2* (`12449c4`)
- Support for 26.2 (#2729) - *by Cyramek* (`732b9e0`)
- Support Fabric 26.2 - *by Axionize WS2* (`784c46d`)
- Add optional client version section to bug issue template - *by ManInMyVan* (`4d28b14`)
- Add client & server version placeholders to issue templates - *by ManInMyVan* (`cd0986b`)
- Small cleanup - *by ManInMyVan* (`f65930b`)
- Backport storage ownership leases - *by Axionize WS2* (`79d54e3`)
- Merge pull request #2760 from GrimAnticheat/codex/server-ownership-leases-2.0
Backport storage ownership leases - *by Axionize* (`573a1d2`)
- Merge upstream/2.0 into lightning - *by Axionize WS2* (`0c3ed12`)
- Backfill Lightning combat punishments - *by Axionize WS2* (`00dbb86`)
### ♻️ Refactoring
- Nest variants as :fabric:{shared,intermediary,official} - *by Axionize* (`dde41ad`)
### 🐛 Fixes
- Fix bouncy blocks (#2473) - *by Cyramek* (`19c12b7`)
- Fix typo in MultiActionsC - *by ManInMyVan* (`8861589`)
- Fix page length check (#2637) - *by Captain-S0L0* (`f81e183`)
- Fix shulker & dragon scale attrubute - *by ManInMyVan* (`3d95fea`)
- Fix 1.9 client noslow on 1.8 servers (#2607)
* fix 1.9 client noslow on 1.8 servers
* fix metadata ids - *by ManInMyVan* (`5c6de64`)
- Fix 1.21.11 spigot support - *by ManInMyVan* (`7d823f5`)
- Fix swim hops while riding an entity that can float on water - *by cyramek* (`ce86075`)
- Fix 1.21.11 trigonometry (#2644)
new trig lookup table just dropped - *by Cyramek* (`494e9c5`)
- Fix 26.1 spigot support - *by ManInMyVan* (`7ccff01`)
- Fix BadPacketsM falses - *by ManInMyVan* (`3cd17cc`)
- Fix golden dandelion in a flower pot collision - *by cyramek* (`02f1dc3`)
- Fix entity boundingbox replication regression (#2642)
* fix entity boundingbox replication regression
* check if tick end event exists - *by Cyramek* (`8a3767b`)
- Fix compensatedCamera with respawn packets - *by ManInMyVan* (`7a7e07f`)
- Fix recent vialegacy update causing falses - *by ManInMyVan* (`c156c00`)
- Fix precision loss while swimming in a flowing fluid (#2668)
we're in E-15 now on average - *by Cyramek* (`f3ed3b2`)
- Fix 1.8 wither skeleton hitbox - *by ManInMyVan* (`fdd734a`)
- Fix #2677 - *by ManInMyVan* (`34c41db`)
- Fix precision loss in <=1.19.3 - *by cyramek* (`635708a`)
- Fix 1.21.11 clients flagging reach on 1.8 servers - *by ManInMyVan* (`edc3987`)
- Fix NPE while getting preViaPacketChecks
fix: https://github.com/GrimAnticheat/Grim/issues/2685 - *by cyramek* (`ec08cbe`)
- Fix head hitting while slow falling
gravity is calculated based on deltaMovement, not actualMovement
fix: https://github.com/GrimAnticheat/Grim/issues/2687 - *by cyramek* (`7e1607d`)
- Fix precision loss for <=1.18.1 - *by cyramek* (`4a632c1`)
- Fix input precision loss in <=1.16.5 - *by cyramek* (`10cc198`)
- Check if the block position is valid before getting it, fixes #2689 - *by ManInMyVan* (`d34f5c1`)
- Fix NPE on world change - *by ManInMyVan* (`406d6e7`)
- Fix #2693 - *by ManInMyVan* (`d2e47fd`)
- Fix packetevents commit - *by ManInMyVan* (`5e60273`)
- Exclude adventure-text-serializer-gson from minimize() - *by Axionize* (`ac892c5`)
- False in MultiActionsD while opening your inventory in a nether portal frame (#2702) - *by Bram* (`b2b2503`)
- Handle missing PacketEvents channel in UUID lookup (#9) - *by Axionize* (`2ea1d99`)
- Bind PacketContext around item encoding for Polymer 0.16+ (#2701) (#2705) - *by Axionize* (`5f19722`)
- Fix NPE when player is riding entity that he is not in control of
idk how to reproduce it because it shouldn't happen, but I guess transaction splits between entity equipment updates happen - *by cyramek* (`4f747c3`)
- Fix precision loss while gliding
E-8 -> E-15 - *by cyramek* (`c83870b`)
- Fix fastbreak using outdated onGround status (#2657)
* make sure that we're using latest onGround in FastBreak
* things pointed out in a review - *by Cyramek* (`ba1a930`)
- Fix swim hops with geysers - *by cyramek* (`eba3cb8`)
- Fix client velocity being affected by collisions
this was the cause why slime collisions were off by E-8
this can also be the cause of many false positives that are seemingly random - *by cyramek* (`d2727a4`)
- Fix formatting issues - *by cyramek* (`02654ce`)
### 🚀 Features
- Add Fabric piston event support (#2619) - *by aquip* (`75cc402`)
- Refresh permissions from LuckPerms updates - *by Axionize* (`b3a7496`)
- Add hover tooltips to check alerts & descriptions to every check (#2712) - *by Mater* (`1f1b03c`)
- Make render hovers configurable - *by Axionize* (`0aa2e2b`)